if (UtilValidate.isNotEmpty(fixedAssetId)) {
entityExprList.add(EntityCondition.makeCondition("fixedAssetId", EntityOperator.EQUALS, fixedAssetId));
}
// should have at least a start date
EntityCondition startDateRequired = EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("estimatedStartDate", EntityOperator.NOT_EQUAL, null),
EntityCondition.makeCondition("actualStartDate", EntityOperator.NOT_EQUAL, null)
), EntityJoinOperator.OR);
List<EntityCondition> periodCheckAndlList = UtilMisc.<EntityCondition>toList(
startDateRequired,
// the startdate should be less than the period end
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("actualStartDate", EntityOperator.EQUALS, null),
EntityCondition.makeCondition("estimatedStartDate", EntityOperator.NOT_EQUAL, null),
EntityCondition.makeCondition("estimatedStartDate", EntityOperator.LESS_THAN_EQUAL_TO, endStamp)
), EntityJoinOperator.AND),
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("actualStartDate", EntityOperator.NOT_EQUAL, null),
EntityCondition.makeCondition("actualStartDate", EntityOperator.LESS_THAN_EQUAL_TO, endStamp)
), EntityJoinOperator.AND)
), EntityJoinOperator.OR),
// if the completion date is not null then it should be larger than the period start
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
// can also be empty
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("estimatedCompletionDate", EntityOperator.EQUALS, null),
EntityCondition.makeCondition("actualCompletionDate", EntityOperator.EQUALS, null)
), EntityJoinOperator.AND),
// check estimated value if the actual is not provided
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("actualCompletionDate", EntityOperator.EQUALS, null),
EntityCondition.makeCondition("estimatedCompletionDate", EntityOperator.NOT_EQUAL, null),
EntityCondition.makeCondition("estimatedCompletionDate", EntityOperator.GREATER_THAN_EQUAL_TO, startStamp)
), EntityJoinOperator.AND),
// at last check the actual value
EntityCondition.makeCondition(UtilMisc.<EntityCondition>toList(
EntityCondition.makeCondition("actualCompletionDate", EntityOperator.NOT_EQUAL, null),
EntityCondition.makeCondition("actualCompletionDate", EntityOperator.GREATER_THAN_EQUAL_TO, startStamp)
), EntityJoinOperator.AND)
), EntityJoinOperator.OR));
entityExprList.addAll(periodCheckAndlList);
// (non cancelled) recurring events
List<EntityCondition> recurringEvents = UtilMisc.<EntityCondition>toList(EntityCondition.makeCondition("tempExprId", EntityOperator.NOT_EQUAL, null));
if (filterOutCanceledEvents.booleanValue()) {
recurringEvents.addAll(cancelledCheckAndList);
}
EntityCondition eclTotal = EntityCondition.makeCondition(UtilMisc.toList(
EntityCondition.makeCondition(entityExprList, EntityJoinOperator.AND),
EntityCondition.makeCondition(recurringEvents, EntityJoinOperator.AND)
), EntityJoinOperator.OR);
List<String> orderByList = UtilMisc.toList("estimatedStartDate");