")
@@ -949,27 +932,13 @@ public class TaskElementAdapter {
return Collections.singletonList(biggerOrEqualThan(getEndDate()));
}
}
-
return Collections.emptyList();
}
- private GanttDate inferEndFrom(GanttDate newStart) {
- if ( taskElement instanceof Task ) {
- Task task = (Task) taskElement;
- return toGantt(task.calculateEndKeepingLength(toIntraDay(newStart)));
- }
-
- return newStart;
- }
-
@Override
public Date getDeadline() {
LocalDate deadline = taskElement.getDeadline();
- if ( deadline == null ) {
- return null;
- }
-
- return deadline.toDateTimeAtStartOfDay().toDate();
+ return deadline == null ? null : deadline.toDateTimeAtStartOfDay().toDate();
}
@Override
@@ -986,9 +955,9 @@ public class TaskElementAdapter {
if ( !taskElement.isLeaf() || !taskElement.hasConsolidations() ) {
return null;
}
- LocalDate consolidatedline = ((Task) taskElement).getFirstDayNotConsolidated().getDate();
+ LocalDate consolidatedLine = ((Task) taskElement).getFirstDayNotConsolidated().getDate();
- return TaskElementAdapter.toGantt(consolidatedline);
+ return TaskElementAdapter.toGantt(consolidatedLine);
}
@Override
@@ -1006,6 +975,7 @@ public class TaskElementAdapter {
return taskElement.isLimitingAndHasDayAssignments();
}
+ @Override
public boolean hasConsolidations() {
return taskElement.hasConsolidations();
}
@@ -1050,21 +1020,13 @@ public class TaskElementAdapter {
@Override
public Date getFirstTimesheetDate() {
OrderElement orderElement = taskElement.getOrderElement();
- if ( orderElement != null ) {
- return orderElement.getFirstTimesheetDate();
- }
-
- return null;
+ return orderElement != null ? orderElement.getFirstTimesheetDate() : null;
}
@Override
public Date getLastTimesheetDate() {
OrderElement orderElement = taskElement.getOrderElement();
- if ( orderElement != null ) {
- return orderElement.getLastTimesheetDate();
- }
-
- return null;
+ return orderElement != null ? orderElement.getLastTimesheetDate() : null;
}
@Override
@@ -1106,45 +1068,38 @@ public class TaskElementAdapter {
}
/**
- * Returns {@link ProjectStatusEnum} for the specified
- *
orderElement
+ * Returns {@link ProjectStatusEnum} for the specified
orderElement.
*
* @param orderElement
*/
private ProjectStatusEnum getProjectHourStatus(OrderElement orderElement) {
EffortDuration sumChargedEffort = getSumChargedEffort(orderElement);
EffortDuration estimatedEffort = getEstimatedEffort(orderElement);
+
if ( sumChargedEffort.isZero() || sumChargedEffort.compareTo(estimatedEffort) <= 0 ) {
return ProjectStatusEnum.AS_PLANNED;
}
EffortDuration withMarginEstimatedHours = orderElement.getWithMarginCalculatedHours();
- if ( estimatedEffort.compareTo(sumChargedEffort) < 0 &&
- sumChargedEffort.compareTo(withMarginEstimatedHours) <= 0 ) {
-
- return ProjectStatusEnum.WITHIN_MARGIN;
- }
-
- return ProjectStatusEnum.MARGIN_EXCEEDED;
+ return estimatedEffort.compareTo(sumChargedEffort) < 0 && sumChargedEffort.compareTo(withMarginEstimatedHours) <= 0
+ ? ProjectStatusEnum.WITHIN_MARGIN
+ : ProjectStatusEnum.MARGIN_EXCEEDED;
}
/**
- * Returns sum charged effort for the specified
- *
orderElement
+ * Returns sum charged effort for the specified
orderElement.
*
* @param orderElement
*/
private EffortDuration getSumChargedEffort(OrderElement orderElement) {
SumChargedEffort sumChargedEffort = orderElement.getSumChargedEffort();
-
return (sumChargedEffort != null) ? sumChargedEffort.getTotalChargedEffort() : EffortDuration.zero();
}
/**
- * Returns the estimated effort for the specified
- *
orderElement
+ * Returns the estimated effort for the specified
orderElement.
*
* @param orderElement
*/
@@ -1191,8 +1146,7 @@ public class TaskElementAdapter {
}
/**
- * Returns {@link ProjectStatusEnum} for the specified
- *
orderElement
+ * Returns {@link ProjectStatusEnum} for the specified
orderElement.
*
* @param orderElement
*/
@@ -1205,15 +1159,13 @@ public class TaskElementAdapter {
return ProjectStatusEnum.AS_PLANNED;
}
- if ( budget.compareTo(totalExpense) < 0 && totalExpense.compareTo(withMarginCalculatedBudget) <= 0 ) {
- return ProjectStatusEnum.WITHIN_MARGIN;
- }
-
- return ProjectStatusEnum.MARGIN_EXCEEDED;
+ return budget.compareTo(totalExpense) < 0 && totalExpense.compareTo(withMarginCalculatedBudget) <= 0
+ ? ProjectStatusEnum.WITHIN_MARGIN
+ : ProjectStatusEnum.MARGIN_EXCEEDED;
}
/**
- * Returns total expense for the specified
orderElement
+ * Returns total expense for the specified
orderElement.
*
* @param orderElement
*/
@@ -1239,25 +1191,16 @@ public class TaskElementAdapter {
@Override
public String getTooltipTextForProjectHoursStatus() {
- if ( taskElement.isTask() ) {
- return buildHoursTooltipText(taskElement.getOrderElement());
- }
-
- return null;
+ return taskElement.isTask() ? buildHoursTooltipText(taskElement.getOrderElement()) : null;
}
@Override
public String getTooltipTextForProjectBudgetStatus() {
- if ( taskElement.isTask() ) {
- return buildBudgetTooltipText(taskElement.getOrderElement());
- }
-
- return null;
+ return taskElement.isTask() ? buildBudgetTooltipText(taskElement.getOrderElement()) : null;
}
/**
- * Builds hours tooltiptext for the specified
- *
orderElement
+ * Builds hours tooltipText for the specified
orderElement.
*
* @param orderElement
*/
@@ -1269,8 +1212,8 @@ public class TaskElementAdapter {
result.append(_("Hours-status")).append("\n");
- result.append(_("Project margin: {0}% ({1} hours)={2} hours", margin, orderElement.getWorkHours(),
- orderElement.getWithMarginCalculatedHours()));
+ result.append(_("Project margin: {0}% ({1} hours)={2} hours",
+ margin, orderElement.getWorkHours(), orderElement.getWithMarginCalculatedHours()));
String totalEffortHours = orderElement.getEffortAsString();
@@ -1287,8 +1230,8 @@ public class TaskElementAdapter {
Integer margin = condition ? orderElement.getOrder().getBudgetMargin() : 0;
result.append(_("Budget-status")).append("\n");
- result.append(_(
- "Project margin: {0}% ({1})={2}",
+
+ result.append(_("Project margin: {0}% ({1})={2}",
margin,
addCurrencySymbol(orderElement.getBudget()),
addCurrencySymbol(orderElement.getWithMarginCalculatedBudget())));
@@ -1316,9 +1259,7 @@ public class TaskElementAdapter {
return toDomainDependencies(taskElement.getDependenciesWithThisOrigin());
}
- private List
> toDomainDependencies(
- Collection extends Dependency> dependencies) {
-
+ private List> toDomainDependencies(Collection extends Dependency> dependencies) {
List> result = new ArrayList<>();
for (Dependency dependency : dependencies) {
@@ -1333,6 +1274,7 @@ public class TaskElementAdapter {
private DependencyType toGanntType(Type type) {
switch (type) {
+
case END_START:
return DependencyType.END_START;
@@ -1352,6 +1294,7 @@ public class TaskElementAdapter {
private Type toDomainType(DependencyType type) {
switch (type) {
+
case END_START:
return Type.END_START;
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/LoadChartFiller.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/LoadChartFiller.java
index bb3b64575..d00a16f55 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/LoadChartFiller.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/LoadChartFiller.java
@@ -27,9 +27,14 @@ import org.zkoss.zk.ui.util.Clients;
public abstract class LoadChartFiller extends ChartFiller {
- public static final String COLOR_CAPABILITY_LINE = "#000000"; // Black
- public static final String COLOR_ASSIGNED_LOAD = "#98D471"; // Green
- public static final String COLOR_OVERLOAD = "#FF5A11"; // Red
+ /** Black */
+ public static final String COLOR_CAPABILITY_LINE = "#000000";
+
+ /** Green */
+ public static final String COLOR_ASSIGNED_LOAD = "#98D471";
+
+ /** Red */
+ public static final String COLOR_OVERLOAD = "#FF5A11";
@Override
public void fillChart(Timeplot chart, Interval interval, Integer size) {
@@ -43,7 +48,7 @@ public abstract class LoadChartFiller extends ChartFiller {
ValueGeometry valueGeometry = getValueGeometry();
TimeGeometry timeGeometry = getTimeGeometry(interval);
- Plotinfo[] plotInfos = getPlotInfos(interval);
+ Plotinfo[] plotInfos = getPlotInfo(interval);
for (Plotinfo each : plotInfos) {
appendPlotinfo(chart, each, valueGeometry, timeGeometry);
}
@@ -58,8 +63,8 @@ public abstract class LoadChartFiller extends ChartFiller {
* The order must be from the topmost one to the lowest one.
*
* @param interval
- * @return the {@link Plotinfo plot infos} to show
+ * @return the {@link Plotinfo plot info} to show
*/
- protected abstract Plotinfo[] getPlotInfos(Interval interval);
+ protected abstract Plotinfo[] getPlotInfo(Interval interval);
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/StandardLoadChartFiller.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/StandardLoadChartFiller.java
index 2c9462a3b..1bca09836 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/StandardLoadChartFiller.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/chart/StandardLoadChartFiller.java
@@ -14,22 +14,19 @@ import org.zkoss.ganttz.util.Interval;
public abstract class StandardLoadChartFiller extends LoadChartFiller {
@Override
- protected Plotinfo[] getPlotInfos(Interval interval) {
+ protected Plotinfo[] getPlotInfo(Interval interval) {
final ILoadChartData data = getDataOn(interval);
- Plotinfo plotInfoLoad = createPlotinfoFromDurations(getLoad(data),
- interval);
+ Plotinfo plotInfoLoad = createPlotinfoFromDurations(getLoad(data), interval);
plotInfoLoad.setFillColor(COLOR_ASSIGNED_LOAD);
plotInfoLoad.setLineWidth(0);
- Plotinfo plotInfoMax = createPlotinfoFromDurations(
- getCalendarMaximumAvailability(data), interval);
+ Plotinfo plotInfoMax = createPlotinfoFromDurations(getCalendarMaximumAvailability(data), interval);
plotInfoMax.setLineColor(COLOR_CAPABILITY_LINE);
plotInfoMax.setFillColor("#FFFFFF");
plotInfoMax.setLineWidth(2);
- Plotinfo plotInfoOverload = createPlotinfoFromDurations(
- getOverload(data), interval);
+ Plotinfo plotInfoOverload = createPlotinfoFromDurations(getOverload(data), interval);
plotInfoOverload.setFillColor(COLOR_OVERLOAD);
plotInfoOverload.setLineWidth(0);
@@ -38,23 +35,17 @@ public abstract class StandardLoadChartFiller extends LoadChartFiller {
protected abstract ILoadChartData getDataOn(Interval interval);
- protected LocalDate getStart(LocalDate explicitlySpecifiedStart,
- Interval interval) {
- if (explicitlySpecifiedStart == null) {
- return interval.getStart();
- }
- return Collections.max(asList(explicitlySpecifiedStart,
- interval.getStart()));
+ protected LocalDate getStart(LocalDate explicitlySpecifiedStart, Interval interval) {
+ return explicitlySpecifiedStart == null
+ ? interval.getStart()
+ : Collections.max(asList(explicitlySpecifiedStart, interval.getStart()));
}
@SuppressWarnings("unchecked")
- protected LocalDate getEnd(LocalDate explicitlySpecifiedEnd,
- Interval interval) {
- if (explicitlySpecifiedEnd == null) {
- return interval.getFinish();
- }
- return Collections.min(asList(explicitlySpecifiedEnd,
- interval.getFinish()));
+ protected LocalDate getEnd(LocalDate explicitlySpecifiedEnd, Interval interval) {
+ return explicitlySpecifiedEnd == null
+ ? interval.getFinish()
+ : Collections.min(asList(explicitlySpecifiedEnd, interval.getFinish()));
}
private SortedMap getLoad(ILoadChartData data) {
@@ -65,8 +56,7 @@ public abstract class StandardLoadChartFiller extends LoadChartFiller {
return groupAsNeededByZoom(data.getOverload());
}
- private SortedMap getCalendarMaximumAvailability(
- ILoadChartData data) {
+ private SortedMap getCalendarMaximumAvailability(ILoadChartData data) {
return groupAsNeededByZoom(data.getAvailability());
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java
index bfd6a4e58..28cfea64d 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java
@@ -32,7 +32,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -122,6 +121,13 @@ import org.zkoss.zul.Vbox;
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class CompanyPlanningModel implements ICompanyPlanningModel {
+ /** All the status but CANCELLED and STORED */
+ private static final EnumSet STATUS_VISUALIZED = OrderStatusEnum.getVisibleStatus();
+
+ private static final String CENTER = "center";
+
+ private static final String INDICATOR = "indicator";
+
@Autowired
private IOrderDAO orderDAO;
@@ -134,12 +140,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
@Autowired
private ICompanyEarnedValueCalculator earnedValueCalculator;
- private List keepAliveZoomListeners = new ArrayList<>();
-
- private List earnedValueChartConfigurationCheckboxes = new ArrayList<>();
-
- private List keepAliveChartVisibilityListeners = new ArrayList<>();
-
@Autowired
private IConfigurationDAO configurationDAO;
@@ -149,18 +149,21 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
@Autowired
private TaskElementAdapter taskElementAdapterCreator;
- private Scenario currentScenario;
-
@Autowired
private PredefinedDatabaseSnapshots databaseSnapshots;
+ private List keepAliveZoomListeners = new ArrayList<>();
+
+ private List earnedValueChartConfigurationCheckboxes = new ArrayList<>();
+
+ private List keepAliveChartVisibilityListeners = new ArrayList<>();
+
+ private Scenario currentScenario;
+
private LocalDate filterStartDate;
private LocalDate filterFinishDate;
- /** All the status but CANCELLED and STORED */
- private static final EnumSet STATUS_VISUALIZED = OrderStatusEnum.getVisibleStatus();
-
private static final class TaskElementNavigator implements IStructureNavigator {
@Override
@@ -229,18 +232,18 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
}
else {
// If the chart is not expanded, we load the data later with a listener
- (planner.getFellow("graphics")).addEventListener("onOpen",
- new EventListener() {
- @Override
- public void onEvent(Event event) {
- transactionService.runOnReadOnlyTransaction((IOnTransaction) () -> {
- setupChartAndItsContent(planner, chartComponent);
- return null;
- });
- // Data is loaded only once, then we remove the listener
- event.getTarget().removeEventListener("onOpen", this);
- }
+ planner.getFellow("graphics").addEventListener("onOpen", new EventListener() {
+ @Override
+ public void onEvent(Event event) {
+ transactionService.runOnReadOnlyTransaction((IOnTransaction) () -> {
+ setupChartAndItsContent(planner, chartComponent);
+ return null;
});
+
+ // Data is loaded only once, then we remove the listener
+ event.getTarget().removeEventListener("onOpen", this);
+ }
+ });
}
}
@@ -313,7 +316,6 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
private Timeplot createEmptyTimeplot() {
Timeplot timeplot = new Timeplot();
timeplot.appendChild(new Plotinfo());
-
return timeplot;
}
@@ -341,7 +343,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
datebox.addEventListener(Events.ON_CHANGE, event -> {
LocalDate date = new LocalDate(datebox.getValue());
updateEarnedValueChartLegend(vbox, earnedValueChartFiller, date);
- dateInfutureMessage(datebox);
+ dateInFutureMessage(datebox);
});
}
@@ -355,7 +357,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
}
}
- private void dateInfutureMessage(Datebox datebox) {
+ private void dateInFutureMessage(Datebox datebox) {
Date value = datebox.getValue();
Date today = LocalDate.fromDateFields(new Date()).toDateTimeAtStartOfDay().toDate();
@@ -374,15 +376,18 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
final Div div = new Div();
Timeplot timePlot = loadChartEmitter.getLastValue();
+
if (timePlot != null) {
div.appendChild(timePlot);
}
+
loadChartEmitter.addListener(timePlot1 -> {
div.getChildren().clear();
if (timePlot1 != null) {
div.appendChild(timePlot1);
}
});
+
div.setSclass("plannergraph");
hbox.appendChild(div);
@@ -394,8 +399,8 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
public static org.zkoss.zk.ui.Component getLoadChartLegend() {
Hbox hbox = new Hbox();
hbox.setClass("legend-container");
- hbox.setAlign("center");
- hbox.setPack("center");
+ hbox.setAlign(CENTER);
+ hbox.setPack(CENTER);
Executions.createComponents("/planner/_legendLoadChartCompany.zul", hbox, null);
return hbox;
@@ -407,8 +412,8 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
Vbox vbox = new Vbox();
vbox.setClass("legend-container");
- vbox.setAlign("center");
- vbox.setPack("center");
+ vbox.setAlign(CENTER);
+ vbox.setPack(CENTER);
Hbox dateHbox = new Hbox();
dateHbox.appendChild(new Label(_("Select date")));
@@ -438,6 +443,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
private org.zkoss.zk.ui.Component getEarnedValueChartConfigurableLegend(
CompanyEarnedValueChartFiller earnedValueChartFiller, LocalDate date) {
+
Hbox mainhbox = new Hbox();
mainhbox.setId("indicatorsTable");
@@ -456,7 +462,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
for (EarnedValueType type : EarnedValueType.values()) {
Checkbox checkbox = new Checkbox(type.getAcronym());
checkbox.setTooltiptext(type.getName());
- checkbox.setAttribute("indicator", type);
+ checkbox.setAttribute(INDICATOR, type);
checkbox.setStyle("color: " + type.getColor());
Label valueLabel = new Label(getLabelTextEarnedValueType(
@@ -468,6 +474,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
hbox.appendChild(valueLabel);
columnNumber = columnNumber + 1;
+
switch (columnNumber) {
case 1:
@@ -518,7 +525,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
private void markAsSelectedDefaultIndicators() {
for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
- EarnedValueType type = (EarnedValueType) checkbox.getAttribute("indicator");
+ EarnedValueType type = (EarnedValueType) checkbox.getAttribute(INDICATOR);
switch (type) {
@@ -541,7 +548,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
if (checkbox.isChecked()) {
- EarnedValueType type = (EarnedValueType) checkbox.getAttribute("indicator");
+ EarnedValueType type = (EarnedValueType) checkbox.getAttribute(INDICATOR);
result.add(type);
}
}
@@ -593,7 +600,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
}
@Override
- public void doPrint(HashMap parameters, Planner planner) {
+ public void doPrint(Map parameters, Planner planner) {
CutyPrint.print(parameters, planner);
}
@@ -626,6 +633,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
});
keepAliveChartVisibilityListeners.add(chartVisibilityChangedListener);
+
return chartVisibilityChangedListener;
}
@@ -679,6 +687,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
}
}
Collections.sort(result, (arg0, arg1) -> arg0.getStartDate().compareTo(arg1.getStartDate()));
+
return result;
}
@@ -724,6 +733,9 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
}
state = (OrderStatusEnum) filterPair.getValue();
break;
+
+ default:
+ break;
}
}
@@ -739,8 +751,8 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
Date endDate = FilterUtils.readProjectsEndDate();
String name = FilterUtils.readProjectsName();
- boolean calculateStartDate = (startDate == null);
- boolean calculateEndDate = (endDate == null);
+ boolean calculateStartDate = startDate == null;
+ boolean calculateEndDate = endDate == null;
// Filter predicate needs to be calculated based on the projects dates
if ( (calculateStartDate) || (calculateEndDate) ) {
@@ -762,6 +774,7 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
startDate = Collections.min(
notNull(startDate, each.getInitDate(), associatedTaskElement.getStartDate()));
}
+
if ( calculateEndDate ) {
endDate = Collections.max(
notNull(endDate, each.getDeadline(), associatedTaskElement.getEndDate()));
@@ -789,15 +802,11 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
@Override
public Date getFilterStartDate() {
- return ((filterStartDate == null) ? null : filterStartDate.toDateTimeAtStartOfDay().toDate());
+ return filterStartDate == null ? null : filterStartDate.toDateTimeAtStartOfDay().toDate();
}
@Override
public Date getFilterFinishDate() {
- return ((filterStartDate == null) ? null : filterFinishDate.toDateTimeAtStartOfDay().toDate());
- }
-
- private AvailabilityTimeLine.Interval getFilterInterval() {
- return AvailabilityTimeLine.Interval.create(filterStartDate, filterFinishDate);
+ return filterStartDate == null ? null : filterFinishDate.toDateTimeAtStartOfDay().toDate();
}
private class CompanyLoadChartFiller extends StandardLoadChartFiller {
@@ -829,19 +838,25 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
@Override
protected void calculateBudgetedCostWorkScheduled(Interval interval) {
- setIndicatorInInterval(EarnedValueType.BCWS, interval,
+ setIndicatorInInterval(
+ EarnedValueType.BCWS,
+ interval,
earnedValueCalculator.calculateBudgetedCostWorkScheduled(getFilterInterval()));
}
@Override
protected void calculateActualCostWorkPerformed(Interval interval) {
- setIndicatorInInterval(EarnedValueType.ACWP, interval,
+ setIndicatorInInterval(
+ EarnedValueType.ACWP,
+ interval,
earnedValueCalculator.calculateActualCostWorkPerformed(getFilterInterval()));
}
@Override
protected void calculateBudgetedCostWorkPerformed(Interval interval) {
- setIndicatorInInterval(EarnedValueType.BCWP, interval,
+ setIndicatorInInterval(
+ EarnedValueType.BCWP,
+ interval,
earnedValueCalculator.calculateBudgetedCostWorkPerformed(getFilterInterval()));
}
@@ -850,6 +865,10 @@ public class CompanyPlanningModel implements ICompanyPlanningModel {
return getEarnedValueSelectedIndicators();
}
+ private AvailabilityTimeLine.Interval getFilterInterval() {
+ return AvailabilityTimeLine.Interval.create(filterStartDate, filterFinishDate);
+ }
+
}
@Override
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java
index d3fc85ef3..7d0de6561 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java
@@ -98,7 +98,6 @@ import org.zkoss.ganttz.util.Interval;
import org.zkoss.ganttz.util.ProfilingLogFactory;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.WrongValueException;
-import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import java.math.BigDecimal;
@@ -108,7 +107,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -150,51 +148,15 @@ public class OrderPlanningModel implements IOrderPlanningModel {
private static final Log LOG = LogFactory.getLog(OrderPlanningModel.class);
- private static final Log PROFILING_LOG = ProfilingLogFactory
- .getLog(OrderPlanningModel.class);
+ private static final Log PROFILING_LOG = ProfilingLogFactory.getLog(OrderPlanningModel.class);
- public static > T loadRequiredDataFor(T resources) {
- for (Resource each : resources) {
- reattachCalendarFor(each);
+ private static final String CENTER = "center";
- // Loading criterions so there are no repeated instances
- forceLoadOfCriterions(each);
- }
- return resources;
- }
-
- private static void reattachCalendarFor(Resource each) {
- if (each.getCalendar() != null) {
- BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar());
- }
- }
-
- static void forceLoadOfCriterions(Resource resource) {
- Set criterionSatisfactions = resource.getCriterionSatisfactions();
- for (CriterionSatisfaction each : criterionSatisfactions) {
- each.getCriterion().getName();
- each.getCriterion().getType();
- }
- }
-
- public static ZoomLevel calculateDefaultLevel(PlannerConfiguration configuration) {
- if (configuration.getData().isEmpty()) {
- return ZoomLevel.DETAIL_ONE;
- }
- TaskElement earliest = Collections.min(configuration.getData(), TaskElement.getByStartDateComparator());
- TaskElement latest = Collections.max(configuration.getData(), TaskElement.getByEndAndDeadlineDateComparator());
-
- LocalDate startDate = earliest.getStartAsLocalDate();
- LocalDate endDate = latest.getBiggestAmongEndOrDeadline();
-
- return ZoomLevel.getDefaultZoomByDates(startDate, endDate);
- }
+ private static final String INDICATOR = "indicator";
@Autowired
private IOrderDAO orderDAO;
- private PlanningState planningState;
-
@Autowired
private IUserDAO userDAO;
@@ -237,14 +199,19 @@ public class OrderPlanningModel implements IOrderPlanningModel {
@Autowired
private ISubcontractCommand subcontractCommand;
- private List keepAliveZoomListeners = new ArrayList<>();
-
@Autowired
private IOrderEarnedValueCalculator earnedValueCalculator;
@Autowired
private IOrderResourceLoadCalculator resourceLoadCalculator;
+ @Autowired
+ private PlanningStateCreator planningStateCreator;
+
+ private List keepAliveZoomListeners = new ArrayList<>();
+
+ private PlanningState planningState;
+
private List earnedValueChartConfigurationCheckboxes = new ArrayList<>();
private List keepAliveChartVisibilityListeners = new ArrayList<>();
@@ -253,6 +220,51 @@ public class OrderPlanningModel implements IOrderPlanningModel {
private String tabSelected = "load_tab";
+ private OrderEarnedValueChartFiller earnedValueChartFiller;
+
+ private Vbox earnedValueChartLegendContainer;
+
+ private Datebox earnedValueChartLegendDatebox;
+
+ private Chart earnedValueChart;
+
+ public static > T loadRequiredDataFor(T resources) {
+ for (Resource each : resources) {
+ reattachCalendarFor(each);
+
+ // Loading criterions so there are no repeated instances
+ forceLoadOfCriterions(each);
+ }
+ return resources;
+ }
+
+ private static void reattachCalendarFor(Resource each) {
+ if (each.getCalendar() != null) {
+ BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar());
+ }
+ }
+
+ static void forceLoadOfCriterions(Resource resource) {
+ Set criterionSatisfactions = resource.getCriterionSatisfactions();
+ for (CriterionSatisfaction each : criterionSatisfactions) {
+ each.getCriterion().getName();
+ each.getCriterion().getType();
+ }
+ }
+
+ public static ZoomLevel calculateDefaultLevel(PlannerConfiguration configuration) {
+ if (configuration.getData().isEmpty()) {
+ return ZoomLevel.DETAIL_ONE;
+ }
+ TaskElement earliest = Collections.min(configuration.getData(), TaskElement.getByStartDateComparator());
+ TaskElement latest = Collections.max(configuration.getData(), TaskElement.getByEndAndDeadlineDateComparator());
+
+ LocalDate startDate = earliest.getStartAsLocalDate();
+ LocalDate endDate = latest.getBiggestAmongEndOrDeadline();
+
+ return ZoomLevel.getDefaultZoomByDates(startDate, endDate);
+ }
+
private static class NullSeparatorCommandOnTask implements ICommandOnTask {
@Override
@@ -401,11 +413,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return zoomListener;
}
- private OrderEarnedValueChartFiller earnedValueChartFiller;
-
private void setupAdvanceAssignmentPlanningController(
- final Planner planner,
- AdvanceAssignmentPlanningController advanceAssignmentPlanningController) {
+ final Planner planner, AdvanceAssignmentPlanningController advanceAssignmentPlanningController) {
advanceAssignmentPlanningController.setReloadEarnedValueListener(
() -> Registry.getTransactionService().runOnReadOnlyTransaction(
@@ -464,10 +473,6 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return result;
}
- private Vbox earnedValueChartLegendContainer;
-
- private Datebox earnedValueChartLegendDatebox;
-
private void appendEarnedValueChartAndLegend(
Tabpanel earnedValueChartPanel,
Timeplot chartEarnedValueTimeplot,
@@ -476,8 +481,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
Vbox vbox = new Vbox();
this.earnedValueChartLegendContainer = vbox;
vbox.setClass("legend-container");
- vbox.setAlign("center");
- vbox.setPack("center");
+ vbox.setAlign(CENTER);
+ vbox.setPack(CENTER);
Hbox dateHbox = new Hbox();
dateHbox.appendChild(new Label(_("Select date")));
@@ -520,8 +525,6 @@ public class OrderPlanningModel implements IOrderPlanningModel {
refillLoadChartWhenNeeded(changeHooker, planner, loadChart, false);
}
- private Chart earnedValueChart;
-
private void setupEarnedValueChart(Timeplot chartEarnedValueTimeplot,
OrderEarnedValueChartFiller earnedValueChartFiller,
Planner planner,
@@ -611,7 +614,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
@Override
- public void doPrint(HashMap parameters, Planner planner) {
+ public void doPrint(Map parameters, Planner planner) {
CutyPrint.print(order, parameters, planner);
}
@@ -679,15 +682,16 @@ public class OrderPlanningModel implements IOrderPlanningModel {
if ( id.equals(tabSelected) ) {
tab.setSelected(true);
}
- tab.addEventListener("onClick", (EventListener) event -> selectTab(id));
+ tab.addEventListener("onClick", event -> selectTab(id));
+
return tab;
}
private org.zkoss.zk.ui.Component getLoadChartLegend() {
Hbox hbox = new Hbox();
hbox.setClass("legend-container");
- hbox.setAlign("center");
- hbox.setPack("center");
+ hbox.setAlign(CENTER);
+ hbox.setPack(CENTER);
Executions.createComponents("/planner/_legendLoadChartOrder.zul", hbox, null);
return hbox;
@@ -715,8 +719,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
private void appendEventListenerToDateboxIndicators() {
-
- earnedValueChartLegendDatebox.addEventListener(Events.ON_CHANGE, (EventListener) event -> {
+ earnedValueChartLegendDatebox.addEventListener(Events.ON_CHANGE, event -> {
updateEarnedValueChartLegend();
dateInFutureMessage(earnedValueChartLegendDatebox);
});
@@ -729,8 +732,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
earnedValueChartLegendDatebox.setValue(earnedValueChartLegendDatebox.getValue());
}
catch (WrongValueException e) {
- // The user moved the gantt and the legend became out of the visualization area,
- // reset to a correct date
+ // The user moved the gantt and the legend became out of the visualization area, reset to a correct date
earnedValueChartLegendDatebox
.setValue(earnedValueChartFiller.initialDateForIndicatorValues().toDateTimeAtStartOfDay().toDate());
}
@@ -766,7 +768,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
for (EarnedValueType type : EarnedValueType.values()) {
Checkbox checkbox = new Checkbox(type.getAcronym());
checkbox.setTooltiptext(type.getName());
- checkbox.setAttribute("indicator", type);
+ checkbox.setAttribute(INDICATOR, type);
checkbox.setStyle("color: " + type.getColor());
Label valueLabel = new Label(getLabelTextEarnedValueType(earnedValueChartFiller, type, date));
@@ -777,6 +779,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
hbox.appendChild(valueLabel);
columnNumber = columnNumber + 1;
+
switch (columnNumber) {
case 1:
column1.appendChild(hbox);
@@ -785,6 +788,10 @@ public class OrderPlanningModel implements IOrderPlanningModel {
case 2:
column2.appendChild(hbox);
columnNumber = 0;
+ break;
+
+ default:
+ break;
}
earnedValueChartConfigurationCheckboxes.add(checkbox);
@@ -817,7 +824,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
private void markAsSelectedDefaultIndicators() {
for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
- EarnedValueType type = (EarnedValueType) checkbox.getAttribute("indicator");
+ EarnedValueType type = (EarnedValueType) checkbox.getAttribute(INDICATOR);
+
switch (type) {
case BCWS:
case ACWP:
@@ -832,17 +840,6 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
}
- private Set getEarnedValueSelectedIndicators() {
- Set result = new HashSet<>();
- for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
- if ( checkbox.isChecked() ) {
- EarnedValueType type = (EarnedValueType) checkbox.getAttribute("indicator");
- result.add(type);
- }
- }
- return result;
- }
-
private void setEventListenerConfigurationCheckboxes(final Chart earnedValueChart) {
for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
checkbox.addEventListener(Events.ON_CHECK, event -> transactionService.runOnReadOnlyTransaction(() -> {
@@ -997,8 +994,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
Messagebox.show(
_("Unsaved changes will be lost. Are you sure?"), _("Confirm exit dialog"),
Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION,
- (EventListener) evt -> {
- if (evt.getName().equals("onOK")) {
+ evt -> {
+ if ("onOK".equals(evt.getName())) {
ConfirmCloseUtil.resetConfirmClose();
Executions.sendRedirect("/planner/index.zul;company_scheduling");
}
@@ -1043,6 +1040,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
});
keepAliveChartVisibilityListeners.add(chartVisibilityChangedListener);
+
return chartVisibilityChangedListener;
}
@@ -1069,9 +1067,6 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return zoomListener;
}
- @Autowired
- private PlanningStateCreator planningStateCreator;
-
private PlanningState createPlanningStateFor(Order order) {
return planningStateCreator.retrieveOrCreate(planner.getDesktop(), order, planningState1 -> {
planningState1.reattach();
@@ -1087,10 +1082,10 @@ public class OrderPlanningModel implements IOrderPlanningModel {
*/
private class OrderLoadChartFiller extends LoadChartFiller {
- // Soft green
+ /** Soft green */
private static final String COLOR_ASSIGNED_LOAD_GLOBAL = "#E0F3D3";
- // Soft red
+ /** Soft red */
private static final String COLOR_OVERLOAD_GLOBAL = "#FFD4C2";
private final Order order;
@@ -1105,7 +1100,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
@Override
- protected Plotinfo[] getPlotInfos(Interval interval) {
+ protected Plotinfo[] getPlotInfo(Interval interval) {
resourceLoadCalculator.setOrder(order, planningState.getAssignmentsCalculator());
ContiguousDaysLine maxCapacityOnResources =
@@ -1195,6 +1190,17 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return getEarnedValueSelectedIndicators();
}
+ private Set getEarnedValueSelectedIndicators() {
+ Set result = new HashSet<>();
+ for (Checkbox checkbox : earnedValueChartConfigurationCheckboxes) {
+ if ( checkbox.isChecked() ) {
+ EarnedValueType type = (EarnedValueType) checkbox.getAttribute(INDICATOR);
+ result.add(type);
+ }
+ }
+ return result;
+ }
+
}
private ISubcontractCommand buildSubcontractCommand(EditTaskController editTaskController) {
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/ResourcesLoadTabCreator.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/ResourcesLoadTabCreator.java
index dfdc37197..550c0a7e6 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/ResourcesLoadTabCreator.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/ResourcesLoadTabCreator.java
@@ -41,13 +41,13 @@ import org.zkoss.zul.Image;
import org.zkoss.zul.Label;
/**
- * Handles Resources Load tab creation (Global and Local)
+ * Handles Resources Load tab creation (Global and Local).
*
* @author Óscar González Fernández
*/
public class ResourcesLoadTabCreator {
- private String RESOURCES_LOAD = "Resources Load";
+ private static final String RESOURCES_LOAD = "Resources Load";
private final IOrderPlanningGate orderPlanningGate;
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/print/CutyPrint.java b/libreplan-webapp/src/main/java/org/libreplan/web/print/CutyPrint.java
index 310cf4064..01384adf8 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/print/CutyPrint.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/print/CutyPrint.java
@@ -60,83 +60,39 @@ public class CutyPrint {
private static final String CUTYCAPT_COMMAND = "cutycapt";
- // Estimated maximum execution time (ms)
+ private static final String INDEX_ZUL = "/planner/index.zul";
+
+ private static final String PX_IMPORTANT = "px !important; } \n";
+
+ /** Estimated maximum execution time (ms) */
private static final int CAPTURE_DELAY = 10000;
/**
* Default width in pixels of the task name text field for depth level 1.
- *
- * Got from .listdetails .depth_1 input.task_title { width: 121px; } at
- * src/main/webapp/planner/css/ganttzk.css
+ * Got from .listdetails .depth_1 input.task_title { width: 121px; } at src/main/webapp/planner/css/ganttzk.css
*/
private static final int BASE_TASK_NAME_PIXELS = 121;
private static int TASK_HEIGHT = 25;
- public static void print(Order order) {
- print("/planner/index.zul", entryPointForShowingOrder(order), Collections. emptyMap());
- }
-
- public static void print(Order order, Map parameters) {
- print("/planner/index.zul", entryPointForShowingOrder(order), parameters);
- }
-
- public static void print(Order order, HashMap parameters, Planner planner) {
- print("/planner/index.zul", entryPointForShowingOrder(order), parameters, planner);
- }
-
- public static void print() {
- print("/planner/index.zul", Collections. emptyMap(), Collections. emptyMap());
- }
-
- public static void print(Map parameters) {
- print("/planner/index.zul", Collections. emptyMap(), parameters);
- }
-
- public static void print(HashMap parameters, Planner planner) {
- print("/planner/index.zul", Collections. emptyMap(), parameters, planner);
- }
-
- private static Map entryPointForShowingOrder(Order order) {
- final Map result = new HashMap<>();
- result.put("order", order.getCode() + "");
-
- return result;
- }
-
- public static void print(
- final String forwardURL, final Map entryPointsMap, Map parameters) {
- print(forwardURL, entryPointsMap, parameters, null);
- }
-
- public static void print(final String forwardURL,
- final Map entryPointsMap,
- Map parameters,
- Planner planner) {
-
- CutyCaptParameters params = new CutyCaptParameters(forwardURL, entryPointsMap, parameters, planner);
- String generatedSnapshotServerPath = takeSnapshot(params);
-
- openInAnotherTab(generatedSnapshotServerPath);
- }
-
- private static void openInAnotherTab(String producedPrintFilePath) {
- Executions.getCurrent().sendRedirect(producedPrintFilePath, "_blank");
- }
-
private static class CutyCaptParameters {
private static final AtomicLong counter = new AtomicLong();
private final HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest();
+
private final ServletContext context = request.getSession().getServletContext();
private final String forwardURL;
+
private final Map entryPointsMap;
+
private final Map printParameters;
+
private final Planner planner;
private final boolean containersExpandedByDefault;
+
private final int minWidthForTaskNameColumn;
private final String generatedSnapshotServerPath;
@@ -149,10 +105,9 @@ public class CutyPrint {
Planner planner) {
this.forwardURL = forwardURL;
- this.entryPointsMap = (entryPointsMap != null) ? entryPointsMap : Collections. emptyMap();
+ this.entryPointsMap = (entryPointsMap != null) ? entryPointsMap : Collections.emptyMap();
- this.printParameters =
- (printParameters != null) ? printParameters : Collections. emptyMap();
+ this.printParameters = (printParameters != null) ? printParameters : Collections.emptyMap();
this.planner = planner;
@@ -166,11 +121,13 @@ public class CutyPrint {
}
private String buildCaptureDestination(String extension) {
- if ( StringUtils.isEmpty(extension) ) {
- extension = ".pdf";
+ String newExtension = extension;
+
+ if ( StringUtils.isEmpty(newExtension) ) {
+ newExtension = ".pdf";
}
-
- return String.format("/print/%tY% parameters) {
+ print(INDEX_ZUL, entryPointForShowingOrder(order), parameters);
+ }
+
+ public static void print(Order order, Map parameters, Planner planner) {
+ print(INDEX_ZUL, entryPointForShowingOrder(order), parameters, planner);
+ }
+
+ public static void print() {
+ print(INDEX_ZUL, Collections.emptyMap(), Collections.emptyMap());
+ }
+
+ public static void print(Map parameters) {
+ print(INDEX_ZUL, Collections.emptyMap(), parameters);
+ }
+
+ public static void print(Map parameters, Planner planner) {
+ print(INDEX_ZUL, Collections.emptyMap(), parameters, planner);
+ }
+
+ private static Map entryPointForShowingOrder(Order order) {
+ final Map result = new HashMap<>();
+ result.put("order", order.getCode() + "");
+ return result;
+ }
+
+ public static void print(final String forwardURL, final Map entryPointsMap, Map parameters) {
+ print(forwardURL, entryPointsMap, parameters, null);
+ }
+
+ public static void print(final String forwardURL,
+ final Map entryPointsMap,
+ Map