Bug #1343: Rewrite part of the code for company view initialization.

These changes ease the fixes for the bug.

FEA: ItEr76S04BugFixing
This commit is contained in:
Jacobo Aragunde Pérez 2012-02-02 19:23:41 +01:00
parent e740a2a9bf
commit 64f5d2665b
3 changed files with 30 additions and 9 deletions

View file

@ -286,7 +286,7 @@ public class CompanyPlanningController implements Composer {
Boolean includeOrderElements = checkIncludeOrderElements.isChecked();
if (listFilters.isEmpty() && startDate == null && finishDate == null) {
return null;
return model.getDefaultPredicate(includeOrderElements);
}
return new TaskGroupPredicate(listFilters, startDate, finishDate,
includeOrderElements);

View file

@ -65,6 +65,7 @@ import org.libreplan.business.users.daos.IUserDAO;
import org.libreplan.business.users.entities.User;
import org.libreplan.business.workreports.entities.WorkReportLine;
import org.libreplan.web.planner.TaskElementAdapter;
import org.libreplan.web.planner.TaskGroupPredicate;
import org.libreplan.web.planner.chart.Chart;
import org.libreplan.web.planner.chart.EarnedValueChartFiller;
import org.libreplan.web.planner.chart.EarnedValueChartFiller.EarnedValueType;
@ -673,7 +674,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
private List<TaskElement> retainOnlyTopLevel(IPredicate predicate) {
List<TaskElement> result = new ArrayList<TaskElement>();
User user;
List<Order> ordersToShow = new ArrayList<Order>();
try {
user = userDAO.findByLoginName(SecurityUtils.getSessionUserLoginName());
@ -695,7 +695,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
.accepts(associatedTaskElement))) {
associatedTaskElement.setSimplifiedAssignedStatusCalculationEnabled(true);
result.add(associatedTaskElement);
ordersToShow.add(order);
}
}
Collections.sort(result,new Comparator<TaskElement>(){
@ -704,24 +703,44 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
return arg0.getStartDate().compareTo(arg1.getStartDate());
}
});
setDefaultFilterValues(ordersToShow);
return result;
}
private void setDefaultFilterValues(List<? extends Order> list) {
@Override
public IPredicate getDefaultPredicate(Boolean includeOrderElements) {
User user;
if (currentScenario == null) {
currentScenario = scenarioManager.getCurrent();
}
try {
user = userDAO.findByLoginName(SecurityUtils.getSessionUserLoginName());
}
catch(InstanceNotFoundException e) {
//this case shouldn't happen, because it would mean that there isn't a logged user
//anyway, if it happened we return an empty list
return null;
}
List<Order> list = orderDAO.getOrdersByReadAuthorizationByScenario(
user, currentScenario);
Date startDate = null;
Date endDate = null;
for (Order each : list) {
each.useSchedulingDataFor(currentScenario, false);
TaskGroup associatedTaskElement = each.getAssociatedTaskElement();
startDate = Collections.min(notNull(startDate, each.getInitDate(),
associatedTaskElement.getStartDate()));
endDate = Collections.max(notNull(endDate, each.getDeadline(),
associatedTaskElement.getEndDate()));
if (associatedTaskElement != null
&& STATUS_VISUALIZED.contains(each.getState())) {
startDate = Collections.min(notNull(startDate, each.getInitDate(),
associatedTaskElement.getStartDate()));
endDate = Collections.max(notNull(endDate, each.getDeadline(),
associatedTaskElement.getEndDate()));
}
}
filterStartDate = startDate != null ? LocalDate
.fromDateFields(startDate) : null;
filterFinishDate = endDate != null ? LocalDate.fromDateFields(endDate)
: null;
return new TaskGroupPredicate(null, startDate, endDate,
includeOrderElements);
}
private static <T> List<T> notNull(T... values) {

View file

@ -51,4 +51,6 @@ public interface ICompanyPlanningModel {
ProgressType getProgressTypeFromConfiguration();
public IPredicate getDefaultPredicate(Boolean includeOrderElements);
}