bug 5412: Use same search criteria for listing pending events instead of creating a new one

status 5412: resolved fixed
reviewed-by: Nitin
This commit is contained in:
kishan 2011-12-23 17:37:59 +05:30
parent 5d00edb31b
commit 51d77c259d
4 changed files with 30 additions and 49 deletions

View File

@ -31,7 +31,5 @@ public interface EventDao extends GenericDao<EventVO, Long> {
public List<EventVO> listOlderEvents(Date oldTime); public List<EventVO> listOlderEvents(Date oldTime);
List<EventVO> listStartedEvents(Date minTime, Date maxTime);
EventVO findCompletedEvent(long startId); EventVO findCompletedEvent(long startId);
} }

View File

@ -35,16 +35,9 @@ import com.cloud.utils.db.SearchCriteria;
@Local(value={EventDao.class}) @Local(value={EventDao.class})
public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements EventDao { public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements EventDao {
public static final Logger s_logger = Logger.getLogger(EventDaoImpl.class.getName()); public static final Logger s_logger = Logger.getLogger(EventDaoImpl.class.getName());
protected final SearchBuilder<EventVO> StartedEventsSearch;
protected final SearchBuilder<EventVO> CompletedEventSearch; protected final SearchBuilder<EventVO> CompletedEventSearch;
public EventDaoImpl () { public EventDaoImpl () {
StartedEventsSearch = createSearchBuilder();
StartedEventsSearch.and("state",StartedEventsSearch.entity().getState(),SearchCriteria.Op.NEQ);
StartedEventsSearch.and("startId", StartedEventsSearch.entity().getStartId(), SearchCriteria.Op.EQ);
StartedEventsSearch.and("createDate", StartedEventsSearch.entity().getCreateDate(), SearchCriteria.Op.BETWEEN);
StartedEventsSearch.done();
CompletedEventSearch = createSearchBuilder(); CompletedEventSearch = createSearchBuilder();
CompletedEventSearch.and("state",CompletedEventSearch.entity().getState(),SearchCriteria.Op.EQ); CompletedEventSearch.and("state",CompletedEventSearch.entity().getState(),SearchCriteria.Op.EQ);
CompletedEventSearch.and("startId", CompletedEventSearch.entity().getStartId(), SearchCriteria.Op.EQ); CompletedEventSearch.and("startId", CompletedEventSearch.entity().getStartId(), SearchCriteria.Op.EQ);
@ -65,16 +58,6 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
} }
@Override
public List<EventVO> listStartedEvents(Date minTime, Date maxTime) {
if (minTime == null || maxTime == null) return null;
SearchCriteria<EventVO> sc = StartedEventsSearch.create();
sc.setParameters("state", State.Completed);
sc.setParameters("startId", 0);
sc.setParameters("createDate", minTime, maxTime);
return listIncludingRemovedBy(sc, null);
}
@Override @Override
public EventVO findCompletedEvent(long startId) { public EventVO findCompletedEvent(long startId) {
SearchCriteria<EventVO> sc = CompletedEventSearch.create(); SearchCriteria<EventVO> sc = CompletedEventSearch.create();

View File

@ -78,8 +78,6 @@ public interface ManagementServer extends ManagementService {
*/ */
List<EventVO> getEvents(long userId, long accountId, Long domainId, String type, String level, Date startDate, Date endDate); List<EventVO> getEvents(long userId, long accountId, Long domainId, String type, String level, Date startDate, Date endDate);
List<EventVO> listPendingEvents(int entryTime, int duration);
//FIXME - move all console proxy related commands to corresponding managers //FIXME - move all console proxy related commands to corresponding managers
ConsoleProxyInfo getConsoleProxyForVm(long dataCenterId, long userVmId); ConsoleProxyInfo getConsoleProxyForVm(long dataCenterId, long userVmId);

View File

@ -1500,13 +1500,6 @@ public class ManagementServerImpl implements ManagementServer {
Integer entryTime = cmd.getEntryTime(); Integer entryTime = cmd.getEntryTime();
Integer duration = cmd.getDuration(); Integer duration = cmd.getDuration();
if ((entryTime != null) && (duration != null)) {
if (entryTime <= duration) {
throw new InvalidParameterValueException("Entry time must be greater than duration");
}
return listPendingEvents(entryTime, duration);
}
SearchBuilder<EventVO> sb = _eventDao.createSearchBuilder(); SearchBuilder<EventVO> sb = _eventDao.createSearchBuilder();
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
sb.and("levelL", sb.entity().getLevel(), SearchCriteria.Op.LIKE); sb.and("levelL", sb.entity().getLevel(), SearchCriteria.Op.LIKE);
@ -1519,6 +1512,9 @@ public class ManagementServerImpl implements ManagementServer {
sb.and("createDateG", sb.entity().getCreateDate(), SearchCriteria.Op.GTEQ); sb.and("createDateG", sb.entity().getCreateDate(), SearchCriteria.Op.GTEQ);
sb.and("createDateL", sb.entity().getCreateDate(), SearchCriteria.Op.LTEQ); sb.and("createDateL", sb.entity().getCreateDate(), SearchCriteria.Op.LTEQ);
sb.and("accountType", sb.entity().getAccountType(), SearchCriteria.Op.NEQ); sb.and("accountType", sb.entity().getAccountType(), SearchCriteria.Op.NEQ);
sb.and("state", sb.entity().getState(),SearchCriteria.Op.NEQ);
sb.and("startId", sb.entity().getStartId(), SearchCriteria.Op.EQ);
sb.and("createDate", sb.entity().getCreateDate(), SearchCriteria.Op.BETWEEN);
if (isAdmin && permittedAccounts.isEmpty() && domainId != null) { if (isAdmin && permittedAccounts.isEmpty() && domainId != null) {
// if accountId isn't specified, we can do a domain match for the admin case // if accountId isn't specified, we can do a domain match for the admin case
@ -1565,8 +1561,33 @@ public class ManagementServerImpl implements ManagementServer {
} else if (endDate != null) { } else if (endDate != null) {
sc.setParameters("createDateL", endDate); sc.setParameters("createDateL", endDate);
} }
return _eventDao.searchAllEvents(sc, searchFilter); if ((entryTime != null) && (duration != null)) {
if (entryTime <= duration) {
throw new InvalidParameterValueException("Entry time must be greater than duration");
}
Calendar calMin = Calendar.getInstance();
Calendar calMax = Calendar.getInstance();
calMin.add(Calendar.SECOND, -entryTime);
calMax.add(Calendar.SECOND, -duration);
Date minTime = calMin.getTime();
Date maxTime = calMax.getTime();
sc.setParameters("state", com.cloud.event.Event.State.Completed);
sc.setParameters("startId", 0);
sc.setParameters("createDate", minTime, maxTime);
List<EventVO> startedEvents = _eventDao.searchAllEvents(sc, searchFilter);
List<EventVO> pendingEvents = new ArrayList<EventVO>();
for (EventVO event : startedEvents) {
EventVO completedEvent = _eventDao.findCompletedEvent(event.getId());
if (completedEvent == null) {
pendingEvents.add(event);
}
}
return _eventDao.searchAllEvents(sc, searchFilter);
} else {
return _eventDao.searchAllEvents(sc, searchFilter);
}
} }
@ -3072,25 +3093,6 @@ public class ManagementServerImpl implements ManagementServer {
return cloudParams; return cloudParams;
} }
@Override
public List<EventVO> listPendingEvents(int entryTime, int duration) {
Calendar calMin = Calendar.getInstance();
Calendar calMax = Calendar.getInstance();
calMin.add(Calendar.SECOND, -entryTime);
calMax.add(Calendar.SECOND, -duration);
Date minTime = calMin.getTime();
Date maxTime = calMax.getTime();
List<EventVO> startedEvents = _eventDao.listStartedEvents(minTime, maxTime);
List<EventVO> pendingEvents = new ArrayList<EventVO>();
for (EventVO event : startedEvents) {
EventVO completedEvent = _eventDao.findCompletedEvent(event.getId());
if (completedEvent == null) {
pendingEvents.add(event);
}
}
return pendingEvents;
}
@Override @Override
public Map<String, Object> listCapabilities(ListCapabilitiesCmd cmd) { public Map<String, Object> listCapabilities(ListCapabilitiesCmd cmd) {
Map<String, Object> capabilities = new HashMap<String, Object>(); Map<String, Object> capabilities = new HashMap<String, Object>();