From 9a73743785d3c353c4ce121193b0ffa49de99efe Mon Sep 17 00:00:00 2001 From: Bogdan Bodnarjuk Date: Fri, 29 Apr 2016 15:42:23 +0300 Subject: [PATCH] Refactoring code and change depracted methods (lib JodaTime) --- libreplan-business/pom.xml | 9 +- .../planner/entities/DayAssignment.java | 61 +-- .../entities/DerivedDayAssignment.java | 48 +- .../planner/entities/HoursCostCalculator.java | 29 +- .../planner/entities/TaskElement.java | 157 +++--- .../entities/LimitingResourceAllocator.java | 219 ++++---- .../CompletedEstimatedHoursPerTaskDTO.java | 15 +- .../dtos/WorkingProgressPerTaskDTO.java | 45 +- .../entities/DayAssignmentMatchers.java | 68 +-- .../DerivedAllocationGeneratorTest.java | 76 ++- .../entities/DerivedAllocationTest.java | 94 ++-- .../GenericResourceAllocationTest.java | 4 +- .../web/orders/OrderCRUDController.java | 503 ++++++++---------- .../company/CompanyPlanningController.java | 144 ++--- .../planner/company/CompanyPlanningModel.java | 7 +- .../reports/LibrePlanReportController.java | 10 +- .../resourceload/ResourceLoadController.java | 282 +++++----- pom.xml | 13 +- 18 files changed, 836 insertions(+), 948 deletions(-) diff --git a/libreplan-business/pom.xml b/libreplan-business/pom.xml index 5d05cad2f..6c0715417 100644 --- a/libreplan-business/pom.xml +++ b/libreplan-business/pom.xml @@ -91,11 +91,11 @@ - + @@ -125,6 +125,11 @@ org.liquibase liquibase-maven-plugin + + commons-lang + commons-lang + 2.5 + diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DayAssignment.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DayAssignment.java index 6309d99d9..d2daa5494 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DayAssignment.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DayAssignment.java @@ -66,31 +66,28 @@ public abstract class DayAssignment extends BaseEntity { public abstract boolean accepts(DayAssignment each); } - public static List filter( - Collection assignments, - FilterType filter) { + public static List filter(Collection assignments, + FilterType filter) { if (filter == null || filter.equals(FilterType.KEEP_ALL)) { - return new ArrayList(assignments); + return new ArrayList<>(assignments); } List result = new ArrayList(); for (DayAssignment each : assignments) { - if (filter.accepts(each)) { + if ( filter.accepts(each) ) { result.add(each); } } return result; } - public static List getAtInterval( - List orderedAssignments, LocalDate startInclusive, - LocalDate endExclusive) { + public static List getAtInterval(List orderedAssignments, LocalDate startInclusive, + LocalDate endExclusive) { int position = findFirstAfterOrEqual(orderedAssignments, startInclusive); - List couldBeIncluded = orderedAssignments.subList(position, Math - .max( - orderedAssignments.size(), position)); - List result = new ArrayList(); + List couldBeIncluded = orderedAssignments.subList(position, + Math.max(orderedAssignments.size(), position)); + List result = new ArrayList<>(); for (T each : couldBeIncluded) { - if (each.getDay().compareTo(endExclusive) >= 0) { + if ( each.getDay().compareTo(endExclusive) >= 0 ) { break; } assert each.includedIn(startInclusive, endExclusive); @@ -101,9 +98,9 @@ public abstract class DayAssignment extends BaseEntity { public static List withConsolidatedValue( Collection assignments, boolean consolidated) { - List result = new ArrayList(); + List result = new ArrayList<>(); for (T each : assignments) { - if (each.isConsolidated() == consolidated) { + if ( each.isConsolidated() == consolidated ) { result.add(each); } } @@ -116,8 +113,7 @@ public abstract class DayAssignment extends BaseEntity { int end = orderedAssignments.size() - 1; while (start <= end) { int middle = start + (end - start) / 2; - if (orderedAssignments.get(middle).getDay().compareTo( - startInclusive) < 0) { + if ( orderedAssignments.get(middle).getDay().compareTo(startInclusive) < 0 ) { start = middle + 1; } else { end = middle - 1; @@ -126,8 +122,7 @@ public abstract class DayAssignment extends BaseEntity { return start; } - public static EffortDuration sum( - Collection assignments) { + public static EffortDuration sum(Collection assignments) { EffortDuration result = zero(); for (DayAssignment each : assignments) { result = result.plus(each.getDuration()); @@ -144,8 +139,7 @@ public abstract class DayAssignment extends BaseEntity { return result; } - public static Map> byResource( - Collection assignments) { + public static Map> byResource(Collection assignments) { Map> result = new HashMap>(); for (T assignment : assignments) { Resource resource = assignment.getResource(); @@ -157,12 +151,11 @@ public abstract class DayAssignment extends BaseEntity { return result; } - public static Map> byDay( - Collection assignments) { + public static Map> byDay(Collection assignments) { Map> result = new HashMap>(); for (T t : assignments) { LocalDate day = t.getDay(); - if (!result.containsKey(day)) { + if ( !result.containsKey(day) ) { result.put(day, new ArrayList()); } result.get(day).add(t); @@ -170,8 +163,7 @@ public abstract class DayAssignment extends BaseEntity { return result; } - public static Set getAllResources( - Collection assignments) { + public static Set getAllResources(Collection assignments) { Set result = new HashSet(); for (DayAssignment dayAssignment : assignments) { result.add(dayAssignment.getResource()); @@ -181,7 +173,7 @@ public abstract class DayAssignment extends BaseEntity { public static List getOfType(Class klass, Collection dayAssignments) { - List result = new ArrayList(); + List result = new ArrayList<>(); for (DayAssignment each : dayAssignments) { if (klass.isInstance(each)) { result.add(klass.cast(each)); @@ -211,6 +203,7 @@ public abstract class DayAssignment extends BaseEntity { return result; } + @NotNull private EffortDuration duration; @NotNull @@ -226,8 +219,7 @@ public abstract class DayAssignment extends BaseEntity { } - protected DayAssignment(LocalDate day, EffortDuration duration, - Resource resource) { + protected DayAssignment(LocalDate day, EffortDuration duration, Resource resource) { Validate.notNull(day); Validate.notNull(duration); Validate.notNull(resource); @@ -236,15 +228,12 @@ public abstract class DayAssignment extends BaseEntity { this.resource = resource; } - /** - * @deprecated Use {@link #getDuration()} - */ - @Deprecated - public int getHours() { + + /* public int getHours() { return duration.getHours(); } + */ - @NotNull public EffortDuration getDuration() { return duration; } @@ -290,7 +279,7 @@ public abstract class DayAssignment extends BaseEntity { public static List orderedByDay( Collection dayAssignments) { - List result = new ArrayList(dayAssignments); + List result = new ArrayList<>(dayAssignments); Collections.sort(result, byDayComparator()); return result; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DerivedDayAssignment.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DerivedDayAssignment.java index d35f81132..24ae2a526 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DerivedDayAssignment.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/DerivedDayAssignment.java @@ -20,8 +20,6 @@ */ package org.libreplan.business.planner.entities; -import static org.libreplan.business.workingday.EffortDuration.hours; - import org.apache.commons.lang.Validate; import javax.validation.constraints.NotNull; import org.joda.time.LocalDate; @@ -40,18 +38,21 @@ import org.libreplan.business.workingday.EffortDuration; */ public class DerivedDayAssignment extends DayAssignment { - @Deprecated +/* @Deprecated public static DerivedDayAssignment create(LocalDate day, int hours, Resource resource, DerivedAllocation derivedAllocation) { return create(new DerivedDayAssignment(day, hours(hours), resource, derivedAllocation)); + }*/ + + private static DerivedDayAssignment create(LocalDate day, EffortDuration hours, Resource resource, + DerivedDayAssignmentsContainer container) { + return create(new DerivedDayAssignment(day, hours, resource, container)); } - public static DerivedDayAssignment create(LocalDate day, - EffortDuration duration, Resource resource, - DerivedAllocation derivedAllocation) { - return create(new DerivedDayAssignment(day, duration, resource, - derivedAllocation)); + public static DerivedDayAssignment create(LocalDate day, EffortDuration duration, Resource resource, + DerivedAllocation derivedAllocation) { + return create(new DerivedDayAssignment(day, duration, resource, derivedAllocation)); } /** @@ -62,9 +63,10 @@ public class DerivedDayAssignment extends DayAssignment { } private abstract class ParentState { - protected abstract DerivedAllocation getAllocation(); + protected abstract DerivedAllocation getAllocation(); public abstract Scenario getScenario(); + } private class TransientParentState extends ParentState { @@ -85,6 +87,7 @@ public class DerivedDayAssignment extends DayAssignment { public Scenario getScenario() { return null; } + } private class ContainerParentState extends ParentState { @@ -96,11 +99,11 @@ public class DerivedDayAssignment extends DayAssignment { protected DerivedAllocation getAllocation() { return container.getResourceAllocation(); } - @Override public Scenario getScenario() { return container.getScenario(); } + } private class DetachedState extends ParentState { @@ -123,22 +126,19 @@ public class DerivedDayAssignment extends DayAssignment { @OnCopy(Strategy.IGNORE) private ParentState parentState; - private DerivedDayAssignment(LocalDate day, EffortDuration hours, - Resource resource) { + private DerivedDayAssignment(LocalDate day, EffortDuration hours, Resource resource) { super(day, hours, resource); Validate.isTrue(resource instanceof Worker); } - private DerivedDayAssignment(LocalDate day, EffortDuration hours, - Resource resource, - DerivedAllocation derivedAllocation) { + private DerivedDayAssignment(LocalDate day, EffortDuration hours, Resource resource, + DerivedAllocation derivedAllocation) { this(day, hours, resource); this.parentState = new TransientParentState(derivedAllocation); } - private DerivedDayAssignment(LocalDate day, EffortDuration hours, - Resource resource, - DerivedDayAssignmentsContainer container) { + private DerivedDayAssignment(LocalDate day, EffortDuration hours, Resource resource, + DerivedDayAssignmentsContainer container) { this(day, hours, resource); Validate.notNull(container); this.container = container; @@ -150,19 +150,11 @@ public class DerivedDayAssignment extends DayAssignment { } DerivedDayAssignment copyAsChildOf(DerivedDayAssignmentsContainer container) { - return create(this.getDay(), this.getHours(), this.getResource(), - container); - } - - private static DerivedDayAssignment create(LocalDate day, int hours, - Resource resource, DerivedDayAssignmentsContainer container) { - return create(new DerivedDayAssignment(day, - EffortDuration.hours(hours), resource, container)); + return create(this.getDay(), this.getDuration(), this.getResource(), container); } DerivedDayAssignment copyAsChildOf(DerivedAllocation derivedAllocation) { - return create(this.getDay(), this.getHours(), this.getResource(), - derivedAllocation); + return create(this.getDay(), this.getDuration(), this.getResource(), derivedAllocation); } @Override diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/HoursCostCalculator.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/HoursCostCalculator.java index 4eef089a3..ab3720d80 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/HoursCostCalculator.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/HoursCostCalculator.java @@ -34,6 +34,7 @@ import java.util.TreeMap; import java.util.Date; import org.joda.time.LocalDate; +import org.joda.time.LocalTime; import org.libreplan.business.advance.entities.AdvanceMeasurement; import org.libreplan.business.advance.entities.DirectAdvanceAssignment; import org.libreplan.business.planner.entities.DayAssignment.FilterType; @@ -69,7 +70,7 @@ public class HoursCostCalculator implements ICostCalculator { (task.getOrderElement() != null) ? task.getOrderElement().getReportGlobalAdvanceAssignment() : null; if ( advanceAssignment == null ) { - return new TreeMap(); + return new TreeMap<>(); } return calculateHoursPerDay( @@ -110,10 +111,9 @@ public class HoursCostCalculator implements ICostCalculator { * MAX(BCWS) equals addition of all dayAssignments. */ @Override - public SortedMap getEstimatedCost( - Task task, - LocalDate filterStartDate, - LocalDate filterEndDate) { + public SortedMap getEstimatedCost(Task task, + LocalDate filterStartDate, + LocalDate filterEndDate) { if ( task.isSubcontracted() ) { return getAdvanceCost(task); @@ -130,30 +130,33 @@ public class HoursCostCalculator implements ICostCalculator { for (DayAssignment dayAssignment : dayAssignments) { LocalDate day = dayAssignment.getDay(); - if( ( (filterStartDate == null) || day.compareTo(filterStartDate) >= 0) && - ( (filterEndDate == null) || day.compareTo(filterEndDate) <= 0) ) { + if( ((filterStartDate == null) || day.compareTo(filterStartDate) >= 0) && + ((filterEndDate == null) || day.compareTo(filterEndDate) <= 0) ) { String currentTime = dayAssignment.getDuration().toFormattedString(); - SimpleDateFormat format1 = new SimpleDateFormat("hh:mm"); SimpleDateFormat format2 = new SimpleDateFormat("hh"); Date date = null; try { - if ( isParsableWithFormat1(currentTime) ) + if ( isParsableWithFormat1(currentTime) ) { date = format1.parse(currentTime); - else if ( isParsableWithFormat2(currentTime) ) + } else if ( isParsableWithFormat2(currentTime) ) { date = format2.parse(currentTime); + } } catch (ParseException e) { e.printStackTrace(); } - Time time = new Time(date.getTime()); + assert date != null; - BigDecimal hours = new BigDecimal(time.getHours()); - additionOfAllAssignmentsMinutes += time.getMinutes(); + LocalTime time = new LocalTime(date.getTime()); + // Time time = new Time(date.getTime()); + + BigDecimal hours = new BigDecimal(time.getHourOfDay()); + additionOfAllAssignmentsMinutes += time.getMinuteOfHour(); if ( !result.containsKey(day) ) { result.put(day, BigDecimal.ZERO); diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java index a30accd21..6dc146a05 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java @@ -71,27 +71,27 @@ public abstract class TaskElement extends BaseEntity { private static final Log LOG = LogFactory.getLog(TaskElement.class); public static List justTasks(Collection tasks) { - List result = new ArrayList(); + List result = new ArrayList<>(); for (TaskElement taskElement : tasks) { - if (taskElement instanceof Task) { + if ( taskElement instanceof Task ) { result.add((Task) taskElement); } } + return result; } public interface IDatesInterceptor { - public void setStartDate(IntraDayDate previousStart, + void setStartDate(IntraDayDate previousStart, IntraDayDate previousEnd, IntraDayDate newStart); - public void setNewEnd(IntraDayDate previousEnd, IntraDayDate newEnd); + void setNewEnd(IntraDayDate previousEnd, IntraDayDate newEnd); } private static final IDatesInterceptor EMPTY_INTERCEPTOR = new IDatesInterceptor() { @Override - public void setStartDate(IntraDayDate previousStart, - IntraDayDate previousEnd, IntraDayDate newStart) { + public void setStartDate(IntraDayDate previousStart, IntraDayDate previousEnd, IntraDayDate newStart) { } @Override @@ -108,6 +108,7 @@ public abstract class TaskElement extends BaseEntity { return o1.getStartDate().compareTo(o2.getStartDate()); } }; + return result; } @@ -128,10 +129,10 @@ public abstract class TaskElement extends BaseEntity { */ @SuppressWarnings("unchecked") public LocalDate getBiggestAmongEndOrDeadline() { - if (this.getDeadline() != null) { - return Collections.max(asList(this.getDeadline(), - this.getEndAsLocalDate())); + if ( this.getDeadline() != null ) { + return Collections.max(asList(this.getDeadline(), this.getEndAsLocalDate())); } + return this.getEndAsLocalDate(); } @@ -149,8 +150,7 @@ public abstract class TaskElement extends BaseEntity { return create(taskElement); } - protected static T createWithoutTaskSource( - T taskElement) { + protected static T createWithoutTaskSource(T taskElement) { return create(taskElement); } @@ -185,7 +185,7 @@ public abstract class TaskElement extends BaseEntity { private Boolean updatedFromTimesheets = false; public void initializeDatesIfNeeded() { - if (getIntraDayEndDate() == null || getIntraDayStartDate() == null) { + if ( getIntraDayEndDate() == null || getIntraDayStartDate() == null ) { initializeDates(); } } @@ -203,9 +203,10 @@ public abstract class TaskElement extends BaseEntity { } public Integer getWorkHours() { - if (taskSource == null) { + if ( taskSource == null ) { return 0; } + return taskSource.getTotalHours(); } @@ -236,7 +237,7 @@ public abstract class TaskElement extends BaseEntity { } protected void copyParenTo(TaskElement result) { - if (this.getParent() != null) { + if ( this.getParent() != null ) { this.getParent().addTaskElement(result); } } @@ -259,7 +260,7 @@ public abstract class TaskElement extends BaseEntity { public void setName(String name) { this.name = name; - if (taskSource != null && taskSource.getOrderElement() != null) { + if ( taskSource != null && taskSource.getOrderElement() != null ) { taskSource.getOrderElement().setName(name); } } @@ -273,9 +274,10 @@ public abstract class TaskElement extends BaseEntity { } public OrderElement getOrderElement() { - if (getTaskSource() == null) { + if ( getTaskSource() == null ) { return null; } + return getTaskSource().getOrderElement(); } @@ -288,18 +290,16 @@ public abstract class TaskElement extends BaseEntity { } public Set getDependenciesWithThisDestinationAndAllParents() { - Set result = new HashSet( - getDependenciesWithThisDestination()); - if (parent != null) { - result.addAll(parent - .getDependenciesWithThisDestinationAndAllParents()); + Set result = new HashSet(getDependenciesWithThisDestination()); + if ( parent != null ) { + result.addAll(parent.getDependenciesWithThisDestinationAndAllParents()); } + return result; } public Date getStartDate() { - return startDate != null ? startDate.getDate().toDateTimeAtStartOfDay() - .toDate() : null; + return startDate != null ? startDate.getDate().toDateTimeAtStartOfDay().toDate() : null; } @NotNull @@ -419,26 +419,25 @@ public abstract class TaskElement extends BaseEntity { public void setDeadline(LocalDate deadline) { this.deadline = deadline; - if (taskSource != null && taskSource.getOrderElement() != null) { + if ( taskSource != null && taskSource.getOrderElement() != null ) { taskSource.getOrderElement().setDeadline( - (deadline == null)? null : deadline.toDateMidnight().toDate()); + (deadline == null)? null : deadline.toDateTimeAtStartOfDay().toDate()); } } public void add(Dependency dependency) { - if (this.equals(dependency.getOrigin())) { + if ( this.equals(dependency.getOrigin()) ) { dependenciesWithThisOrigin.add(dependency); } - if (this.equals(dependency.getDestination())) { + if ( this.equals(dependency.getDestination()) ) { dependenciesWithThisDestination.add(dependency); } } private void removeDependenciesWithThisOrigin(TaskElement origin, Type type) { - ArrayList toBeRemoved = new ArrayList(); + ArrayList toBeRemoved = new ArrayList<>(); for (Dependency dependency : dependenciesWithThisDestination) { - if (dependency.getOrigin().equals(origin) - && dependency.getType().equals(type)) { + if ( dependency.getOrigin().equals(origin) && dependency.getType().equals(type) ) { toBeRemoved.add(dependency); } } @@ -448,8 +447,7 @@ public abstract class TaskElement extends BaseEntity { public void removeDependencyWithDestination(TaskElement destination, Type type) { ArrayList toBeRemoved = new ArrayList(); for (Dependency dependency : dependenciesWithThisOrigin) { - if (dependency.getDestination().equals(destination) - && dependency.getType().equals(type)) { + if ( dependency.getDestination().equals(destination) && dependency.getType().equals(type) ) { toBeRemoved.add(dependency); } } @@ -471,7 +469,7 @@ public abstract class TaskElement extends BaseEntity { } public void detachFromParent() { - if (parent != null) { + if ( parent != null ) { parent.remove(this); } } @@ -487,22 +485,23 @@ public abstract class TaskElement extends BaseEntity { } private List getDependenciesWithDestination(TaskElement t) { - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); for (Dependency dependency : dependenciesWithThisOrigin) { - if (dependency.getDestination().equals(t)) { + if ( dependency.getDestination().equals(t) ) { result.add(dependency); } } + return result; } private List getDependenciesWithOrigin(TaskElement t) { - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); for (Dependency dependency : dependenciesWithThisDestination) { - if (dependency.getOrigin().equals(t)) { - result.add(dependency); + if ( dependency.getOrigin().equals(t) ) {result.add(dependency); } } + return result; } @@ -515,7 +514,7 @@ public abstract class TaskElement extends BaseEntity { Set tasksToNotify = new HashSet(); for (Dependency dependency : dependenciesWithThisDestination) { TaskElement origin = dependency.getOrigin(); - if (origin != null) { + if ( origin != null ) { tasksToNotify.add(origin); } } @@ -529,7 +528,7 @@ public abstract class TaskElement extends BaseEntity { Set tasksToNotify = new HashSet(); for (Dependency dependency : dependenciesWithThisOrigin) { TaskElement destination = dependency.getDestination(); - if (destination != null) { + if ( destination != null ) { tasksToNotify.add(destination); } } @@ -548,11 +547,11 @@ public abstract class TaskElement extends BaseEntity { } public BaseCalendar getCalendar() { - if (calendar == null) { + if ( calendar == null ) { OrderElement orderElement = getOrderElement(); - return orderElement != null ? orderElement.getOrder().getCalendar() - : null; + return orderElement != null ? orderElement.getOrder().getCalendar() : null; } + return calendar; } @@ -561,13 +560,13 @@ public abstract class TaskElement extends BaseEntity { public abstract Set> getAllResourceAllocations(); public SortedMap getDurationsAssignedByDay() { - SortedMap result = new TreeMap(); + SortedMap result = new TreeMap<>(); for (ResourceAllocation resourceAllocation : getSatisfiedResourceAllocations()) { - for (DayAssignment each : resourceAllocation - .getAssignments()) { + for (DayAssignment each : resourceAllocation.getAssignments()) { addToResult(result, each.getDay(), each.getDuration()); } } + return result; } @@ -577,7 +576,7 @@ public abstract class TaskElement extends BaseEntity { } public List getDayAssignments(DayAssignment.FilterType filter) { - List dayAssignments = new ArrayList(); + List dayAssignments = new ArrayList<>(); Set> resourceAllocations = getSatisfiedResourceAllocations(); for (ResourceAllocation resourceAllocation : resourceAllocations) { @@ -623,6 +622,7 @@ public abstract class TaskElement extends BaseEntity { while (result.getParent() != null) { result = result.getParent(); } + return result; } @@ -641,30 +641,33 @@ public abstract class TaskElement extends BaseEntity { //simplified calculation has only two states: //unassigned, when hours allocated is zero, and //assigned otherwise - if (getSumOfAssignedEffort().isZero()) { + if ( getSumOfAssignedEffort().isZero() ) { return "unassigned"; } + return "assigned"; } Set> resourceAllocations = getSatisfiedResourceAllocations(); - if (resourceAllocations.isEmpty()) { + if ( resourceAllocations.isEmpty() ) { return "unassigned"; } for (ResourceAllocation resourceAllocation : resourceAllocations) { final ResourcesPerDay resourcesPerDay = resourceAllocation.getResourcesPerDay(); - if (resourcesPerDay != null && resourcesPerDay.isZero()) { + if ( resourcesPerDay != null && resourcesPerDay.isZero() ) { return "partially-assigned"; } } + return "assigned"; } public Boolean belongsClosedProject() { EnumSet CLOSED = EnumSet.of(OrderStatusEnum.CANCELLED, - OrderStatusEnum.FINISHED, OrderStatusEnum.STORED); + OrderStatusEnum.FINISHED, + OrderStatusEnum.STORED); Order order = getOrderElement().getOrder(); - if(CLOSED.contains(order.getState())) { + if( CLOSED.contains(order.getState()) ) { return true; } @@ -686,8 +689,7 @@ public abstract class TaskElement extends BaseEntity { } public BigDecimal getAdvancePercentage() { - return (advancePercentage == null) ? BigDecimal.ZERO - : advancePercentage; + return (advancePercentage == null) ? BigDecimal.ZERO : advancePercentage; } /** @@ -697,10 +699,10 @@ public abstract class TaskElement extends BaseEntity { * depending on parameter */ public BigDecimal getAdvancePercentage(ProgressType progressType) { - if (progressType != null - && progressType.equals(ProgressType.SPREAD_PROGRESS)) { + if ( progressType != null && progressType.equals(ProgressType.SPREAD_PROGRESS) ) { return advancePercentage; } + return BigDecimal.ZERO; } @@ -716,7 +718,7 @@ public abstract class TaskElement extends BaseEntity { } public EffortDuration getSumOfAssignedEffort() { - if (this.getParent() == null) { + if ( this.getParent() == null ) { //it's an order, we use the cached value return sumOfAssignedEffort; } @@ -746,6 +748,7 @@ public abstract class TaskElement extends BaseEntity { result.add(child); result.addAll(child.getAllChildren()); } + return result; } @@ -753,12 +756,13 @@ public abstract class TaskElement extends BaseEntity { public BigDecimal getTheoreticalAdvancePercentageUntilDate(Date date) { EffortDuration totalAllocatedTime = AggregateOfDayAssignments.create( - this.getDayAssignments(FilterType.KEEP_ALL)).getTotalTime(); + this.getDayAssignments(FilterType.KEEP_ALL)).getTotalTime(); EffortDuration totalTheoreticalCompletedTime = this.getTheoreticalCompletedTimeUntilDate(date); - if (totalAllocatedTime.isZero() || totalTheoreticalCompletedTime.isZero()) { + if ( totalAllocatedTime.isZero() || totalTheoreticalCompletedTime.isZero() ) { return BigDecimal.ZERO; } Validate.isTrue(totalTheoreticalCompletedTime.getSeconds() <= totalAllocatedTime.getSeconds()); + return totalTheoreticalCompletedTime.dividedByAndResultAsBigDecimal(totalAllocatedTime); } @@ -779,16 +783,18 @@ public abstract class TaskElement extends BaseEntity { } public BigDecimal getBudget() { - if ((taskSource != null) && (taskSource.getOrderElement() != null)) { + if ( (taskSource != null) && (taskSource.getOrderElement() != null) ) { return taskSource.getOrderElement().getBudget(); } + return null; } public BigDecimal getResourcesBudget() { - if ((taskSource != null) && (taskSource.getOrderElement() != null)) { + if ( (taskSource != null) && (taskSource.getOrderElement() != null) ) { return taskSource.getOrderElement().getResourcesBudget(); } + return null; } @@ -800,52 +806,53 @@ public abstract class TaskElement extends BaseEntity { public TaskDeadlineViolationStatusEnum getDeadlineViolationStatus() { LocalDate deadline = this.getDeadline(); - if (deadline == null) { + if ( deadline == null ) { return TaskDeadlineViolationStatusEnum.NO_DEADLINE; - } else if (this.getEndAsLocalDate().isAfter(deadline)) { + } else if ( this.getEndAsLocalDate().isAfter(deadline) ) { return TaskDeadlineViolationStatusEnum.DEADLINE_VIOLATED; } else { return TaskDeadlineViolationStatusEnum.ON_SCHEDULE; } } - public static IntraDayDate maxDate( - Collection tasksToSave) { + public static IntraDayDate maxDate(Collection tasksToSave) { List endDates = toEndDates(tasksToSave); + return endDates.isEmpty() ? null : Collections.max(endDates); } - private static List toEndDates( - Collection tasksToSave) { - List result = new ArrayList(); + private static List toEndDates(Collection tasksToSave) { + List result = new ArrayList<>(); + for (TaskElement taskElement : tasksToSave) { IntraDayDate endDate = taskElement.getIntraDayEndDate(); - if (endDate != null) { + if ( endDate != null ) { result.add(endDate); } else { LOG.warn("the task" + taskElement + " has null end date"); } } + return result; } - public static IntraDayDate minDate( - Collection tasksToSave) { + public static IntraDayDate minDate(Collection tasksToSave) { List startDates = toStartDates(tasksToSave); + return startDates.isEmpty() ? null : Collections.min(startDates); } - private static List toStartDates( - Collection tasksToSave) { - List result = new ArrayList(); + private static List toStartDates(Collection tasksToSave) { + List result = new ArrayList<>(); for (TaskElement taskElement : tasksToSave) { IntraDayDate startDate = taskElement.getIntraDayStartDate(); - if (startDate != null) { + if ( startDate != null ) { result.add(startDate); } else { LOG.warn("the task" + taskElement + " has null start date"); } } + return result; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/limiting/entities/LimitingResourceAllocator.java b/libreplan-business/src/main/java/org/libreplan/business/planner/limiting/entities/LimitingResourceAllocator.java index 8fade0997..db31e3976 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/limiting/entities/LimitingResourceAllocator.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/limiting/entities/LimitingResourceAllocator.java @@ -73,8 +73,7 @@ public class LimitingResourceAllocator { @Override protected boolean hasNext(boolean currentDateIsLessThanEnd) { - return currentDateIsLessThanEnd - || currentDuration.compareTo(goal) <= 0; + return currentDateIsLessThanEnd || currentDuration.compareTo(goal) <= 0; } public void setCurrent(EffortDuration currentDuration) { @@ -88,8 +87,7 @@ public class LimitingResourceAllocator { } - private final static ResourcesPerDay ONE_RESOURCE_PER_DAY = ResourcesPerDay - .amount(new BigDecimal(1)); + private final static ResourcesPerDay ONE_RESOURCE_PER_DAY = ResourcesPerDay.amount(new BigDecimal(1)); /** * Returns first valid gap in queue for element @@ -103,12 +101,10 @@ public class LimitingResourceAllocator { * @param element element to fit into queue * @return */ - public static Gap getFirstValidGap( - LimitingResourceQueue queue, LimitingResourceQueueElement element) { + public static Gap getFirstValidGap(LimitingResourceQueue queue, LimitingResourceQueueElement element) { final Resource resource = queue.getResource(); - final List elements = new LinkedList( - queue.getLimitingResourceQueueElements()); + final List elements = new LinkedList<>(queue.getLimitingResourceQueueElements()); final int size = elements.size(); final DateAndHour startTime = getStartTimeBecauseOfGantt(element); @@ -119,10 +115,11 @@ public class LimitingResourceAllocator { Gap gap = getGapInQueueAtPosition( resource, elements, startTime, pos++); - if (gap != null) { - List subgaps = getFittingSubgaps( - element, gap, resource); - if (!subgaps.isEmpty()) { + if ( gap != null ) { + + List subgaps = getFittingSubgaps(element, gap, resource); + + if ( !subgaps.isEmpty() ) { return subgaps.get(0); } } @@ -133,42 +130,42 @@ public class LimitingResourceAllocator { return null; } - private static List getFittingSubgaps( - LimitingResourceQueueElement element, - final Gap gap, final Resource resource) { + private static List getFittingSubgaps(LimitingResourceQueueElement element, + final Gap gap, + final Resource resource) { - List result = new ArrayList(); + List result = new ArrayList<>(); - if (isSpecific(element) && gap.canFit(element)) { + if ( isSpecific(element) && gap.canFit(element) ) { result.add(gap); - } else if (isGeneric(element)) { - final List gaps = gap.splitIntoGapsSatisfyingCriteria( - resource, element.getCriteria()); + } else if ( isGeneric(element) ) { + final List gaps = gap.splitIntoGapsSatisfyingCriteria(resource, element.getCriteria()); for (Gap subgap : gaps) { - if (subgap.canFit(element)) { + + if ( subgap.canFit(element) ) { result.add(subgap); } } } + return result; } - public static Gap getFirstValidGapSince( - LimitingResourceQueueElement element, LimitingResourceQueue queue, - DateAndHour since) { + public static Gap getFirstValidGapSince(LimitingResourceQueueElement element, + LimitingResourceQueue queue, + DateAndHour since) { List gaps = getValidGapsForElementSince(element, queue, since); return (!gaps.isEmpty()) ? gaps.get(0) : null; } - public static List getValidGapsForElementSince( - LimitingResourceQueueElement element, LimitingResourceQueue queue, - DateAndHour since) { + public static List getValidGapsForElementSince(LimitingResourceQueueElement element, + LimitingResourceQueue queue, + DateAndHour since) { - List result = new ArrayList(); + List result = new ArrayList<>(); final Resource resource = queue.getResource(); - final List elements = new LinkedList( - queue.getLimitingResourceQueueElements()); + final List elements = new LinkedList<>(queue.getLimitingResourceQueueElements()); final int size = elements.size(); int pos = moveUntil(elements, since); @@ -180,9 +177,8 @@ public class LimitingResourceAllocator { // The queue cannot hold this element (queue.resource // doesn't meet element.criteria) - if (gap != null) { - List subgaps = getFittingSubgaps( - element, gap, resource); + if ( gap != null ) { + List subgaps = getFittingSubgaps(element, gap, resource); result.addAll(subgaps); } } @@ -193,7 +189,7 @@ public class LimitingResourceAllocator { private static int moveUntil(List elements, DateAndHour until) { int pos = 0; - if (elements.size() > 0) { + if ( elements.size() > 0 ) { // Space between until and first element start time LimitingResourceQueueElement first = elements.get(0); if (until.isBefore(first.getStartTime())) { @@ -203,7 +199,8 @@ public class LimitingResourceAllocator { for (pos = 1; pos < elements.size(); pos++) { final LimitingResourceQueueElement each = elements.get(pos); final DateAndHour startTime = each.getStartTime(); - if (until.isBefore(startTime) || until.isEquals(startTime)) { + + if ( until.isBefore(startTime) || until.isEquals(startTime) ) { return pos; } } @@ -221,46 +218,45 @@ public class LimitingResourceAllocator { public static DateAndHour getFirstElementTime(List dayAssignments) { final DayAssignment start = dayAssignments.get(0); - return new DateAndHour(start.getDay(), start.getHours()); + return new DateAndHour(start.getDay(), start.getDuration().getHours()); } public static DateAndHour getLastElementTime(List dayAssignments) { final DayAssignment end = dayAssignments.get(dayAssignments.size() - 1); - return new DateAndHour(end.getDay(), end.getHours()); + return new DateAndHour(end.getDay(), end.getDuration().getHours()); } - private static Gap getGapInQueueAtPosition( - Resource resource, List elements, - DateAndHour startTimeBecauseOfGantt, int pos) { + private static Gap getGapInQueueAtPosition(Resource resource, + List elements, + DateAndHour startTimeBecauseOfGantt, + int pos) { final int size = elements.size(); // No elements in queue - if (size == 0) { + if ( size == 0 ) { return createLastGap(startTimeBecauseOfGantt, null, resource); } // Last element - if (pos == size) { + if ( pos == size ) { return createLastGap(startTimeBecauseOfGantt, elements.get(size - 1), resource); } LimitingResourceQueueElement next = elements.get(pos); // First element - if (pos == 0 - && startTimeBecauseOfGantt.getDate().isBefore( - next.getStartDate())) { - return Gap.create(resource, - startTimeBecauseOfGantt, next.getStartTime()); + if ( pos == 0 && startTimeBecauseOfGantt.getDate().isBefore(next.getStartDate()) ) { + return Gap.create(resource, startTimeBecauseOfGantt, next.getStartTime()); } // In the middle of two elements if (pos > 0) { LimitingResourceQueueElement previous = elements.get(pos - 1); - return Gap.create(resource, DateAndHour - .max(previous.getEndTime(), startTimeBecauseOfGantt), next - .getStartTime()); + return Gap.create(resource, + DateAndHour.max(previous.getEndTime(), + startTimeBecauseOfGantt), + next.getStartTime()); } return null; @@ -270,15 +266,14 @@ public class LimitingResourceAllocator { return new DateAndHour(new LocalDate(element.getEarliestStartDateBecauseOfGantt()), 0); } - private static Gap createLastGap( - DateAndHour _startTime, LimitingResourceQueueElement lastElement, - Resource resource) { + private static Gap createLastGap(DateAndHour _startTime, + LimitingResourceQueueElement lastElement, + Resource resource) { - final DateAndHour queueEndTime = (lastElement != null) ? lastElement - .getEndTime() : null; + final DateAndHour queueEndTime = (lastElement != null) ? lastElement.getEndTime() : null; DateAndHour startTime = DateAndHour.max(_startTime, queueEndTime); - return Gap - .create(resource, startTime, null); + + return Gap.create(resource, startTime, null); } /** @@ -295,44 +290,38 @@ public class LimitingResourceAllocator { * @param startTime * @return */ - public static List generateDayAssignments( - ResourceAllocation resourceAllocation, - Resource resource, - DateAndHour startTime, DateAndHour endsAfter) { + public static List generateDayAssignments(ResourceAllocation resourceAllocation, + Resource resource, + DateAndHour startTime, + DateAndHour endsAfter) { - List assignments = new LinkedList(); + List assignments = new LinkedList<>(); ResourceCalendar calendar = resource.getCalendar(); - final EffortDuration totalEffort = hours(resourceAllocation - .getIntendedTotalHours()); + final EffortDuration totalEffort = hours(resourceAllocation.getIntendedTotalHours()); EffortDuration effortAssigned = zero(); - UntilEndAndEffort condition = new UntilEndAndEffort( - endsAfter.toIntraDayDate(), totalEffort); + UntilEndAndEffort condition = new UntilEndAndEffort(endsAfter.toIntraDayDate(), totalEffort); for (PartialDay each : startTime.toIntraDayDate().daysUntil(condition)) { - EffortDuration effortForDay = EffortDuration.min( - calendar.asDurationOn(each, - ONE_RESOURCE_PER_DAY), totalEffort); - DayAssignment dayAssignment = createDayAssignment( - resourceAllocation, resource, each.getDate(), effortForDay); - effortAssigned = effortAssigned.plus(addDayAssignment(assignments, - dayAssignment)); + EffortDuration effortForDay = EffortDuration.min(calendar.asDurationOn(each, ONE_RESOURCE_PER_DAY), + totalEffort); + DayAssignment dayAssignment = createDayAssignment(resourceAllocation, resource, each.getDate(), + effortForDay); + effortAssigned = effortAssigned.plus(addDayAssignment(assignments, dayAssignment)); condition.setCurrent(effortAssigned); } - if (effortAssigned.compareTo(totalEffort) > 0) { - stripStartAssignments(assignments, - effortAssigned.minus(totalEffort)); + if ( effortAssigned.compareTo(totalEffort) > 0 ) { + stripStartAssignments(assignments, effortAssigned.minus(totalEffort)); } - return new ArrayList(assignments); + return new ArrayList<>(assignments); } - private static void stripStartAssignments(List assignments, - EffortDuration durationSurplus) { + private static void stripStartAssignments(List assignments, EffortDuration durationSurplus) { ListIterator listIterator = assignments.listIterator(); + while (listIterator.hasNext() && durationSurplus.compareTo(zero()) > 0) { DayAssignment current = listIterator.next(); - EffortDuration durationTaken = min(durationSurplus, - current.getDuration()); + EffortDuration durationTaken = min(durationSurplus, current.getDuration()); durationSurplus = durationSurplus.minus(durationTaken); - if (durationTaken.compareTo(current.getDuration()) == 0) { + if ( durationTaken.compareTo(current.getDuration()) == 0 ) { listIterator.remove(); } else { listIterator.set(current.withDuration(durationTaken)); @@ -341,72 +330,70 @@ public class LimitingResourceAllocator { } private static List generateDayAssignmentsStartingFromEnd(ResourceAllocation resourceAllocation, - Resource resource, - DateAndHour endTime) { + Resource resource, + DateAndHour endTime) { ResourceCalendar calendar = resource.getCalendar(); - List result = new ArrayList(); + List result = new ArrayList<>(); LocalDate date = endTime.getDate(); - EffortDuration totalIntended = hours(resourceAllocation - .getIntendedTotalHours()); + EffortDuration totalIntended = hours(resourceAllocation.getIntendedTotalHours()); // Generate last day assignment PartialDay firstDay = new PartialDay(IntraDayDate.startOfDay(date), - IntraDayDate.create(date, hours(endTime.getHour()))); - EffortDuration effortCanAllocate = min(totalIntended, - calendar.asDurationOn(firstDay, ONE_RESOURCE_PER_DAY)); + IntraDayDate.create(date, hours(endTime.getHour()))); + + EffortDuration effortCanAllocate = min(totalIntended, calendar.asDurationOn(firstDay, ONE_RESOURCE_PER_DAY)); + if (effortCanAllocate.compareTo(zero()) > 0) { - DayAssignment dayAssignment = createDayAssignment( - resourceAllocation, resource, date, effortCanAllocate); - totalIntended = totalIntended.minus(addDayAssignment(result, - dayAssignment)); + DayAssignment dayAssignment = createDayAssignment(resourceAllocation, resource, date, effortCanAllocate); + totalIntended = totalIntended.minus(addDayAssignment(result, dayAssignment)); } // Generate rest of day assignments - for (date = date.minusDays(1); totalIntended.compareTo(zero()) > 0; date = date - .minusDays(1)) { - EffortDuration duration = min(totalIntended, calendar.asDurationOn( - PartialDay.wholeDay(date), ONE_RESOURCE_PER_DAY)); - DayAssignment dayAssigment = createDayAssignment( - resourceAllocation, resource, date, duration); - totalIntended = totalIntended.minus(addDayAssignment(result, - dayAssigment)); + for (date = date.minusDays(1); totalIntended.compareTo(zero()) > 0; date = date.minusDays(1)) { + EffortDuration duration = min(totalIntended, + calendar.asDurationOn(PartialDay.wholeDay(date), + ONE_RESOURCE_PER_DAY)); + + DayAssignment dayAssigment = createDayAssignment(resourceAllocation, resource, date, duration); + totalIntended = totalIntended.minus(addDayAssignment(result, dayAssigment)); } + return result; } - private static DayAssignment createDayAssignment( - ResourceAllocation resourceAllocation, Resource resource, - LocalDate date, EffortDuration toAllocate) { - if (resourceAllocation instanceof SpecificResourceAllocation) { + private static DayAssignment createDayAssignment(ResourceAllocation resourceAllocation, + Resource resource, + LocalDate date, + EffortDuration toAllocate) { + if ( resourceAllocation instanceof SpecificResourceAllocation ) { return SpecificDayAssignment.create(date, toAllocate, resource); - } else if (resourceAllocation instanceof GenericResourceAllocation) { + } else if ( resourceAllocation instanceof GenericResourceAllocation ) { return GenericDayAssignment.create(date, toAllocate, resource); } return null; } - private static EffortDuration addDayAssignment(List list, - DayAssignment dayAssignment) { - if (dayAssignment != null) { + private static EffortDuration addDayAssignment(List list, DayAssignment dayAssignment) { + if ( dayAssignment != null ) { list.add(dayAssignment); return dayAssignment.getDuration(); } + return zero(); } - public static DateAndHour startTimeToAllocateStartingFromEnd( - ResourceAllocation resourceAllocation, Resource resource, - Gap gap) { + public static DateAndHour startTimeToAllocateStartingFromEnd(ResourceAllocation resourceAllocation, + Resource resource, + Gap gap) { // Last element, time is end of last element (gap.starttime) - if (gap.getEndTime() == null) { + if ( gap.getEndTime() == null ) { return gap.getStartTime(); } final List dayAssignments = LimitingResourceAllocator - .generateDayAssignmentsStartingFromEnd(resourceAllocation, - resource, gap.getEndTime()); + .generateDayAssignmentsStartingFromEnd(resourceAllocation, resource, gap.getEndTime()); return LimitingResourceAllocator.getLastElementTime(dayAssignments); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/CompletedEstimatedHoursPerTaskDTO.java b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/CompletedEstimatedHoursPerTaskDTO.java index 6cc55bf5f..90a9436af 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/CompletedEstimatedHoursPerTaskDTO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/CompletedEstimatedHoursPerTaskDTO.java @@ -66,9 +66,10 @@ public class CompletedEstimatedHoursPerTaskDTO { public String getTaskName(Task task) { String result = task.getName(); - if (result == null || result.isEmpty()) { + if ( result == null || result.isEmpty() ) { result = task.getOrderElement().getName(); } + return result; } @@ -76,15 +77,16 @@ public class CompletedEstimatedHoursPerTaskDTO { Integer result = new Integer(0); final List dayAssignments = task.getDayAssignments(FilterType.WITHOUT_DERIVED); - if (dayAssignments.isEmpty()) { + if ( dayAssignments.isEmpty() ) { return result; } for (DayAssignment dayAssignment : dayAssignments) { - if (date == null || dayAssignment.getDay().compareTo(date) <= 0) { - result += dayAssignment.getHours(); + if ( date == null || dayAssignment.getDay().compareTo(date) <= 0 ) { + result += dayAssignment.getDuration().getHours(); } } + return result; } @@ -93,16 +95,17 @@ public class CompletedEstimatedHoursPerTaskDTO { final List workReportLines = workReportLineDAO .findByOrderElementAndChildren(task.getOrderElement()); - if (workReportLines.isEmpty()) { + if ( workReportLines.isEmpty() ) { return result; } for (WorkReportLine workReportLine : workReportLines) { final LocalDate workReportLineDate = new LocalDate(workReportLine.getDate()); - if (date == null || workReportLineDate.compareTo(date) <= 0) { + if ( date == null || workReportLineDate.compareTo(date) <= 0 ) { result = EffortDuration.sum(result, workReportLine.getEffort()); } } + return result; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/WorkingProgressPerTaskDTO.java b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/WorkingProgressPerTaskDTO.java index 855607707..2d78349db 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/WorkingProgressPerTaskDTO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/reports/dtos/WorkingProgressPerTaskDTO.java @@ -83,27 +83,28 @@ public class WorkingProgressPerTaskDTO { this.realHours = calculateRealHours(task, date); this.averageProgress = task.getOrderElement().getAdvancePercentage(date); - this.imputedProgress = (totalPlannedHours != 0) ? new Double( -realHours - .toHoursAsDecimalWithScale(2).doubleValue() - / totalPlannedHours.doubleValue()) + this.imputedProgress = (totalPlannedHours != 0) ? + new Double(realHours.toHoursAsDecimalWithScale(2).doubleValue() / totalPlannedHours.doubleValue()) + : new Double(0); + this.plannedProgress = (totalPlannedHours != 0) ? + new Double(partialPlannedHours / totalPlannedHours.doubleValue()) : new Double(0); - this.plannedProgress = (totalPlannedHours != 0) ? new Double(partialPlannedHours / totalPlannedHours.doubleValue()) : new Double(0); this.costDifference = calculateCostDifference(averageProgress, - new BigDecimal(totalPlannedHours), - realHours.toHoursAsDecimalWithScale(2)); + new BigDecimal(totalPlannedHours), + realHours.toHoursAsDecimalWithScale(2)); this.planningDifference = calculatePlanningDifference(averageProgress, - new BigDecimal(totalPlannedHours), new BigDecimal( - partialPlannedHours)); + new BigDecimal(totalPlannedHours), + new BigDecimal(partialPlannedHours)); this.ratioCostDifference = calculateRatioCostDifference(averageProgress, imputedProgress); this.ratioPlanningDifference = calculateRatioPlanningDifference(averageProgress, plannedProgress); } public String getTaskName(Task task) { String result = task.getName(); - if (result == null || result.isEmpty()) { + if ( result == null || result.isEmpty() ) { result = task.getOrderElement().getName(); } + return result; } @@ -111,13 +112,13 @@ realHours Integer result = new Integer(0); final List dayAssignments = task.getDayAssignments(FilterType.WITHOUT_DERIVED); - if (dayAssignments.isEmpty()) { + if ( dayAssignments.isEmpty() ) { return result; } for (DayAssignment dayAssignment : dayAssignments) { - if (date == null || dayAssignment.getDay().compareTo(date) <= 0) { - result += dayAssignment.getHours(); + if ( date == null || dayAssignment.getDay().compareTo(date) <= 0 ) { + result += dayAssignment.getDuration().getHours(); } } return result; @@ -128,13 +129,13 @@ realHours final List workReportLines = workReportLineDAO .findByOrderElementAndChildren(task.getOrderElement()); - if (workReportLines.isEmpty()) { + if ( workReportLines.isEmpty() ) { return result; } for (WorkReportLine workReportLine : workReportLines) { final LocalDate workReportLineDate = new LocalDate(workReportLine.getDate()); - if (date == null || workReportLineDate.compareTo(date) <= 0) { + if ( date == null || workReportLineDate.compareTo(date) <= 0 ) { result = EffortDuration.sum(result, workReportLine.getEffort()); } } @@ -206,30 +207,36 @@ realHours } public BigDecimal calculateCostDifference(BigDecimal averageProgress, - BigDecimal totalPlannedHours, BigDecimal realHours) { + BigDecimal totalPlannedHours, + BigDecimal realHours) { BigDecimal result = averageProgress; result = result.multiply(totalPlannedHours); + return result.subtract(realHours); } public BigDecimal calculatePlanningDifference(BigDecimal averageProgress, - BigDecimal totalPlannedHours, BigDecimal partialPlannedHours) { + BigDecimal totalPlannedHours, + BigDecimal partialPlannedHours) { BigDecimal result = averageProgress; result = result.multiply(totalPlannedHours); + return result.subtract(partialPlannedHours); } public BigDecimal calculateRatioCostDifference(BigDecimal averageProgress, Double imputedProgress) { - if (imputedProgress.doubleValue() == 0) { + if ( imputedProgress.doubleValue() == 0 ) { return new BigDecimal(0); } + return averageProgress.divide(new BigDecimal(imputedProgress), 2, RoundingMode.HALF_UP); } public BigDecimal calculateRatioPlanningDifference(BigDecimal averageProgress, Double plannedProgress) { - if (plannedProgress.doubleValue() == 0) { + if ( plannedProgress.doubleValue() == 0 ) { return new BigDecimal(0); } + return averageProgress.divide(new BigDecimal(plannedProgress), 2, RoundingMode.HALF_UP); } diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DayAssignmentMatchers.java b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DayAssignmentMatchers.java index 97b158d18..5f047bfc9 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DayAssignmentMatchers.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DayAssignmentMatchers.java @@ -49,9 +49,9 @@ public class DayAssignmentMatchers { @Override final public boolean matches(Object value) { - if (value instanceof List) { - List dayAssignments = new ArrayList( - (List) value); + if ( value instanceof List ) { + List dayAssignments = new ArrayList<>((List) value); + return matches(dayAssignments); } return false; @@ -70,48 +70,48 @@ public class DayAssignmentMatchers { @Override public void describeTo(Description description) { - description.appendText("the first assignment must be at date" - + start); + description.appendText("the first assignment must be at date" + start); } - public CombinableMatcher> consecutiveDays( - int days) { - return both(this).and( - DayAssignmentMatchers.consecutiveDays(days)); + public CombinableMatcher> consecutiveDays(int days) { + return both(this).and(DayAssignmentMatchers.consecutiveDays(days)); } @Override protected boolean matches(List assignments) { - return !assignments.isEmpty() - && assignments.get(0).getDay().equals(start); + + return !assignments.isEmpty() && assignments.get(0).getDay().equals(start); } } - public static final Matcher> haveHours( - final int... hours) { + public static final Matcher> haveHours(final int... hours) { return new BaseMatcher>() { @Override public boolean matches(Object value) { - if (value instanceof List) { + if ( value instanceof List ) { + List assignments = (List) value; - if (assignments.size() != hours.length) { + + if ( assignments.size() != hours.length ) { return false; } + for (int i = 0; i < hours.length; i++) { - if (hours[i] != assignments.get(i).getHours()) { + if ( hours[i] != assignments.get(i).getDuration().getHours() ) { return false; } } + return true; } + return false; } @Override public void describeTo(Description description) { - description.appendText("must have hours: " - + Arrays.toString(hours)); + description.appendText("must have hours: " + Arrays.toString(hours)); } }; } @@ -121,15 +121,17 @@ public class DayAssignmentMatchers { @Override public boolean matches(List assignments) { - if (assignments.size() != days) { + if ( assignments.size() != days ) { return false; } - if (days == 0) { + if ( days == 0 ) { return true; } + LocalDate current = assignments.get(0).getDay(); + for (DayAssignment d : assignments) { - if (!d.getDay().equals(current)) { + if ( !d.getDay().equals(current) ) { return false; } current = current.plusDays(1); @@ -139,8 +141,7 @@ public class DayAssignmentMatchers { @Override public void describeTo(Description description) { - description.appendText("it must have " + days - + " days consecutive "); + description.appendText("it must have " + days + " days consecutive "); } }; } @@ -160,27 +161,32 @@ public class DayAssignmentMatchers { @Override protected boolean matches(List assignments) { for (DayAssignment dayAssignment : assignments) { - if (dayAssignment instanceof GenericDayAssignment) { + + if ( dayAssignment instanceof GenericDayAssignment ) { + GenericDayAssignment generic = (GenericDayAssignment) dayAssignment; - if (!allocation.equals(generic - .getGenericResourceAllocation())) { + + if ( !allocation.equals(generic.getGenericResourceAllocation()) ) { return false; } - } else if (dayAssignment instanceof SpecificDayAssignment) { + + } else if ( dayAssignment instanceof SpecificDayAssignment ) { + SpecificDayAssignment specific = (SpecificDayAssignment) dayAssignment; - if (!allocation.equals(specific - .getSpecificResourceAllocation())) { + + if ( !allocation.equals(specific.getSpecificResourceAllocation()) ) { + return false; } } } + return true; } @Override public void describeTo(Description description) { - description.appendText("all must belong to allocation " - + allocation); + description.appendText("all must belong to allocation " + allocation); } }; } diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationGeneratorTest.java b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationGeneratorTest.java index eb770009c..a8ae2b72a 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationGeneratorTest.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationGeneratorTest.java @@ -59,6 +59,7 @@ import org.libreplan.business.resources.entities.MachineWorkersConfigurationUnit import org.libreplan.business.resources.entities.Resource; import org.libreplan.business.resources.entities.Worker; import org.libreplan.business.scenarios.bootstrap.IScenariosBootstrap; +import org.libreplan.business.workingday.EffortDuration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -67,8 +68,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @author Óscar González Fernández */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, - BUSINESS_SPRING_CONFIG_TEST_FILE }) +@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, BUSINESS_SPRING_CONFIG_TEST_FILE }) public class DerivedAllocationGeneratorTest { @Autowired @@ -95,7 +95,7 @@ public class DerivedAllocationGeneratorTest { @SuppressWarnings("unchecked") private void givenFinder(Worker... workers) { IWorkerFinder result = createNiceMock(IWorkerFinder.class); - Collection argument = (Collection) anyObject(); + Collection argument = anyObject(); expect(result.findWorkersMatching(argument)).andReturn( Arrays.asList(workers)).anyTimes(); replay(result); @@ -118,36 +118,34 @@ public class DerivedAllocationGeneratorTest { configurationUnit = result; } - private Set assignmentsFor( - MachineWorkersConfigurationUnit unit, Worker[] workers) { - Set result = new HashSet(); + private Set assignmentsFor(MachineWorkersConfigurationUnit unit, Worker[] workers) { + Set result = new HashSet<>(); for (Worker each : workers) { MachineWorkerAssignment assignment = workerAssignment(unit,each); result.add(assignment); } + return result; } - private MachineWorkerAssignment workerAssignment( - MachineWorkersConfigurationUnit unit, Worker each) { + private MachineWorkerAssignment workerAssignment(MachineWorkersConfigurationUnit unit, Worker each) { MachineWorkerAssignment result = createNiceMock(MachineWorkerAssignment.class); - expect(result.getMachineWorkersConfigurationUnit()).andReturn(unit) - .anyTimes(); + expect(result.getMachineWorkersConfigurationUnit()).andReturn(unit).anyTimes(); expect(result.getWorker()).andReturn(each); - expect(result.getStartDate()).andReturn( - asDate(new LocalDate(2000, 1, 1))).anyTimes(); + expect(result.getStartDate()).andReturn(asDate(new LocalDate(2000, 1, 1))).anyTimes(); expect(result.getFinishDate()).andReturn(null).anyTimes(); replay(result); + return result; } private Worker workerWithAlwaysAssignedHours(int assignedHours){ Worker result = createNiceMock(Worker.class); - expect( - result.getAssignedDurationDiscounting(isA(Map.class), - isA(LocalDate.class))).andReturn(hours(assignedHours)) + expect(result.getAssignedDurationDiscounting(isA(Map.class), isA(LocalDate.class))) + .andReturn(hours(assignedHours)) .anyTimes(); replay(result); + return result; } @@ -156,26 +154,28 @@ public class DerivedAllocationGeneratorTest { } private void givenDayAssignments() { - dayAssignments = new ArrayList(); + dayAssignments = new ArrayList<>(); } private void givenDayAssignments(LocalDate start, int... hours) { - dayAssignments = new ArrayList(); + dayAssignments = new ArrayList<>(); for (int i = 0; i < hours.length; i++) { dayAssignments.add(createAssignment(start.plusDays(i), machine, hours[i])); } } - private DayAssignment createAssignment(LocalDate day, Machine machine, - int hours) { + private DayAssignment createAssignment(LocalDate day, Machine machine, int hours) { DayAssignment dayAssignment = createNiceMock(DayAssignment.class); - expect(dayAssignment.getHours()).andReturn(hours).anyTimes(); + + // expect(dayAssignment.getHours()).andReturn(hours).anyTimes(); expect(dayAssignment.getDuration()).andReturn(hours(hours)).anyTimes(); expect(dayAssignment.getResource()).andReturn(machine).anyTimes(); expect(dayAssignment.getDay()).andReturn(day).anyTimes(); expect(dayAssignment.isAssignedTo(machine)).andReturn(true).anyTimes(); + replay(dayAssignment); + return dayAssignment; } @@ -184,8 +184,7 @@ public class DerivedAllocationGeneratorTest { givenFinder(); givenConfigurationUnit(); givenDayAssignments(); - DerivedAllocationGenerator.generate(derivedFrom, finder, - configurationUnit, dayAssignments); + DerivedAllocationGenerator.generate(derivedFrom, finder, configurationUnit, dayAssignments); } @Test(expected = IllegalArgumentException.class) @@ -193,8 +192,7 @@ public class DerivedAllocationGeneratorTest { givenDerivedFrom(); givenConfigurationUnit(); givenDayAssignments(); - DerivedAllocationGenerator.generate(derivedFrom, finder, - configurationUnit, dayAssignments); + DerivedAllocationGenerator.generate(derivedFrom, finder, configurationUnit, dayAssignments); } @Test(expected = IllegalArgumentException.class) @@ -202,8 +200,7 @@ public class DerivedAllocationGeneratorTest { givenDerivedFrom(); givenFinder(); givenDayAssignments(); - DerivedAllocationGenerator.generate(derivedFrom, finder, - configurationUnit, dayAssignments); + DerivedAllocationGenerator.generate(derivedFrom, finder, configurationUnit, dayAssignments); } @Test(expected = IllegalArgumentException.class) @@ -211,8 +208,7 @@ public class DerivedAllocationGeneratorTest { givenDerivedFrom(); givenFinder(); givenConfigurationUnit(); - DerivedAllocationGenerator.generate(derivedFrom, finder, - configurationUnit, dayAssignments); + DerivedAllocationGenerator.generate(derivedFrom, finder, configurationUnit, dayAssignments); } @Test @@ -222,10 +218,8 @@ public class DerivedAllocationGeneratorTest { givenConfigurationUnit(new BigDecimal(1.5), new Worker()); givenDayAssignments(new LocalDate(2009, 10, 20), 8, 8, 8, 4); DerivedAllocation derivedAllocation = DerivedAllocationGenerator - .generate(derivedFrom, finder, configurationUnit, - dayAssignments); - List assignments = derivedAllocation - .getAssignments(); + .generate(derivedFrom, finder, configurationUnit, dayAssignments); + List assignments = derivedAllocation.getAssignments(); assertThat(assignments, haveHours(12, 12, 12, 6)); } @@ -238,14 +232,11 @@ public class DerivedAllocationGeneratorTest { givenDayAssignments(start, 8, 8, 8, 4); Machine otherMachine = Machine.create(); - dayAssignments - .add(createAssignment(start.plusDays(5), otherMachine, 8)); + dayAssignments.add(createAssignment(start.plusDays(5), otherMachine, 8)); DerivedAllocation derivedAllocation = DerivedAllocationGenerator - .generate(derivedFrom, finder, configurationUnit, - dayAssignments); - List assignments = derivedAllocation - .getAssignments(); + .generate(derivedFrom, finder, configurationUnit, dayAssignments); + List assignments = derivedAllocation.getAssignments(); assertThat(assignments.size(), equalTo(4)); } @@ -258,12 +249,9 @@ public class DerivedAllocationGeneratorTest { givenConfigurationUnit(new BigDecimal(1.5)); givenDayAssignments(new LocalDate(2009, 10, 20), 8, 8, 8, 4); DerivedAllocation derivedAllocation = DerivedAllocationGenerator - .generate(derivedFrom, finder, configurationUnit, - dayAssignments); - List assignments = derivedAllocation - .getAssignments(); - Map> byResource = DayAssignment - .byResourceAndOrdered(assignments); + .generate(derivedFrom, finder, configurationUnit, dayAssignments); + List assignments = derivedAllocation.getAssignments(); + Map> byResource = DayAssignment.byResourceAndOrdered(assignments); assertThat(byResource.get(worker1), haveHours(7, 7, 7, 4)); assertThat(byResource.get(worker2), haveHours(5, 5, 5, 2)); } diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationTest.java b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationTest.java index 4ee0db738..33c95275f 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationTest.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/DerivedAllocationTest.java @@ -50,6 +50,7 @@ import org.libreplan.business.resources.entities.Machine; import org.libreplan.business.resources.entities.MachineWorkersConfigurationUnit; import org.libreplan.business.resources.entities.Resource; import org.libreplan.business.resources.entities.Worker; +import org.libreplan.business.workingday.EffortDuration; /** * @author Óscar González Fernández @@ -81,21 +82,20 @@ public class DerivedAllocationTest { private void givenADerivedAllocation() { givenDerivedFrom(); givenConfigurationUnit(); - derivedAllocation = DerivedAllocation.create(derivedFrom, - configurationUnit); + derivedAllocation = DerivedAllocation.create(derivedFrom, configurationUnit); } private void givenDayAssignments(LocalDate start, Resource resource, int... hours) { givenDayAssignments(derivedAllocation, start, resource, hours); } - private void givenDayAssignments(DerivedAllocation derivedAllocation, - LocalDate start, Resource resource, int... hours) { - dayAssignments = new ArrayList(); + private void givenDayAssignments(DerivedAllocation derivedAllocation, LocalDate start, + Resource resource, int... hours) { + dayAssignments = new ArrayList<>(); for (int i = 0; i < hours.length; i++) { LocalDate current = start.plusDays(i); - DerivedDayAssignment d = DerivedDayAssignment.create(current, - hours[i], resource, derivedAllocation); + DerivedDayAssignment d = DerivedDayAssignment.create(current, EffortDuration.hours(hours[i]), + resource, derivedAllocation); dayAssignments.add(d); } } @@ -116,8 +116,7 @@ public class DerivedAllocationTest { private void givenGenericDerivedFrom(Resource... resources) { derivedFrom = createNiceMock(GenericResourceAllocation.class); GenericResourceAllocation generic = (GenericResourceAllocation) derivedFrom; - expect(generic.getAssociatedResources()).andReturn( - Arrays.asList(resources)); + expect(generic.getAssociatedResources()).andReturn(Arrays.asList(resources)); replay(derivedFrom); } @@ -129,8 +128,7 @@ public class DerivedAllocationTest { public void aDerivedAllocationHasAMachineWorkerConfigurationUnitAndAResourceAllocation() { givenConfigurationUnit(); givenDerivedFrom(); - DerivedAllocation result = DerivedAllocation.create(derivedFrom, - configurationUnit); + DerivedAllocation result = DerivedAllocation.create(derivedFrom, configurationUnit); assertNotNull(result); assertThat(result.getConfigurationUnit(), equalTo(configurationUnit)); assertEquals(result.getDerivedFrom(), derivedFrom); @@ -166,8 +164,7 @@ public class DerivedAllocationTest { public void aJustCreatedDerivedAllocationIsANewObject() { givenDerivedFrom(); givenConfigurationUnit(); - DerivedAllocation result = DerivedAllocation.create(derivedFrom, - configurationUnit); + DerivedAllocation result = DerivedAllocation.create(derivedFrom, configurationUnit); assertTrue(result.isNewObject()); } @@ -176,8 +173,7 @@ public class DerivedAllocationTest { givenADerivedAllocation(); givenDayAssignments(new LocalDate(2008, 12, 1), worker, 8, 8, 8, 8); derivedAllocation.resetAssignmentsTo(dayAssignments); - assertThat(derivedAllocation.getAssignments(), - compareValuesExceptParent(dayAssignments)); + assertThat(derivedAllocation.getAssignments(), compareValuesExceptParent(dayAssignments)); } private Matcher> compareValuesExceptParent( @@ -185,46 +181,47 @@ public class DerivedAllocationTest { return compareValuesExceptParent(Arrays.asList(derivedDayAssignments)); } - private Matcher> compareValuesExceptParent( - final List expected) { + private Matcher> compareValuesExceptParent(final List expected) { return new BaseMatcher>() { @Override public boolean matches(Object object) { - if (!(object instanceof Collection)) { + if ( !(object instanceof Collection) ) { return false; } + Collection arg = (Collection) object; - if (arg.size() != expected.size()) { + if ( arg.size() != expected.size() ) { return false; } + Iterator argIterator = arg.iterator(); - Iterator expectedIterator = expected - .iterator(); + Iterator expectedIterator = expected.iterator(); + while (argIterator.hasNext()) { + DerivedDayAssignment dayAssignment = argIterator.next(); DerivedDayAssignment expectedAssignment = expectedIterator.next(); Resource resource = dayAssignment.getResource(); - Resource expectedResource = expectedAssignment - .getResource(); + Resource expectedResource = expectedAssignment.getResource(); LocalDate day = dayAssignment.getDay(); LocalDate expectedDay = expectedAssignment.getDay(); - int hours = dayAssignment.getHours(); - int expectedHours = expectedAssignment - .getHours(); - if (!resource.equals(expectedResource) - || !day.equals(expectedDay) - || hours != expectedHours) { + + int hours = dayAssignment.getDuration().getHours(); + int expectedHours = expectedAssignment.getDuration().getHours(); + + if ( !resource.equals(expectedResource) || !day.equals(expectedDay) + || hours != expectedHours ) { return false; } } + return true; } @Override public void describeTo(Description description) { - description.appendText("must have the same values than " - + expected); + description.appendText("must have the same values than " + expected); } }; } @@ -233,19 +230,17 @@ public class DerivedAllocationTest { public void theDerivedDayAssignmentsMustBeForTheSameMachine() { givenADerivedAllocation(); final Machine otherMachine = Machine.create(); - givenDayAssignments(new LocalDate(2008, 12, 1), otherMachine, 8, 8, - 8); + givenDayAssignments(new LocalDate(2008, 12, 1), otherMachine, 8, 8, 8); derivedAllocation.resetAssignmentsTo(dayAssignments); } @Test public void whenResettingAssignmentsTheParentIsChanged() { givenADerivedAllocation(); - DerivedAllocation another = DerivedAllocation.create(derivedFrom, - configurationUnit); - givenDayAssignments(another, new LocalDate(2008, 12, 1), worker, 8, 8, - 8); + DerivedAllocation another = DerivedAllocation.create(derivedFrom, configurationUnit); + givenDayAssignments(another, new LocalDate(2008, 12, 1), worker, 8, 8, 8); derivedAllocation.resetAssignmentsTo(dayAssignments); + for (DerivedDayAssignment each : derivedAllocation.getAssignments()) { assertTrue(each.belongsTo(derivedAllocation)); } @@ -259,13 +254,11 @@ public class DerivedAllocationTest { derivedAllocation.resetAssignmentsTo(dayAssignments); final LocalDate startInterval = start.plusDays(2); final LocalDate finishInterval = start.plusDays(4); - DerivedDayAssignment newAssignment = DerivedDayAssignment.create( - startInterval, 3, worker, derivedAllocation); - derivedAllocation.resetAssignmentsTo(startInterval, finishInterval, - Arrays.asList(newAssignment)); - assertThat(derivedAllocation.getAssignments(), - compareValuesExceptParent(dayAssignments.get(0), dayAssignments - .get(1), newAssignment)); + DerivedDayAssignment newAssignment = DerivedDayAssignment.create(startInterval, EffortDuration.hours(3), + worker, derivedAllocation); + derivedAllocation.resetAssignmentsTo(startInterval, finishInterval, Arrays.asList(newAssignment)); + assertThat(derivedAllocation.getAssignments(), compareValuesExceptParent( + dayAssignments.get(0), dayAssignments.get(1), newAssignment)); } @Test @@ -274,10 +267,9 @@ public class DerivedAllocationTest { LocalDate start = new LocalDate(2008, 12, 1); givenDayAssignments(start, worker, 8, 8, 8, 8); derivedAllocation.resetAssignmentsTo(dayAssignments); - DerivedDayAssignment newAssignment = DerivedDayAssignment.create(start - .minusDays(1), 3, worker, derivedAllocation); - derivedAllocation.resetAssignmentsTo(start, start.plusDays(4), Arrays - .asList(newAssignment)); + DerivedDayAssignment newAssignment = DerivedDayAssignment.create( + start.minusDays(1), EffortDuration.hours(3), worker, derivedAllocation); + derivedAllocation.resetAssignmentsTo(start, start.plusDays(4), Arrays.asList(newAssignment)); assertTrue(derivedAllocation.getAssignments().isEmpty()); } @@ -291,10 +283,8 @@ public class DerivedAllocationTest { @Test public void asDerivedFromChangesTheDerivedFromProperty() { givenADerivedAllocation(); - ResourceAllocation newDerivedFrom = GenericResourceAllocation - .create(); - DerivedAllocation modified = derivedAllocation - .asDerivedFrom(newDerivedFrom); + ResourceAllocation newDerivedFrom = GenericResourceAllocation.create(); + DerivedAllocation modified = derivedAllocation.asDerivedFrom(newDerivedFrom); assertEquals(newDerivedFrom, modified.getDerivedFrom()); } diff --git a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/GenericResourceAllocationTest.java b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/GenericResourceAllocationTest.java index 76185a7f6..126a66f50 100644 --- a/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/GenericResourceAllocationTest.java +++ b/libreplan-business/src/test/java/org/libreplan/business/test/planner/entities/GenericResourceAllocationTest.java @@ -496,7 +496,7 @@ public class GenericResourceAllocationTest { genericResourceAllocation.forResources(Arrays.asList(worker1)).allocate(ResourcesPerDay.amount(2)); List orderedAssignmentsFor = genericResourceAllocation.getOrderedAssignmentsFor(worker1); - assertThat(orderedAssignmentsFor.get(0).getHours(), equalTo(standardHoursPerDay * 2)); + assertThat(orderedAssignmentsFor.get(0).getDuration().getHours(), equalTo(standardHoursPerDay * 2)); } @Test @@ -531,7 +531,7 @@ public class GenericResourceAllocationTest { genericResourceAllocation.forResources(Arrays.asList(worker1)).allocate(ResourcesPerDay.amount(1)); List assigmments = genericResourceAllocation.getOrderedAssignmentsFor(worker1); - assertThat(assigmments.get(0).getHours(), equalTo(defaultWorkableHours)); + assertThat(assigmments.get(0).getDuration().getHours(), equalTo(defaultWorkableHours)); } @Test diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java index f78420b4d..c8a839abf 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java @@ -216,21 +216,16 @@ public class OrderCRUDController extends GenericForwardComposer { comp.setVariable("controller", this, true); // Configuration of the order filter - Component filterComponent = Executions.createComponents( - "/orders/_orderFilter.zul", orderFilter, - new HashMap()); + Component filterComponent = Executions.createComponents("/orders/_orderFilter.zul", + orderFilter, + new HashMap()); filterComponent.setVariable("orderFilterController", this, true); - filterStartDate = (Datebox) filterComponent - .getFellow("filterStartDate"); - filterFinishDate = (Datebox) filterComponent - .getFellow("filterFinishDate"); - bdFilters = (BandboxMultipleSearch) filterComponent - .getFellow("bdFilters"); - checkIncludeOrderElements = (Checkbox) filterComponent - .getFellow("checkIncludeOrderElements"); + filterStartDate = (Datebox) filterComponent.getFellow("filterStartDate"); + filterFinishDate = (Datebox) filterComponent.getFellow("filterFinishDate"); + bdFilters = (BandboxMultipleSearch) filterComponent.getFellow("bdFilters"); + checkIncludeOrderElements = (Checkbox) filterComponent.getFellow("checkIncludeOrderElements"); - filterProjectName = (Textbox) filterComponent - .getFellow("filterProjectName"); + filterProjectName = (Textbox) filterComponent.getFellow("filterProjectName"); checkCreationPermissions(); setupGlobalButtons(); @@ -238,31 +233,31 @@ public class OrderCRUDController extends GenericForwardComposer { } private void initializeFilter() { - Date startDate = (Date) FilterUtils.readProjectsStartDate(); + Date startDate = FilterUtils.readProjectsStartDate(); Date endDate = FilterUtils.readProjectsEndDate(); boolean calculateStartDate = (startDate == null); boolean calculateEndDate = (endDate == null); // Filter predicate needs to be calculated based on the projects dates - if ((calculateStartDate) || (calculateEndDate)) { + if ( (calculateStartDate) || (calculateEndDate) ) { User user = orderModel.getUser(); // Calculate filter based on user preferences - if (user != null) { - if ((startDate == null) - && !FilterUtils.hasProjectsStartDateChanged() - && (user.getProjectsFilterPeriodSince() != null)) { + if ( user != null ) { + if ( (startDate == null ) && !FilterUtils.hasProjectsStartDateChanged() && + (user.getProjectsFilterPeriodSince() != null)) { startDate = new LocalDate() .minusMonths(user.getProjectsFilterPeriodSince()) - .toDateTimeAtStartOfDay().toDate(); + .toDateTimeAtStartOfDay() + .toDate(); } - if ((endDate == null) - && !FilterUtils.hasProjectsEndDateChanged() - && (user.getProjectsFilterPeriodTo() != null)) { + if ( (endDate == null ) && !FilterUtils.hasProjectsEndDateChanged() && + (user.getProjectsFilterPeriodTo() != null)) { endDate = new LocalDate() .plusMonths(user.getProjectsFilterPeriodTo()) - .toDateMidnight().toDate(); + .toDateTimeAtStartOfDay() + .toDate(); } } } @@ -276,8 +271,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void loadLabels() { - List sessionFilters = FilterUtils - .readProjectsParameters(); + List sessionFilters = FilterUtils.readProjectsParameters(); // Allow labels when list is empty if ( sessionFilters != null ) { bdFilters.addSelectedElements(toOrderFilterEnum(sessionFilters)); @@ -288,32 +282,30 @@ public class OrderCRUDController extends GenericForwardComposer { // Calculate filter based on user preferences if ( (user != null) && (user.getProjectsFilterLabel() != null) ) { bdFilters.addSelectedElement(new FilterPair(OrderFilterEnum.Label, - user.getProjectsFilterLabel().getFinderPattern(), - user.getProjectsFilterLabel())); + user.getProjectsFilterLabel().getFinderPattern(), + user.getProjectsFilterLabel())); } } private List toOrderFilterEnum(List filterPairs) { - List result = new ArrayList(); + List result = new ArrayList<>(); for (FilterPair filterPair : filterPairs) { - TaskGroupFilterEnum type = (TaskGroupFilterEnum) filterPair - .getType(); + TaskGroupFilterEnum type = (TaskGroupFilterEnum) filterPair.getType(); switch (type) { case Label: - result.add(new FilterPair(OrderFilterEnum.Label, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(OrderFilterEnum.Label, filterPair.getPattern(), filterPair.getValue())); break; case Criterion: - result.add(new FilterPair(OrderFilterEnum.Criterion, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(OrderFilterEnum.Criterion, filterPair.getPattern(), filterPair.getValue())); break; case ExternalCompany: result.add(new FilterPair(OrderFilterEnum.ExternalCompany, - filterPair.getPattern(), filterPair.getValue())); + filterPair.getPattern(), + filterPair.getValue()) + ); break; case State: - result.add(new FilterPair(OrderFilterEnum.State, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(OrderFilterEnum.State, filterPair.getPattern(), filterPair.getValue())); break; default: } @@ -322,8 +314,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void setupGlobalButtons() { - Hbox perspectiveButtonsInsertionPoint = (Hbox) page - .getFellow("perspectiveButtonsInsertionPoint"); + Hbox perspectiveButtonsInsertionPoint = (Hbox) page.getFellow("perspectiveButtonsInsertionPoint"); saveOrderAndContinueButton.addEventListener(Events.ON_CLICK, new EventListener() { @@ -338,8 +329,7 @@ public class OrderCRUDController extends GenericForwardComposer { @Override public void onEvent(Event event) throws Exception { try { - Messagebox - .show(_("Unsaved changes will be lost. Are you sure?"), + Messagebox.show(_("Unsaved changes will be lost. Are you sure?"), _("Confirm exit dialog"), Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, @@ -349,8 +339,7 @@ public class OrderCRUDController extends GenericForwardComposer { if (evt.getName().equals( "onOK")) { ConfirmCloseUtil.resetConfirmClose(); - Executions - .sendRedirect("/planner/index.zul;company_scheduling"); + Executions.sendRedirect("/planner/index.zul;company_scheduling"); } } }); @@ -367,26 +356,26 @@ public class OrderCRUDController extends GenericForwardComposer { Map editOrderElementArgs = new HashMap(); editOrderElementArgs.put("top_id", "editOrderElement"); - editOrderElementWindow = (Window) Executions.createComponents( - "/orders/_editOrderElement.zul", parent, editOrderElementArgs); + editOrderElementWindow = (Window) Executions.createComponents("/orders/_editOrderElement.zul", + parent, + editOrderElementArgs); Util.createBindingsFor(editOrderElementWindow); Util.reloadBindings(editOrderElementWindow); } private void addEditWindowIfNecessary() { - if (editWindow != null) { + if ( editWindow != null ) { return; } listWindow.setVisible(false); cachedOnlyOneVisible = null; - Map editWindowArgs = new HashMap(); + Map editWindowArgs = new HashMap<>(); editWindowArgs.put("top_id", "editWindow"); Component parent = listWindow.getParent(); - editWindow = (Window) Executions.createComponents( - "/orders/_edition.zul", parent, editWindowArgs); + editWindow = (Window) Executions.createComponents("/orders/_edition.zul", parent, editWindowArgs); Util.createBindingsFor(editWindow); Util.reloadBindings(editWindow); @@ -414,9 +403,10 @@ public class OrderCRUDController extends GenericForwardComposer { private void fillSchedulingModes() { List options = schedulingMode.getChildren(); - if (options != null && options.isEmpty()) { + if ( options != null && options.isEmpty() ) { schedulingMode.appendChild(createCombo(SchedulingMode.FORWARD, _("Forward"), _("Schedule from start to deadline"))); + schedulingMode.appendChild(createCombo( SchedulingMode.BACKWARDS, _("Backwards"), _("Schedule from deadline to start"))); @@ -428,7 +418,7 @@ public class OrderCRUDController extends GenericForwardComposer { List items = schedulingMode.getItems(); SchedulingMode currentMode = getOrder().getSchedulingMode(); for (Comboitem each : items) { - if (each.getValue().equals(currentMode)) { + if ( each.getValue().equals(currentMode) ) { schedulingMode.setSelectedItem(each); setConstraintsFor(currentMode); return; @@ -473,8 +463,7 @@ public class OrderCRUDController extends GenericForwardComposer { comp, _("Starting date cannot be empty in forward mode")); } - if (orderModel - .isAnyTaskWithConstraint(PositionConstraintType.AS_SOON_AS_POSSIBLE)) { + if ( orderModel.isAnyTaskWithConstraint(PositionConstraintType.AS_SOON_AS_POSSIBLE) ) { throw new WrongValueException(comp, _("Starting date cannot be empty because there is a task with constraint \"as soon as possible\"")); } @@ -488,14 +477,12 @@ public class OrderCRUDController extends GenericForwardComposer { throws WrongValueException { if (value == null) { if (mode == SchedulingMode.BACKWARDS) { - throw new WrongValueException( - comp, - _("Deadline cannot be empty in backwards mode")); + throw new WrongValueException(comp, _("Deadline cannot be empty in backwards mode")); } - if (orderModel - .isAnyTaskWithConstraint(PositionConstraintType.AS_LATE_AS_POSSIBLE)) { + if (orderModel.isAnyTaskWithConstraint(PositionConstraintType.AS_LATE_AS_POSSIBLE)) { throw new WrongValueException(comp, - _("Deadline cannot be empty because there is a task with constraint \"as late as possible\"")); + _("Deadline cannot be empty because there is a task with constraint " + + "\"as late as possible\"")); } } } @@ -509,8 +496,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void bindListOrderStatusSelectToOnStatusChange() { - Listbox listOrderStatus = (Listbox) editWindow - .getFellow("listOrderStatus"); + Listbox listOrderStatus = (Listbox) editWindow.getFellow("listOrderStatus"); listOrderStatus.addEventListener(Events.ON_SELECT, new EventListener() { @Override public void onEvent(Event event) { @@ -520,15 +506,15 @@ public class OrderCRUDController extends GenericForwardComposer { } public void setupOrderElementTreeController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - if (orderElementTreeController == null) { + if ( orderElementTreeController == null ) { // Create order element edit window OrderElementController orderElementController = new OrderElementController(); - if (editOrderElementWindow == null) { + if ( editOrderElementWindow == null ) { initEditOrderElementWindow(); } try { @@ -539,10 +525,10 @@ public class OrderCRUDController extends GenericForwardComposer { } // Prepare tree, attach edit window to tree - orderElementTreeController = new OrderElementTreeController( - orderModel, orderElementController, messagesForUser); - TreeComponent orderElementsTree = (TreeComponent) editWindow - .getFellow("orderElementTree"); + orderElementTreeController = new OrderElementTreeController(orderModel, + orderElementController, + messagesForUser); + TreeComponent orderElementsTree = (TreeComponent) editWindow.getFellow("orderElementTree"); orderElementTreeController.setTreeComponent(orderElementsTree); orderElementsTree.useController(orderElementTreeController); orderElementTreeController.setReadOnly(readOnly); @@ -572,11 +558,10 @@ public class OrderCRUDController extends GenericForwardComposer { * Operations to do before to change the selected tab */ private boolean confirmLastTab() { - if (getCurrentTab() != null) { + if ( getCurrentTab() != null ) { // Confirm advances tab. - if (getCurrentTab().getId().equals("tabAdvances")) { - if (manageOrderElementAdvancesController != null - && !manageOrderElementAdvancesController.save()) { + if ( getCurrentTab().getId().equals("tabAdvances") ) { + if ( manageOrderElementAdvancesController != null && !manageOrderElementAdvancesController.save() ) { resetSelectedTab(); selectTab("tabAdvances"); return false; @@ -594,13 +579,12 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedHoursToOrderElementController assignedHoursController; public void setupAssignedHoursToOrderElementController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - Component orderElementHours = editWindow - .getFellowIfAny("orderElementHours"); + Component orderElementHours = editWindow.getFellowIfAny("orderElementHours"); if (assignedHoursController == null) { assignedHoursController = (AssignedHoursToOrderElementController) orderElementHours .getVariable("assignedHoursToOrderElementController", true); @@ -617,14 +601,13 @@ public class OrderCRUDController extends GenericForwardComposer { private ManageOrderElementAdvancesController manageOrderElementAdvancesController; public void setupManageOrderElementAdvancesController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - Component orderElementAdvances = editWindow - .getFellowIfAny("orderElementAdvances"); - if (manageOrderElementAdvancesController == null) { + Component orderElementAdvances = editWindow.getFellowIfAny("orderElementAdvances"); + if ( manageOrderElementAdvancesController == null ) { final IOrderElementModel orderElementModel = getOrderElementModel(); manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) orderElementAdvances .getVariable("manageOrderElementAdvancesController", true); @@ -639,14 +622,14 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedLabelsToOrderElementController assignedLabelsController; public void setupAssignedLabelsToOrderElementController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - if (assignedLabelsController == null) { - LabelsAssignmentToOrderElementComponent labelsAssignment = (LabelsAssignmentToOrderElementComponent) editWindow - .getFellow("orderElementLabels"); + if ( assignedLabelsController == null ) { + LabelsAssignmentToOrderElementComponent labelsAssignment = + (LabelsAssignmentToOrderElementComponent) editWindow.getFellow("orderElementLabels"); assignedLabelsController = labelsAssignment.getController(); final IOrderElementModel orderElementModel = getOrderElementModel(); @@ -657,20 +640,19 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedCriterionRequirementToOrderElementController assignedCriterionRequirementController; public void setupAssignedCriterionRequirementsToOrderElementController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - if (assignedCriterionRequirementController == null) { - Component orderElementCriterionRequirements = editWindow - .getFellowIfAny("orderElementCriterionRequirements"); - assignedCriterionRequirementController = (AssignedCriterionRequirementToOrderElementController) orderElementCriterionRequirements + if ( assignedCriterionRequirementController == null ) { + Component orderElementCriterionRequirements = editWindow.getFellowIfAny("orderElementCriterionRequirements"); + assignedCriterionRequirementController = + (AssignedCriterionRequirementToOrderElementController) orderElementCriterionRequirements .getVariable("assignedCriterionRequirementController", true); final IOrderElementModel orderElementModel = getOrderElementModel(); - assignedCriterionRequirementController - .openWindow(orderElementModel); + assignedCriterionRequirementController.openWindow(orderElementModel); } else { reloadHoursGroupOrder(); } @@ -679,19 +661,18 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedMaterialsToOrderElementController assignedMaterialsController; public void setupAssignedMaterialsToOrderElementController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - if (assignedMaterialsController == null) { - OrderElementMaterialAssignmentsComponent assignmentsComponent = (OrderElementMaterialAssignmentsComponent) editWindow - .getFellowIfAny("orderElementMaterials"); + if ( assignedMaterialsController == null ) { + OrderElementMaterialAssignmentsComponent assignmentsComponent = + (OrderElementMaterialAssignmentsComponent) editWindow.getFellowIfAny("orderElementMaterials"); assignedMaterialsController = assignmentsComponent.getController(); final IOrderElementModel orderElementModel = getOrderElementModel(); - assignedMaterialsController.openWindow(orderElementModel - .getOrderElement()); + assignedMaterialsController.openWindow(orderElementModel.getOrderElement()); } } @@ -706,7 +687,8 @@ public class OrderCRUDController extends GenericForwardComposer { Component orderElementTaskQualityForms = editWindow.getFellowIfAny("orderElementTaskQualityForms"); if ( assignedTaskQualityFormController == null ) { - assignedTaskQualityFormController = (AssignedTaskQualityFormsToOrderElementController) orderElementTaskQualityForms + assignedTaskQualityFormController = + (AssignedTaskQualityFormsToOrderElementController) orderElementTaskQualityForms .getVariable("assignedTaskQualityFormsController", true); final IOrderElementModel orderElementModel = getOrderElementModel(); @@ -728,8 +710,7 @@ public class OrderCRUDController extends GenericForwardComposer { Component orderFiles = editWindow.getFellowIfAny("orderElementFiles"); if ( orderFilesController == null ){ - orderFilesController = (OrderFilesController) orderFiles - .getVariable("orderFilesController", true); + orderFilesController = (OrderFilesController) orderFiles.getVariable("orderFilesController", true); final IOrderElementModel orderElementModel = getOrderElementModel(); @@ -743,18 +724,17 @@ public class OrderCRUDController extends GenericForwardComposer { private OrderAuthorizationController orderAuthorizationController; public void setupOrderAuthorizationController() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); - Component orderElementAuthorizations = editWindow - .getFellowIfAny("orderElementAuthorizations"); + Component orderElementAuthorizations = editWindow.getFellowIfAny("orderElementAuthorizations"); if (orderAuthorizationController == null) { - orderAuthorizationController = (OrderAuthorizationController) orderElementAuthorizations + orderAuthorizationController = + (OrderAuthorizationController) orderElementAuthorizations .getVariable("orderAuthorizationController", true); - orderAuthorizationController - .setMessagesForUserComponent(messagesForUser); + orderAuthorizationController.setMessagesForUserComponent(messagesForUser); initOrderAuthorizations(); } else { Util.createBindingsFor(orderElementAuthorizations); @@ -766,19 +746,17 @@ public class OrderCRUDController extends GenericForwardComposer { Component orderElementAuthorizations = editWindow .getFellowIfAny("orderElementAuthorizations"); final Order order = orderModel.getOrder(); - if (order.isNewObject()) { - orderAuthorizationController.initCreate(orderModel - .getPlanningState()); + if ( order.isNewObject() ) { + orderAuthorizationController.initCreate(orderModel.getPlanningState()); } else { - orderAuthorizationController - .initEdit(orderModel.getPlanningState()); + orderAuthorizationController.initEdit(orderModel.getPlanningState()); } Util.createBindingsFor(orderElementAuthorizations); Util.reloadBindings(orderElementAuthorizations); } public List getOrders() { - if (checkIncludeOrderElements.isChecked()) { + if ( checkIncludeOrderElements.isChecked() ) { return orderModel.getOrders(); } @@ -786,13 +764,12 @@ public class OrderCRUDController extends GenericForwardComposer { } private List getOrdersFiltered() { - List labels = new ArrayList(); - List criteria = new ArrayList(); + List labels = new ArrayList<>(); + List criteria = new ArrayList<>(); ExternalCompany customer = null; OrderStatusEnum state = null; - for (FilterPair filterPair : (List) bdFilters - .getSelectedElements()) { + for (FilterPair filterPair : (List) bdFilters.getSelectedElements()) { OrderFilterEnum type = (OrderFilterEnum) filterPair.getType(); switch (type) { case Label: @@ -803,7 +780,7 @@ public class OrderCRUDController extends GenericForwardComposer { criteria.add((Criterion) filterPair.getValue()); break; case ExternalCompany: - if (customer != null) { + if ( customer != null ) { // It's impossible to have an Order associated to more than // 1 customer return Collections.emptyList(); @@ -811,7 +788,7 @@ public class OrderCRUDController extends GenericForwardComposer { customer = (ExternalCompany) filterPair.getValue(); break; case State: - if (state != null) { + if ( state != null ) { // It's impossible to have an Order associated with more // than 1 state return Collections.emptyList(); @@ -829,6 +806,7 @@ public class OrderCRUDController extends GenericForwardComposer { if (cachedOnlyOneVisible == null) { cachedOnlyOneVisible = new OnlyOneVisible(listWindow); } + return cachedOnlyOneVisible; } @@ -848,24 +826,22 @@ public class OrderCRUDController extends GenericForwardComposer { Tab previousTab = getCurrentTab(); save(showSaveMessage); - if (orderModel.userCanRead(order, - SecurityUtils.getSessionUserLoginName())) { + if ( orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName()) ) { refreshOrderWindow(); // come back to the current tab after initialize all tabs. resetSelectedTab(); selectTab(previousTab.getId()); - Events.sendEvent(new SelectEvent(Events.ON_SELECT, previousTab, - null)); + Events.sendEvent(new SelectEvent(Events.ON_SELECT, previousTab, null)); - if (isNewObject) { + if ( isNewObject ) { this.planningControllerEntryPoints.goToOrderDetails(order); } } else { try { - Messagebox - .show(_("You don't have read access to this project"), - _("Information"), Messagebox.OK, + Messagebox.show(_("You don't have read access to this project"), + _("Information"), + Messagebox.OK, Messagebox.INFORMATION); goToList(); } catch (InterruptedException e) { @@ -875,7 +851,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void refreshOrderWindow() { - if (orderElementTreeController != null) { + if ( orderElementTreeController != null ) { orderElementTreeController.resetCellsMarkedAsModified(); } updateDisabilitiesOnInterface(); @@ -884,14 +860,13 @@ public class OrderCRUDController extends GenericForwardComposer { } private void refreshCodeTextboxesOnly() { - if (orderElementTreeController != null) { + if ( orderElementTreeController != null ) { Map orderElementCodeTextBoxes = orderElementTreeController.getOrderElementCodeTextboxes(); for (OrderElement element : orderElementCodeTextBoxes.keySet()) { - if (element.getId() != null) { - orderElementCodeTextBoxes.get(element).setValue( - element.getCode()); + if ( element.getId() != null ) { + orderElementCodeTextBoxes.get(element).setValue(element.getCode()); } } } @@ -902,21 +877,21 @@ public class OrderCRUDController extends GenericForwardComposer { } private void save(boolean showSaveMessage) { - if (manageOrderElementAdvancesController != null) { + if ( manageOrderElementAdvancesController != null ) { selectTab("tabAdvances"); - if (!manageOrderElementAdvancesController.save()) { + if ( !manageOrderElementAdvancesController.save() ) { setCurrentTab(); return; } } - if (assignedCriterionRequirementController != null) { + if ( assignedCriterionRequirementController != null ) { selectTab("tabRequirements"); - if (!assignedCriterionRequirementController.close()) { + if ( !assignedCriterionRequirementController.close() ) { setCurrentTab(); return; } } - if (assignedTaskQualityFormController != null) { + if ( assignedTaskQualityFormController != null ) { selectTab("tabTaskQualityForm"); if (!assignedTaskQualityFormController.confirm()) { setCurrentTab(); @@ -925,7 +900,7 @@ public class OrderCRUDController extends GenericForwardComposer { } // come back to the default tab. - if (getCurrentTab() != null) { + if ( getCurrentTab() != null ) { selectTab(getCurrentTab().getId()); } @@ -944,7 +919,7 @@ public class OrderCRUDController extends GenericForwardComposer { private void setCurrentTab() { Tabbox tabboxOrder = (Tabbox) editWindow.getFellowIfAny("tabboxOrder"); - if (tabboxOrder != null) { + if ( tabboxOrder != null ) { selectedTab = tabboxOrder.getSelectedTab(); } } @@ -955,7 +930,7 @@ public class OrderCRUDController extends GenericForwardComposer { protected void selectTab(String str) { Tab tab = (Tab) editWindow.getFellowIfAny(str); - if (tab != null) { + if ( tab != null ) { tab.setSelected(true); } } @@ -988,7 +963,7 @@ public class OrderCRUDController extends GenericForwardComposer { } public void up() { - if (onUp == null) { + if ( onUp == null ) { throw new IllegalStateException( "in order to call up onUp action should have been set"); } @@ -996,11 +971,14 @@ public class OrderCRUDController extends GenericForwardComposer { } public void confirmRemove(Order order) { - if (orderModel.userCanWrite(order)) { + if ( orderModel.userCanWrite(order) ) { try { - int status = Messagebox.show(_("Confirm deleting {0}. Are you sure?", order.getName()), - "Delete", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION); - if (Messagebox.OK == status) { + int status = Messagebox.show(_("Confirm deleting {0}. Are you sure?", + order.getName()), + "Delete", + Messagebox.OK | Messagebox.CANCEL, + Messagebox.QUESTION); + if ( Messagebox.OK == status ) { remove(order); } } catch (InterruptedException e) { @@ -1010,7 +988,9 @@ public class OrderCRUDController extends GenericForwardComposer { else { try { Messagebox.show(_("Not enough permissions to edit this project"), - _("Information"), Messagebox.OK, Messagebox.INFORMATION); + _("Information"), + Messagebox.OK, + Messagebox.INFORMATION); } catch (InterruptedException e) { throw new RuntimeException(e); } @@ -1106,7 +1086,7 @@ public class OrderCRUDController extends GenericForwardComposer { } public void checkUserCanRead(Order order) { - if (!orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName())) { + if ( !orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName()) ) { try { Messagebox.show(_("Sorry, you do not have permissions to access this project"), _("Information"), Messagebox.OK, Messagebox.INFORMATION); @@ -1144,14 +1124,12 @@ public class OrderCRUDController extends GenericForwardComposer { } private void initializeCustomerComponent() { - bdExternalCompanies = (BandboxSearch) editWindow - .getFellow("bdExternalCompanies"); + bdExternalCompanies = (BandboxSearch) editWindow.getFellow("bdExternalCompanies"); bdExternalCompanies.setListboxEventListener( Events.ON_SELECT, new EventListener() { @Override public void onEvent(Event event) { - final Object object = bdExternalCompanies - .getSelectedElement(); + final Object object = bdExternalCompanies.getSelectedElement(); orderModel.setExternalCompany((ExternalCompany) object); } }); @@ -1159,8 +1137,7 @@ public class OrderCRUDController extends GenericForwardComposer { new EventListener() { @Override public void onEvent(Event event) { - final Object object = bdExternalCompanies - .getSelectedElement(); + final Object object = bdExternalCompanies.getSelectedElement(); orderModel.setExternalCompany((ExternalCompany) object); bdExternalCompanies.close(); } @@ -1171,7 +1148,7 @@ public class OrderCRUDController extends GenericForwardComposer { } public void setupOrderDetails() { - if (!confirmLastTab()) { + if ( !confirmLastTab() ) { return; } setCurrentTab(); @@ -1185,8 +1162,7 @@ public class OrderCRUDController extends GenericForwardComposer { } public void reloadOrderDetailsTab() { - Tabpanel tabPanel = (Tabpanel) editWindow - .getFellow("tabPanelGeneralData"); + Tabpanel tabPanel = (Tabpanel) editWindow.getFellow("tabPanelGeneralData"); Util.createBindingsFor(tabPanel); Util.reloadBindings(tabPanel); } @@ -1210,7 +1186,7 @@ public class OrderCRUDController extends GenericForwardComposer { } public ProjectDetailsController getCreationPopup() { - if (projectDetailsController == null) { + if ( projectDetailsController == null ) { projectDetailsController = new ProjectDetailsController(); } return projectDetailsController; @@ -1220,8 +1196,7 @@ public class OrderCRUDController extends GenericForwardComposer { showCreateButtons(false); } - public void setPlanningControllerEntryPoints( - IOrderPlanningGate planningControllerEntryPoints) { + public void setPlanningControllerEntryPoints(IOrderPlanningGate planningControllerEntryPoints) { this.planningControllerEntryPoints = planningControllerEntryPoints; } @@ -1250,7 +1225,7 @@ public class OrderCRUDController extends GenericForwardComposer { item.setValue(calendar); BaseCalendar current = orderModel.getCalendar(); - if ((current != null) && calendar.getId().equals(current.getId())) { + if ( (current != null) && calendar.getId().equals(current.getId()) ) { Combobox combobox = (Combobox) item.getParent(); combobox.setSelectedItem(item); } @@ -1269,7 +1244,7 @@ public class OrderCRUDController extends GenericForwardComposer { public void setCodeAutogenerated(boolean codeAutogenerated) { try { orderModel.setCodeAutogenerated(codeAutogenerated); - if (orderElementTreeController != null) { + if ( orderElementTreeController != null ) { orderElementTreeController.disabledCodeBoxes(codeAutogenerated); } } catch (ConcurrentModificationException e) { @@ -1307,8 +1282,7 @@ public class OrderCRUDController extends GenericForwardComposer { appendDate(row, order.getInitDate()); appendDate(row, order.getDeadline()); appendCustomer(row, order.getCustomer()); - appendObject(row, - Util.addCurrencySymbol(order.getTotalManualBudget())); + appendObject(row, Util.addCurrencySymbol(order.getTotalManualBudget())); appendObject(row, order.getTotalHours()); appendObject(row, _(order.getState().toString())); appendOperations(row, order); @@ -1325,7 +1299,7 @@ public class OrderCRUDController extends GenericForwardComposer { private void appendObject(final Row row, Object object) { String text = new String(""); - if (object != null) { + if ( object != null ) { text = object.toString(); } appendLabel(row, text); @@ -1333,7 +1307,7 @@ public class OrderCRUDController extends GenericForwardComposer { private void appendCustomer(final Row row, ExternalCompany externalCompany) { String customerName = new String(""); - if (externalCompany != null) { + if ( externalCompany != null ) { customerName = externalCompany.getName(); } appendLabel(row, customerName); @@ -1346,7 +1320,7 @@ public class OrderCRUDController extends GenericForwardComposer { private void appendDate(final Row row, Date date) { String labelDate = new String(""); - if (date != null) { + if ( date != null ) { labelDate = Util.formatDate(date); } appendLabel(row, labelDate); @@ -1377,7 +1351,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void appendButtonDelete(final Hbox hbox, final Order order) { - if (orderModel.userCanWrite(order)) { + if ( orderModel.userCanWrite(order) ) { Button buttonDelete = new Button(); buttonDelete.setSclass("icono"); buttonDelete.setImage("/common/img/ico_borrar1.png"); @@ -1420,10 +1394,9 @@ public class OrderCRUDController extends GenericForwardComposer { createTemplate(order); } }); - if (!SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_TEMPLATES)) { + if ( !SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_TEMPLATES) ) { buttonDerived.setDisabled(true); - buttonDerived - .setTooltiptext(_("Not enough permissions to create templates")); + buttonDerived.setTooltiptext(_("Not enough permissions to create templates")); } hbox.appendChild(buttonDerived); } @@ -1446,11 +1419,9 @@ public class OrderCRUDController extends GenericForwardComposer { public void validate(Component comp, Object value) throws WrongValueException { Date finishDate = (Date) value; - if ( (finishDate != null) - && (filterStartDate.getRawValue() != null) - && (finishDate.compareTo((Date) filterStartDate.getRawValue()) < 0) ) { - throw new WrongValueException(comp, - _("must be after start date")); + if ( (finishDate != null) && (filterStartDate.getRawValue() != null) && + (finishDate.compareTo((Date) filterStartDate.getRawValue()) < 0) ) { + throw new WrongValueException(comp, _("must be after start date")); } } }; @@ -1462,11 +1433,9 @@ public class OrderCRUDController extends GenericForwardComposer { public void validate(Component comp, Object value) throws WrongValueException { Date startDate = (Date) value; - if ( (startDate != null) - && (filterFinishDate.getRawValue() != null) - && (startDate.compareTo((Date) filterFinishDate.getRawValue()) > 0) ) { - throw new WrongValueException(comp, - _("must be lower than end date")); + if ( (startDate != null) && (filterFinishDate.getRawValue() != null) && + (startDate.compareTo((Date) filterFinishDate.getRawValue()) > 0) ) { + throw new WrongValueException(comp, _("must be lower than end date")); } } }; @@ -1476,7 +1445,7 @@ public class OrderCRUDController extends GenericForwardComposer { OrderPredicate predicate = createPredicate(); storeSessionVariables(); FilterUtils.writeProjectFilterChanged(true); - if (predicate != null) { + if ( predicate != null ) { // Force reload conversation state in oderModel getOrders(); filterByPredicate(predicate); @@ -1488,37 +1457,41 @@ public class OrderCRUDController extends GenericForwardComposer { private void storeSessionVariables() { FilterUtils.writeProjectsFilter(filterStartDate.getValue(), - filterFinishDate.getValue(), - getSelectedBandboxAsTaskGroupFilters(), - filterProjectName.getValue()); + filterFinishDate.getValue(), + getSelectedBandboxAsTaskGroupFilters(), + filterProjectName.getValue()); } private List getSelectedBandboxAsTaskGroupFilters() { - List result = new ArrayList(); - for (FilterPair filterPair : (List) bdFilters - .getSelectedElements()) { - OrderFilterEnum type = (OrderFilterEnum) filterPair - .getType(); + List result = new ArrayList<>(); + + for (FilterPair filterPair : (List) bdFilters.getSelectedElements()) { + OrderFilterEnum type = (OrderFilterEnum) filterPair.getType(); switch (type) { case Label: - result.add(new FilterPair(TaskGroupFilterEnum.Label, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(TaskGroupFilterEnum.Label, + filterPair.getPattern(), + filterPair.getValue())); break; case Criterion: result.add(new FilterPair(TaskGroupFilterEnum.Criterion, - filterPair.getPattern(), filterPair.getValue())); + filterPair.getPattern(), + filterPair.getValue())); break; case ExternalCompany: result.add(new FilterPair(TaskGroupFilterEnum.ExternalCompany, - filterPair.getPattern(), filterPair.getValue())); + filterPair.getPattern(), + filterPair.getValue())); break; case State: - result.add(new FilterPair(TaskGroupFilterEnum.State, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(TaskGroupFilterEnum.State, + filterPair.getPattern(), + filterPair.getValue())); break; default: - result.add(new FilterPair(OrderFilterEnum.Label, filterPair - .getPattern(), filterPair.getValue())); + result.add(new FilterPair(OrderFilterEnum.Label, + filterPair.getPattern(), + filterPair.getValue())); break; } } @@ -1526,19 +1499,17 @@ public class OrderCRUDController extends GenericForwardComposer { } private OrderPredicate createPredicate() { - List listFilters = (List) bdFilters - .getSelectedElements(); + List listFilters = (List) bdFilters.getSelectedElements(); + Date startDate = filterStartDate.getValue(); Date finishDate = filterFinishDate.getValue(); Boolean includeOrderElements = checkIncludeOrderElements.isChecked(); String name = filterProjectName.getValue(); - if (listFilters.isEmpty() && startDate == null && finishDate == null - && name == null) { + if (listFilters.isEmpty() && startDate == null && finishDate == null && name == null) { return null; } - return new OrderPredicate(listFilters, startDate, finishDate, - includeOrderElements, name); + return new OrderPredicate(listFilters, startDate, finishDate, includeOrderElements, name); } private void filterByPredicate(OrderPredicate predicate) { @@ -1558,30 +1529,28 @@ public class OrderCRUDController extends GenericForwardComposer { } public void showOrderElementFilter() { - if (orderFilter != null) { + if ( orderFilter != null ) { orderFilter.setVisible(false); } - if (orderElementFilter != null) { + if ( orderElementFilter != null ) { orderElementFilter.setVisible(true); } } public void showCreateButtons(boolean showCreate) { - if (!showCreate) { - Hbox perspectiveButtonsInsertionPoint = (Hbox) page - .getFellow("perspectiveButtonsInsertionPoint"); + if ( !showCreate ) { + Hbox perspectiveButtonsInsertionPoint = (Hbox) page.getFellow("perspectiveButtonsInsertionPoint"); perspectiveButtonsInsertionPoint.getChildren().clear(); - saveOrderAndContinueButton - .setParent(perspectiveButtonsInsertionPoint); + saveOrderAndContinueButton.setParent(perspectiveButtonsInsertionPoint); cancelEditionButton.setParent(perspectiveButtonsInsertionPoint); } - if (createOrderButton != null) { + if ( createOrderButton != null ) { createOrderButton.setVisible(showCreate); } - if (saveOrderAndContinueButton != null) { + if ( saveOrderAndContinueButton != null ) { saveOrderAndContinueButton.setVisible(!showCreate); } - if (cancelEditionButton != null) { + if ( cancelEditionButton != null ) { cancelEditionButton.setVisible(!showCreate); } @@ -1593,20 +1562,16 @@ public class OrderCRUDController extends GenericForwardComposer { @Override public void run() { - if (tab != null) { + if ( tab != null ) { tab.setSelected(true); - Events.sendEvent(new SelectEvent(Events.ON_SELECT, tab, - null)); + Events.sendEvent(new SelectEvent(Events.ON_SELECT, tab, null)); } - if (!(orderElement instanceof Order) - && orderElementTreeController != null) { - final Treeitem item = orderElementTreeController - .getTreeitemByOrderElement(orderElement); + if ( !(orderElement instanceof Order) && orderElementTreeController != null ) { + final Treeitem item = orderElementTreeController.getTreeitemByOrderElement(orderElement); - if (item != null) { - orderElementTreeController - .showEditionOrderElement(item); + if ( item != null) { + orderElementTreeController.showEditionOrderElement(item); } } } @@ -1618,9 +1583,8 @@ public class OrderCRUDController extends GenericForwardComposer { * the create buttons accordingly. */ private void checkCreationPermissions() { - if (!SecurityUtils - .isSuperuserOrUserInRoles(UserRole.ROLE_CREATE_PROJECTS)) { - if (createOrderButton != null) { + if ( !SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_CREATE_PROJECTS) ) { + if ( createOrderButton != null ) { createOrderButton.setDisabled(true); } } @@ -1638,21 +1602,19 @@ public class OrderCRUDController extends GenericForwardComposer { readOnly = !permissionForWriting || isInStoredState; - if (orderElementTreeController != null) { + if ( orderElementTreeController != null ) { orderElementTreeController.setReadOnly(readOnly); } - saveOrderAndContinueButton.setDisabled(!permissionForWriting - || (isInitiallyStored && isInStoredState)); + saveOrderAndContinueButton.setDisabled(!permissionForWriting || (isInitiallyStored && isInStoredState)); } public void sortOrders() { - Column columnDateStart = (Column) listWindow - .getFellow("columnDateStart"); + Column columnDateStart = (Column) listWindow.getFellow("columnDateStart"); if (columnDateStart != null) { - if (columnDateStart.getSortDirection().equals("ascending")) { + if ( columnDateStart.getSortDirection().equals("ascending") ) { columnDateStart.sort(false, false); columnDateStart.setSortDirection("ascending"); - } else if (columnDateStart.getSortDirection().equals("descending")) { + } else if ( columnDateStart.getSortDirection().equals("descending") ) { columnDateStart.sort(true, false); columnDateStart.setSortDirection("descending"); } @@ -1660,10 +1622,11 @@ public class OrderCRUDController extends GenericForwardComposer { } public SortedSet getDeliverDates() { - if(getOrder() != null){ + if( getOrder() != null ){ return getOrder().getDeliveringDates(); } - return new TreeSet(new DeliverDateComparator()); + + return new TreeSet<>(new DeliverDateComparator()); } public Constraint chekValidProjectName() { @@ -1672,16 +1635,14 @@ public class OrderCRUDController extends GenericForwardComposer { public void validate(Component comp, Object value) throws WrongValueException { - if (StringUtils.isBlank((String) value)) { - throw new WrongValueException(comp, - _("cannot be empty")); + if ( StringUtils.isBlank((String) value) ) { + throw new WrongValueException(comp, _("cannot be empty")); } try { Order found = orderDAO .findByNameAnotherTransaction((String) value); - if (!found.getId().equals(getOrder().getId())) { - throw new WrongValueException(comp, - _("project name already being used")); + if ( !found.getId().equals(getOrder().getId()) ) { + throw new WrongValueException(comp, _("project name already being used")); } } catch (InstanceNotFoundException e) { return; @@ -1696,16 +1657,13 @@ public class OrderCRUDController extends GenericForwardComposer { public void validate(Component comp, Object value) throws WrongValueException { - if (StringUtils.isBlank((String) value)) { - throw new WrongValueException(comp, - _("cannot be empty")); + if ( StringUtils.isBlank((String) value) ) { + throw new WrongValueException(comp, _("cannot be empty")); } try { - Order found = orderDAO - .findByCodeAnotherTransaction((String) value); - if (!found.getId().equals(getOrder().getId())) { - throw new WrongValueException(comp, - _("project code already being used")); + Order found = orderDAO.findByCodeAnotherTransaction((String) value); + if ( !found.getId().equals(getOrder().getId()) ) { + throw new WrongValueException(comp, _("project code already being used")); } } catch (InstanceNotFoundException e) { return; @@ -1715,27 +1673,26 @@ public class OrderCRUDController extends GenericForwardComposer { } public boolean isSubcontractedProject() { - return (getOrder() != null) ? (getOrder().getExternalCode() != null) - : false; + return (getOrder() != null) ? (getOrder().getExternalCode() != null) : false; } public String getProjectType() { - return (isSubcontractedProject()) ? _("Subcontracted by client") - : _("Regular project"); + return (isSubcontractedProject()) ? _("Subcontracted by client") : _("Regular project"); } public void setCurrentDeliveryDate(Grid listDeliveryDates) { - if (getOrder() != null && getOrder().getDeliveringDates() != null - && !getOrder().getDeliveringDates().isEmpty()) { - DeadlineCommunication lastDeliveryDate = getOrder() - .getDeliveringDates().first(); - if (listDeliveryDates != null) { + if ( getOrder() != null && getOrder().getDeliveringDates() != null && + !getOrder().getDeliveringDates().isEmpty() ) { + DeadlineCommunication lastDeliveryDate = getOrder().getDeliveringDates().first(); + if ( listDeliveryDates != null ) { + listDeliveryDates.renderAll(); final Rows rows = listDeliveryDates.getRows(); + for (Iterator i = rows.getChildren().iterator(); i.hasNext();) { final Row row = (Row) i.next(); - final DeadlineCommunication deliveryDate = (DeadlineCommunication) row - .getValue(); + final DeadlineCommunication deliveryDate = (DeadlineCommunication) row.getValue(); + if (deliveryDate.equals(lastDeliveryDate)) { row.setSclass("current-delivery-date"); return; @@ -1750,20 +1707,20 @@ public class OrderCRUDController extends GenericForwardComposer { } public void addAskedEndDate(Datebox newEndDate) { - if (newEndDate == null || newEndDate.getValue() == null) { + if ( newEndDate == null || newEndDate.getValue() == null ) { messagesForUser.showMessage(Level.ERROR, _("You must select a valid date. ")); return; } - if (thereIsSomeCommunicationDateEmpty()) { + if ( thereIsSomeCommunicationDateEmpty() ) { messagesForUser .showMessage( Level.ERROR, - _("It will only be possible to add an end date if all the exiting ones in the table have already been sent to the customer.")); + _("It will only be possible to add an end date if all the exiting ones in the table " + + "have already been sent to the customer.")); return; } - if (orderModel.alreadyExistsRepeatedEndDate(newEndDate.getValue())) { - messagesForUser.showMessage(Level.ERROR, - _("It already exists a end date with the same date. ")); + if ( orderModel.alreadyExistsRepeatedEndDate(newEndDate.getValue()) ) { + messagesForUser.showMessage(Level.ERROR, _("It already exists a end date with the same date. ")); return; } orderModel.addAskedEndDate(newEndDate.getValue()); @@ -1776,10 +1733,11 @@ public class OrderCRUDController extends GenericForwardComposer { private boolean thereIsSomeCommunicationDateEmpty() { for (EndDateCommunication endDate : orderModel.getEndDates()) { - if (endDate.getCommunicationDate() == null) { + if ( endDate.getCommunicationDate() == null ) { return true; } } + return false; } @@ -1796,8 +1754,7 @@ public class OrderCRUDController extends GenericForwardComposer { appendLabel(row, Util.formatDateTime(endDate.getSaveDate())); appendLabel(row, Util.formatDate(endDate.getEndDate())); - appendLabel(row, - Util.formatDateTime(endDate.getCommunicationDate())); + appendLabel(row, Util.formatDateTime(endDate.getCommunicationDate())); appendOperations(row, endDate); } @@ -1830,11 +1787,11 @@ public class OrderCRUDController extends GenericForwardComposer { } private boolean isNotUpdate(final EndDateCommunication endDate) { - EndDateCommunication lastAskedEndDate = getOrder() - .getEndDateCommunicationToCustomer().first(); - if ((lastAskedEndDate != null) && (lastAskedEndDate.equals(endDate))) { + EndDateCommunication lastAskedEndDate = getOrder().getEndDateCommunicationToCustomer().first(); + if ( (lastAskedEndDate != null) && (lastAskedEndDate.equals(endDate)) ) { return (lastAskedEndDate.getCommunicationDate() != null); } + return true; } } @@ -1864,7 +1821,7 @@ public class OrderCRUDController extends GenericForwardComposer { * Setup the connector, JiraSynchronization controller */ public void setupJiraSynchronizationController() { - if (jiraSynchronizationController == null) { + if ( jiraSynchronizationController == null ) { jiraSynchronizationController = new JiraSynchronizationController(); } try { @@ -1878,7 +1835,7 @@ public class OrderCRUDController extends GenericForwardComposer { * Setup the connector, TimSynchronization controller */ public void setupTimSynchronizationController() { - if (timSynchronizationController == null) { + if ( timSynchronizationController == null ) { timSynchronizationController = new TimSynchronizationController(); } try { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java index 84dc6992a..131e1c45c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java @@ -80,7 +80,7 @@ public class CompanyPlanningController implements Composer { @Autowired private ICompanyPlanningModel model; - private List> additional = new ArrayList>(); + private List> additional = new ArrayList<>(); private Planner planner; @@ -108,46 +108,36 @@ public class CompanyPlanningController implements Composer { public void doAfterCompose(org.zkoss.zk.ui.Component comp) { planner = (Planner) comp; String zoomLevelParameter = null; - if ((parameters != null) && (parameters.get("zoom") != null) - && !(parameters.isEmpty())) { + if ( (parameters != null) && (parameters.get("zoom") != null) + && !(parameters.isEmpty()) ) { zoomLevelParameter = parameters.get("zoom")[0]; } - if (zoomLevelParameter != null) { - planner.setInitialZoomLevel(ZoomLevel - .getFromString(zoomLevelParameter)); + if ( zoomLevelParameter != null ) { + planner.setInitialZoomLevel(ZoomLevel.getFromString(zoomLevelParameter)); } - planner.setAreContainersExpandedByDefault(Planner - .guessContainersExpandedByDefault(parameters)); + planner.setAreContainersExpandedByDefault(Planner.guessContainersExpandedByDefault(parameters)); initializeListboxProgressTypes(); - planner.setAreShownAdvancesByDefault(Planner - .guessShowAdvancesByDefault(parameters)); + planner.setAreShownAdvancesByDefault(Planner.guessShowAdvancesByDefault(parameters)); - planner.setAreShownReportedHoursByDefault(Planner - .guessShowReportedHoursByDefault(parameters)); - planner.setAreShownMoneyCostBarByDefault(Planner - .guessShowMoneyCostBarByDefault(parameters)); + planner.setAreShownReportedHoursByDefault(Planner.guessShowReportedHoursByDefault(parameters)); + planner.setAreShownMoneyCostBarByDefault(Planner.guessShowMoneyCostBarByDefault(parameters)); orderFilter = (Vbox) planner.getFellow("orderFilter"); // Configuration of the order filter - Component filterComponent = Executions.createComponents( - "/orders/_orderFilter.zul", orderFilter, - new HashMap()); + Component filterComponent = Executions.createComponents("/orders/_orderFilter.zul", orderFilter, + new HashMap()); filterComponent.setVariable("orderFilterController", this, true); - filterStartDate = (Datebox) filterComponent - .getFellow("filterStartDate"); - filterFinishDate = (Datebox) filterComponent - .getFellow("filterFinishDate"); + filterStartDate = (Datebox) filterComponent.getFellow("filterStartDate"); + filterFinishDate = (Datebox) filterComponent.getFellow("filterFinishDate"); filterProjectName = (Textbox) filterComponent.getFellow("filterProjectName"); - bdFilters = (BandboxMultipleSearch) filterComponent - .getFellow("bdFilters"); + bdFilters = (BandboxMultipleSearch) filterComponent.getFellow("bdFilters"); bdFilters.setFinder("taskGroupsMultipleFiltersFinder"); loadPredefinedBandboxFilter(); - checkIncludeOrderElements = (Checkbox) filterComponent - .getFellow("checkIncludeOrderElements"); + checkIncludeOrderElements = (Checkbox) filterComponent.getFellow("checkIncludeOrderElements"); filterComponent.setVisible(true); checkCreationPermissions(); @@ -155,33 +145,30 @@ public class CompanyPlanningController implements Composer { private void loadPredefinedBandboxFilter() { User user = model.getUser(); - List sessionFilterPairs = FilterUtils - .readProjectsParameters(); - if (sessionFilterPairs != null) { + List sessionFilterPairs = FilterUtils.readProjectsParameters(); + if ( sessionFilterPairs != null ) { bdFilters.addSelectedElements(sessionFilterPairs); - } else if ((user != null) && (user.getProjectsFilterLabel() != null)) { + } else if ( (user != null) && (user.getProjectsFilterLabel() != null) ) { bdFilters.clear(); - bdFilters.addSelectedElement(new FilterPair( - TaskGroupFilterEnum.Label, user.getProjectsFilterLabel() - .getFinderPattern(), user - .getProjectsFilterLabel())); + bdFilters.addSelectedElement(new FilterPair(TaskGroupFilterEnum.Label, user.getProjectsFilterLabel() + .getFinderPattern(), + user.getProjectsFilterLabel()) ); } // Calculate filter based on user preferences if (user != null) { - if ((filterStartDate.getValue() == null) - && !FilterUtils.hasProjectsStartDateChanged() - && (user.getProjectsFilterPeriodSince() != null)) { + if ( (filterStartDate.getValue() == null) && !FilterUtils.hasProjectsStartDateChanged() && + (user.getProjectsFilterPeriodSince() != null) ) { filterStartDate.setValue(new LocalDate() .minusMonths(user.getProjectsFilterPeriodSince()) - .toDateTimeAtStartOfDay().toDate()); + .toDateTimeAtStartOfDay() + .toDate()); } - if (filterFinishDate.getValue() == null - && !FilterUtils.hasProjectsEndDateChanged() - && (user.getProjectsFilterPeriodTo() != null)) { - filterFinishDate.setValue(new LocalDate() - .plusMonths(user.getProjectsFilterPeriodTo()) - .toDateMidnight().toDate()); + if ( filterFinishDate.getValue() == null && !FilterUtils.hasProjectsEndDateChanged() && + (user.getProjectsFilterPeriodTo() != null) ) { + filterFinishDate.setValue(new LocalDate().plusMonths(user.getProjectsFilterPeriodTo()) + .toDateTimeAtStartOfDay() + .toDate()); } filterProjectName.setValue(FilterUtils.readProjectsName()); } @@ -193,21 +180,19 @@ public class CompanyPlanningController implements Composer { * the create buttons accordingly. */ private void checkCreationPermissions() { - if (!SecurityUtils - .isSuperuserOrUserInRoles(UserRole.ROLE_CREATE_PROJECTS)) { - Button createOrderButton = (Button) planner.getPage().getFellow( - "createOrderButton"); - if (createOrderButton != null) { + if ( !SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_CREATE_PROJECTS) ) { + Button createOrderButton = (Button) planner.getPage().getFellow("createOrderButton"); + if ( createOrderButton != null ) { createOrderButton.setDisabled(true); } } } private void initializeListboxProgressTypes() { - if (cbProgressTypes == null) { + if ( cbProgressTypes == null ) { cbProgressTypes = (Combobox) planner.getFellow("cbProgressTypes"); } - if (btnShowAdvances == null) { + if ( btnShowAdvances == null ) { btnShowAdvances = (Button) planner.getFellow("showAdvances"); } @@ -232,7 +217,7 @@ public class CompanyPlanningController implements Composer { cbProgressTypes.setVisible(true); ProgressType progressType = getProgressTypeFromConfiguration(); - if (progressType != null) { + if ( progressType != null ) { planner.updateCompletion(progressType.toString()); } @@ -247,8 +232,8 @@ public class CompanyPlanningController implements Composer { item.setLabel(_(progressType.getValue())); ProgressType configuredProgressType = getProgressTypeFromConfiguration(); - if ((configuredProgressType != null) - && configuredProgressType.equals(progressType)) { + if ( (configuredProgressType != null) && + configuredProgressType.equals(progressType) ) { cbProgressTypes.setSelectedItem(item); } } @@ -260,9 +245,7 @@ public class CompanyPlanningController implements Composer { public void setConfigurationForPlanner() { // Added predicate - model - .setConfigurationToPlanner(planner, additional, - doubleClickCommand, createPredicate()); + model.setConfigurationToPlanner(planner, additional, doubleClickCommand, createPredicate()); model.setTabsController(tabsController); planner.updateSelectedZoomLevel(); planner.invalidate(); @@ -274,8 +257,7 @@ public class CompanyPlanningController implements Composer { this.additional = additional; } - public void setDoubleClickCommand( - ICommandOnTask doubleClickCommand) { + public void setDoubleClickCommand(ICommandOnTask doubleClickCommand) { this.doubleClickCommand = doubleClickCommand; } @@ -293,13 +275,10 @@ public class CompanyPlanningController implements Composer { public void validate(Component comp, Object value) throws WrongValueException { Date finishDate = (Date) value; - if ((finishDate != null) - && (filterStartDate.getRawValue() != null) - && (finishDate.compareTo((Date) - filterStartDate.getRawValue()) < 0)) { + if ( (finishDate != null) && (filterStartDate.getRawValue() != null) && + (finishDate.compareTo((Date) filterStartDate.getRawValue()) < 0)) { filterFinishDate.setValue(null); - throw new WrongValueException(comp, - _("must be after start date")); + throw new WrongValueException(comp, _("must be after start date")); } } }; @@ -311,13 +290,10 @@ public class CompanyPlanningController implements Composer { public void validate(Component comp, Object value) throws WrongValueException { Date startDate = (Date) value; - if ((startDate != null) - && (filterFinishDate.getRawValue() != null) - && (startDate.compareTo((Date) - filterFinishDate.getRawValue()) > 0)) { + if ( (startDate != null) && (filterFinishDate.getRawValue() != null) && + (startDate.compareTo((Date) filterFinishDate.getRawValue()) > 0)) { filterStartDate.setValue(null); - throw new WrongValueException(comp, - _("must be lower than end date")); + throw new WrongValueException(comp, _("must be lower than end date")); } } }; @@ -332,8 +308,9 @@ public class CompanyPlanningController implements Composer { public void onApplyFilter() { FilterUtils.writeProjectsFilter(filterStartDate.getValue(), - filterFinishDate.getValue(), bdFilters.getSelectedElements(), - filterProjectName.getValue()); + filterFinishDate.getValue(), + bdFilters.getSelectedElements(), + filterProjectName.getValue()); FilterUtils.writeProjectPlanningFilterChanged(true); filterByPredicate(createPredicate()); } @@ -343,8 +320,7 @@ public class CompanyPlanningController implements Composer { } private TaskGroupPredicate createPredicate() { - List listFilters = (List) bdFilters - .getSelectedElements(); + List listFilters = (List) bdFilters.getSelectedElements(); Date startDate = filterStartDate.getValue(); Date finishDate = filterFinishDate.getValue(); Boolean includeOrderElements = checkIncludeOrderElements.isChecked(); @@ -353,16 +329,13 @@ public class CompanyPlanningController implements Composer { filterProjectName.setValue(name); - if (startDate == null && finishDate == null) { - TaskGroupPredicate predicate = model - .getDefaultPredicate(includeOrderElements); + if ( startDate == null && finishDate == null ) { + TaskGroupPredicate predicate = model.getDefaultPredicate(includeOrderElements); //show filter dates calculated by default on screen - if (model.getFilterStartDate() != null - && !FilterUtils.hasProjectsStartDateChanged()) { + if ( model.getFilterStartDate() != null && !FilterUtils.hasProjectsStartDateChanged()) { filterStartDate.setValue(model.getFilterStartDate()); } - if (model.getFilterFinishDate() != null - && !FilterUtils.hasProjectsEndDateChanged()) { + if (model.getFilterFinishDate() != null && !FilterUtils.hasProjectsEndDateChanged()) { filterFinishDate.setValue(model.getFilterFinishDate()); } @@ -370,21 +343,18 @@ public class CompanyPlanningController implements Composer { return predicate; } - return new TaskGroupPredicate(listFilters, startDate, finishDate, - includeOrderElements, name); + return new TaskGroupPredicate(listFilters, startDate, finishDate, includeOrderElements, name); } private void filterByPredicate(TaskGroupPredicate predicate) { // Recalculate predicate - model.setConfigurationToPlanner(planner, additional, - doubleClickCommand, predicate); + model.setConfigurationToPlanner(planner, additional, doubleClickCommand, predicate); planner.updateSelectedZoomLevel(); planner.invalidate(); } public void setPredicate() { - model.setConfigurationToPlanner(planner, additional, - doubleClickCommand, createPredicate()); + model.setConfigurationToPlanner(planner, additional, doubleClickCommand, createPredicate()); } public void setTabsController(MultipleTabsPlannerController tabsController) { 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 877b9d2d4..27e8b83b5 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 @@ -200,10 +200,9 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { @Override @Transactional(readOnly = true) - public void setConfigurationToPlanner(final Planner planner, - Collection> additional, - ICommandOnTask doubleClickCommand, - TaskGroupPredicate predicate) { + public void setConfigurationToPlanner(final Planner planner, Collection> additional, + ICommandOnTask doubleClickCommand, + TaskGroupPredicate predicate) { currentScenario = scenarioManager.getCurrent(); final PlannerConfiguration configuration = createConfiguration(predicate); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/reports/LibrePlanReportController.java b/libreplan-webapp/src/main/java/org/libreplan/web/reports/LibrePlanReportController.java index 794c6c0e8..8ffe41f44 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/reports/LibrePlanReportController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/reports/LibrePlanReportController.java @@ -69,7 +69,7 @@ public abstract class LibrePlanReportController extends GenericForwardComposer { jasperreport.setParameters(getParameters()); jasperreport.setType(type); - if (type.equals(HTML)) { + if ( type.equals(HTML) ) { URItext.setStyle("display: none"); Executions.getCurrent().sendRedirect(jasperreport.getReportUrl(), "_blank"); } else { @@ -85,10 +85,12 @@ public abstract class LibrePlanReportController extends GenericForwardComposer { } protected Map getParameters() { - Map parameters = new HashMap(); + Map parameters = new HashMap<>(); String companyLogo = Registry.getConfigurationDAO() - .getConfigurationWithReadOnlyTransaction().getCompanyLogoURL(); - if (StringUtils.isBlank(companyLogo)) { + .getConfigurationWithReadOnlyTransaction() + .getCompanyLogoURL(); + + if ( StringUtils.isBlank(companyLogo) ) { companyLogo = "/logos/logo.png"; } parameters.put("logo", companyLogo); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java index e09711e46..97f837dab 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java @@ -189,7 +189,7 @@ public class ResourceLoadController implements Composer { if (listenersToAdd != null) { return listenersToAdd; } - List result = new ArrayList(); + List result = new ArrayList<>(); for (VisualizationModifier each : getVisualizationModifiers()) { if (each instanceof IListenerAdder) { result.add((IListenerAdder) each); @@ -222,8 +222,7 @@ public class ResourceLoadController implements Composer { for (VisualizationModifier each : getVisualizationModifiers()) { each.checkDependencies(); } - ResourceLoadParameters parameters = new ResourceLoadParameters( - filterBy); + ResourceLoadParameters parameters = new ResourceLoadParameters(filterBy); for (VisualizationModifier each : getVisualizationModifiers()) { each.applyToParameters(parameters); } @@ -236,9 +235,11 @@ public class ResourceLoadController implements Composer { listeners.addListeners(resourcesLoadPanel, getListenersToAdd()); parent.getChildren().clear(); parent.appendChild(resourcesLoadPanel); + for (VisualizationModifier each : getVisualizationModifiers()) { each.setup(resourcesLoadPanel); } + } else { resourcesLoadPanel.init(dataToShow.getLoadTimeLines(), timeTracker); @@ -256,9 +257,9 @@ public class ResourceLoadController implements Composer { private TimeTracker buildTimeTracker(ResourceLoadDisplayData dataToShow) { ZoomLevel zoomLevel = getZoomLevel(dataToShow); TimeTracker result = new TimeTracker(dataToShow.getViewInterval(), - zoomLevel, SeveralModificators.create(), - SeveralModificators.create(createBankHolidaysMarker()), - parent); + zoomLevel, SeveralModificators.create(), + SeveralModificators.create(createBankHolidaysMarker()), + parent); setupZoomLevelListener(result); return result; } @@ -276,6 +277,7 @@ public class ResourceLoadController implements Composer { if (sessionZoom != null) { return sessionZoom; } + return dataToShow.getInitialZoomLevel(); } @@ -310,58 +312,51 @@ public class ResourceLoadController implements Composer { } private List buildVisualizationModifiers() { - List result = new ArrayList(); - FilterTypeChanger filterTypeChanger = new FilterTypeChanger(onChange, - filterBy); + List result = new ArrayList<>(); + FilterTypeChanger filterTypeChanger = new FilterTypeChanger(onChange, filterBy); result.add(filterTypeChanger); // Only by dates and bandbox filter on global resources load - if (filterBy == null) { - LocalDate startDate = FilterUtils.readResourceLoadsStartDate(); - LocalDate endDate = FilterUtils.readResourceLoadsEndDate(); + if ( filterBy == null ) { + LocalDate startDate = FilterUtils.readResourceLoadsStartDate(); + LocalDate endDate = FilterUtils.readResourceLoadsEndDate(); - User user = resourceLoadModel.getUser(); + User user = resourceLoadModel.getUser(); - // Calculate filter based on user preferences - if (user != null) { - if (startDate == null - && !FilterUtils.hasResourceLoadsStartDateChanged()) { - if (user.getResourcesLoadFilterPeriodSince() != null) { - startDate = new LocalDate().minusMonths(user - .getResourcesLoadFilterPeriodSince()); - } else { - // Default filter start - startDate = new LocalDate().minusDays(1); + // Calculate filter based on user preferences + if ( user != null ) { + if ( startDate == null && !FilterUtils.hasResourceLoadsStartDateChanged()) { + if ( user.getResourcesLoadFilterPeriodSince() != null ) { + startDate = new LocalDate().minusMonths(user.getResourcesLoadFilterPeriodSince()); + } else { + // Default filter start + startDate = new LocalDate().minusDays(1); + } + } + if ( (endDate == null) && !FilterUtils.hasResourceLoadsEndDateChanged() + && (user.getResourcesLoadFilterPeriodTo() != null) ) { + endDate = new LocalDate().plusMonths(user.getResourcesLoadFilterPeriodTo()); } } - if ((endDate == null) - && !FilterUtils.hasResourceLoadsEndDateChanged() - && (user.getResourcesLoadFilterPeriodTo() != null)) { - endDate = new LocalDate().plusMonths(user - .getResourcesLoadFilterPeriodTo()); + + result.add(new ByDatesFilter(onChange, filterBy, startDate, endDate)); + + List filterPairs = FilterUtils.readResourceLoadsBandbox(); + if ( (filterPairs == null || filterPairs.isEmpty()) && + user.getResourcesLoadFilterCriterion() != null ) { + filterPairs = new ArrayList<>(); + filterPairs.add(new FilterPair( + ResourceAllocationFilterEnum.Criterion, user + .getResourcesLoadFilterCriterion() + .getFinderPattern(), user + .getResourcesLoadFilterCriterion())); } - } - result.add(new ByDatesFilter(onChange, filterBy, startDate, endDate)); + WorkersOrCriteriaBandbox bandbox = new WorkersOrCriteriaBandbox(onChange, filterBy, filterTypeChanger, + resourcesSearcher, filterPairs); - List filterPairs = (List) FilterUtils - .readResourceLoadsBandbox(); - if ((filterPairs == null || filterPairs.isEmpty()) - && user.getResourcesLoadFilterCriterion() != null) { - filterPairs = new ArrayList(); - filterPairs.add(new FilterPair( - ResourceAllocationFilterEnum.Criterion, user - .getResourcesLoadFilterCriterion() - .getFinderPattern(), user - .getResourcesLoadFilterCriterion())); - } - - WorkersOrCriteriaBandbox bandbox = new WorkersOrCriteriaBandbox( - onChange, filterBy, filterTypeChanger, resourcesSearcher, filterPairs); - - result.add(bandbox); - result.add(new ByNamePaginator(onChange, filterBy, filterTypeChanger, - bandbox)); + result.add(bandbox); + result.add(new ByNamePaginator(onChange, filterBy, filterTypeChanger, bandbox)); } result.add(new LoadChart(onChange, filterBy)); return result; @@ -369,7 +364,7 @@ public class ResourceLoadController implements Composer { public interface IListenerAdder { - public Object addAndReturnListener(ResourcesLoadPanel panel); + Object addAndReturnListener(ResourcesLoadPanel panel); } private class GoToScheduleListener implements IListenerAdder { @@ -480,7 +475,7 @@ public class ResourceLoadController implements Composer { @Override public void filterChanged(boolean newValue) { - if (filterByResources != newValue) { + if ( filterByResources != newValue ) { filterByResources = newValue; notifyChange(); } @@ -501,19 +496,17 @@ public class ResourceLoadController implements Composer { private final Datebox endBox = new Datebox(); - private ByDatesFilter(Runnable onChange, PlanningState filterBy, - LocalDate startDate, LocalDate endDate) { + private ByDatesFilter(Runnable onChange, PlanningState filterBy, LocalDate startDate, LocalDate endDate) { super(onChange, filterBy); startDateValue = (isAppliedToOrder() || (startDate == null)) ? null - : startDate - .toDateTimeAtStartOfDay().toLocalDate(); - endDateValue = (endDate == null) ? null : endDate - .toDateMidnight().toLocalDate(); + : startDate.toDateTimeAtStartOfDay().toLocalDate(); + + endDateValue = (endDate == null) ? null : endDate.toDateTimeAtStartOfDay().toLocalDate(); } @Override void setup(ResourcesLoadPanel panel) { - if (isAppliedToOrder()) { + if ( isAppliedToOrder() ) { return; } panel.setFirstOptionalFilter(buildTimeFilter()); @@ -526,7 +519,7 @@ public class ResourceLoadController implements Composer { @Override public void onEvent(Event event) { LocalDate newStart = toLocal(startBox.getValue()); - if (!ObjectUtils.equals(startDateValue, newStart)) { + if ( !ObjectUtils.equals(startDateValue, newStart) ) { startDateValue = newStart; FilterUtils.writeResourceLoadsStartDate(startDateValue); notifyChange(); @@ -540,7 +533,7 @@ public class ResourceLoadController implements Composer { @Override public void onEvent(Event event) { LocalDate newEnd = toLocal(endBox.getValue()); - if (!ObjectUtils.equals(endBox, newEnd)) { + if ( !ObjectUtils.equals(endBox, newEnd) ) { endDateValue = newEnd; FilterUtils.writeResourceLoadsEndDate(endDateValue); notifyChange(); @@ -565,15 +558,13 @@ public class ResourceLoadController implements Composer { } - private static abstract class DependingOnFiltering extends - VisualizationModifier { + private static abstract class DependingOnFiltering extends VisualizationModifier { private final FilterTypeChanger filterType; private boolean filteringByResource; - DependingOnFiltering(Runnable onChange, PlanningState filterBy, - FilterTypeChanger filterType) { + DependingOnFiltering(Runnable onChange, PlanningState filterBy, FilterTypeChanger filterType) { super(onChange, filterBy); this.filterType = filterType; this.filteringByResource = filterType.isFilterByResources(); @@ -585,7 +576,7 @@ public class ResourceLoadController implements Composer { @Override void checkDependencies() { - if (this.filteringByResource != filterType.isFilterByResources()) { + if ( this.filteringByResource != filterType.isFilterByResources() ) { this.filteringByResource = filterType.isFilterByResources(); filterTypeChanged(); } @@ -606,15 +597,16 @@ public class ResourceLoadController implements Composer { private Label label = new Label(); private WorkersOrCriteriaBandbox(Runnable onChange, - PlanningState filterBy, FilterTypeChanger filterType, - IResourcesSearcher resourcesSearcher, - List selectedFilters) { + PlanningState filterBy, + FilterTypeChanger filterType, + IResourcesSearcher resourcesSearcher, + List selectedFilters) { super(onChange, filterBy, filterType); this.resourcesSearcher = resourcesSearcher; initBandbox(); - if ((selectedFilters != null) && !selectedFilters.isEmpty()) { + if ( (selectedFilters != null) && !selectedFilters.isEmpty() ) { for (FilterPair filterPair : selectedFilters) { bandBox.addSelectedElement(filterPair); } @@ -624,7 +616,7 @@ public class ResourceLoadController implements Composer { @Override void setup(ResourcesLoadPanel panel) { - if (isAppliedToOrder()) { + if ( isAppliedToOrder() ) { return; } panel.setSecondOptionalFilter(buildBandboxFilterer()); @@ -663,7 +655,7 @@ public class ResourceLoadController implements Composer { } private void updateLabelValue() { - if (isFilteringByResource()) { + if ( isFilteringByResource() ) { label.setValue(_("Resources or criteria") + ":"); } else { label.setValue(_("Criteria") + ":"); @@ -671,7 +663,7 @@ public class ResourceLoadController implements Composer { } private String getFinderToUse() { - if (isFilteringByResource()) { + if ( isFilteringByResource() ) { return "resourceMultipleFiltersFinderByResourceAndCriterion"; } else { return "criterionMultipleFiltersFinder"; @@ -680,7 +672,7 @@ public class ResourceLoadController implements Composer { @Override protected void filterTypeChanged() { - if (isAppliedToOrder()) { + if ( isAppliedToOrder() ) { return; } entitiesSelected = null; @@ -690,32 +682,30 @@ public class ResourceLoadController implements Composer { @Override void applyToParameters(ResourceLoadParameters parameters) { - if (!hasEntitiesSelected()) { + if ( !hasEntitiesSelected() ) { parameters.clearResourcesToShow(); parameters.clearCriteriaToShow(); - } else if (isFilteringByResource()) { + } else if ( isFilteringByResource() ) { parameters.setResourcesToShow(calculateResourcesToShow()); } else { - parameters.setCriteriaToShow(as(Criterion.class, - entitiesSelected)); + parameters.setCriteriaToShow(as(Criterion.class, entitiesSelected)); } } private List calculateResourcesToShow() { - List resources = new ArrayList(); - List criteria = new ArrayList(); + List resources = new ArrayList<>(); + List criteria = new ArrayList<>(); for (Object each : entitiesSelected) { - if (each instanceof Resource) { + if ( each instanceof Resource ) { resources.add((Resource) each); } else { criteria.add((Criterion) each); } } - if (!criteria.isEmpty()) { - resources.addAll(resourcesSearcher.searchBoth() - .byCriteria(criteria).execute()); + if ( !criteria.isEmpty() ) { + resources.addAll(resourcesSearcher.searchBoth().byCriteria(criteria).execute()); } return resources; @@ -726,19 +716,19 @@ public class ResourceLoadController implements Composer { } private List getSelected() { - List result = new ArrayList(); + List result = new ArrayList<>(); @SuppressWarnings("unchecked") List filterPairList = bandBox.getSelectedElements(); for (FilterPair filterPair : filterPairList) { result.add(filterPair.getValue()); } + return result; } } - private static class ByNamePaginator extends DependingOnFiltering - implements IListenerAdder { + private static class ByNamePaginator extends DependingOnFiltering implements IListenerAdder { private static final int ALL = -1; @@ -748,9 +738,10 @@ public class ResourceLoadController implements Composer { private List allEntitiesShown = null; - public ByNamePaginator(Runnable onChange, PlanningState filterBy, - FilterTypeChanger filterTypeChanger, - WorkersOrCriteriaBandbox bandbox) { + public ByNamePaginator(Runnable onChange, + PlanningState filterBy, + FilterTypeChanger filterTypeChanger, + WorkersOrCriteriaBandbox bandbox) { super(onChange, filterBy, filterTypeChanger); this.bandbox = bandbox; this.currentPosition = initialPage(); @@ -778,7 +769,7 @@ public class ResourceLoadController implements Composer { @Override void checkDependencies() { super.checkDependencies(); - if (bandbox.hasEntitiesSelected()) { + if ( bandbox.hasEntitiesSelected() ) { this.currentPosition = ALL; } } @@ -797,40 +788,38 @@ public class ResourceLoadController implements Composer { @Override void updateUI(ResourcesLoadPanel panel, ResourceLoadDisplayData generatedData) { panel.setInternalPaginationDisabled(bandbox.hasEntitiesSelected()); - Paginator paginator = generatedData - .getPaginator(); + Paginator paginator = generatedData.getPaginator(); List newAllEntities = paginator.getAll(); - if (this.allEntitiesShown == null - || !equivalent(this.allEntitiesShown, newAllEntities)) { + + if ( this.allEntitiesShown == null || !equivalent(this.allEntitiesShown, newAllEntities) ) { this.currentPosition = initialPage(); this.allEntitiesShown = newAllEntities; updatePages(panel.getPaginationFilterCombobox(), - pagesByName(this.allEntitiesShown, - paginator.getPageSize())); + pagesByName(this.allEntitiesShown, + paginator.getPageSize())); } } - private boolean equivalent(List a, - List b) { - if (a == null || b == null) { + private boolean equivalent(List a, List b) { + if ( a == null || b == null ) { return false; } - if (a.size() != b.size()) { + if ( a.size() != b.size() ) { return false; } for (int i = 0; i < a.size(); i++) { BaseEntity aElement = a.get(i); BaseEntity bElement = b.get(i); - if (!ObjectUtils.equals(aElement.getId(), bElement.getId())) { + if ( !ObjectUtils.equals(aElement.getId(), bElement.getId()) ) { return false; } } + return true; } - private void updatePages(Combobox filterByNameCombo, - List pages) { - if (filterByNameCombo == null) { + private void updatePages(Combobox filterByNameCombo, List pages) { + if ( filterByNameCombo == null ) { return; } filterByNameCombo.getChildren().clear(); @@ -845,10 +834,9 @@ public class ResourceLoadController implements Composer { filterByNameCombo.appendChild(each); } - if (currentPosition >= 0 && currentPosition < pages.size()) { - filterByNameCombo - .setSelectedItemApi(pages.get(currentPosition)); - } else if (currentPosition == ALL) { + if ( currentPosition >= 0 && currentPosition < pages.size() ) { + filterByNameCombo.setSelectedItemApi(pages.get(currentPosition)); + } else if ( currentPosition == ALL ) { filterByNameCombo.setSelectedItemApi(lastItem); } else { filterByNameCombo.setSelectedIndex(0); @@ -856,11 +844,11 @@ public class ResourceLoadController implements Composer { } private List pagesByName(List list, int pageSize) { - if (list.isEmpty()) { - return new ArrayList(); + if ( list.isEmpty() ) { + return new ArrayList<>(); } Object first = list.get(0); - if (first instanceof Resource) { + if ( first instanceof Resource ) { return pagesByName(as(Resource.class, list), pageSize, new INameExtractor() { @@ -883,40 +871,41 @@ public class ResourceLoadController implements Composer { } interface INameExtractor { - public String getNameOf(T value); + String getNameOf(T value); } - private List pagesByName(List elements, - int pageSize, - INameExtractor nameExtractor) { - List result = new ArrayList(); + private List pagesByName(List elements, int pageSize, INameExtractor nameExtractor) { + List result = new ArrayList<>(); + for (int startPos = 0; startPos < elements.size(); startPos += pageSize) { - int endPos = Math.min(startPos + pageSize - 1, - elements.size() - 1); + int endPos = Math.min(startPos + pageSize - 1, elements.size() - 1); + String first = nameExtractor.getNameOf(elements.get(startPos)); String end = nameExtractor.getNameOf(elements.get(endPos)); Comboitem item = buildPageCombo(startPos, first, end); result.add(item); } + return result; } - private Comboitem buildPageCombo(int startPosition, String first, - String end) { + private Comboitem buildPageCombo(int startPosition, String first, String end) { Comboitem result = new Comboitem(); result.setLabel(first.substring(0, 1) + " - " + end.substring(0, 1)); result.setDescription(first + " - " + end); result.setValue(startPosition); + return result; } } private static List as(Class klass, Collection entities) { - List result = new ArrayList(entities.size()); + List result = new ArrayList<>(entities.size()); for (Object each : entities) { result.add(klass.cast(each)); } + return result; } @@ -947,7 +936,7 @@ public class ResourceLoadController implements Composer { @Override public void chartVisibilityChanged(final boolean visible) { - if (visible && loadChart != null) { + if ( visible && loadChart != null ) { loadChart.fillChart(); } } @@ -955,8 +944,7 @@ public class ResourceLoadController implements Composer { return result; } - private Tabbox buildChart(ResourcesLoadPanel resourcesLoadPanel, - Emitter timePlot) { + private Tabbox buildChart(ResourcesLoadPanel resourcesLoadPanel, Emitter timePlot) { Tabbox chartComponent = new Tabbox(); chartComponent.setOrient("vertical"); chartComponent.setHeight("200px"); @@ -973,50 +961,49 @@ public class ResourceLoadController implements Composer { timePlot); chartTabpanels.appendChild(loadChartPannel); chartComponent.appendChild(chartTabpanels); + return chartComponent; } @Override - void updateUI(ResourcesLoadPanel panel, - ResourceLoadDisplayData generatedData) { + void updateUI(ResourcesLoadPanel panel, ResourceLoadDisplayData generatedData) { TimeTracker timeTracker = panel.getTimeTracker(); zoomLevelListener = fillOnZoomChange(panel); timeTracker.addZoomListener(zoomLevelListener); - Timeplot newLoadChart = buildLoadChart(panel, generatedData, - timeTracker); + Timeplot newLoadChart = buildLoadChart(panel, generatedData, timeTracker); emitter.emit(newLoadChart); } private Timeplot buildLoadChart(ResourcesLoadPanel resourcesLoadPanel, - ResourceLoadDisplayData generatedData, TimeTracker timeTracker) { + ResourceLoadDisplayData generatedData, + TimeTracker timeTracker) { + Timeplot chartLoadTimeplot = createEmptyTimeplot(); - ResourceLoadChartFiller chartFiller = - new ResourceLoadChartFiller(generatedData); - loadChart = new Chart(chartLoadTimeplot, - chartFiller, timeTracker); + ResourceLoadChartFiller chartFiller = new ResourceLoadChartFiller(generatedData); + loadChart = new Chart(chartLoadTimeplot, chartFiller, timeTracker); loadChart.setZoomLevel(timeTracker.getDetailLevel()); chartFiller.initializeResources(); - if (resourcesLoadPanel.isVisibleChart()) { + if ( resourcesLoadPanel.isVisibleChart() ) { loadChart.fillChart(); } + return chartLoadTimeplot; } - private IZoomLevelChangedListener fillOnZoomChange( - final ResourcesLoadPanel resourcesLoadPanel) { + private IZoomLevelChangedListener fillOnZoomChange(final ResourcesLoadPanel resourcesLoadPanel) { IZoomLevelChangedListener zoomListener = new IZoomLevelChangedListener() { @Override public void zoomLevelChanged(ZoomLevel detailLevel) { - if (loadChart == null) { + if ( loadChart == null ) { return; } loadChart.setZoomLevel(detailLevel); - if (resourcesLoadPanel.isVisibleChart()) { + if ( resourcesLoadPanel.isVisibleChart() ) { loadChart.fillChart(); } adjustZoomPositionScroll(resourcesLoadPanel); @@ -1054,10 +1041,9 @@ public class ResourceLoadController implements Composer { @Override protected ILoadChartData getDataOn(Interval interval) { - List assignments = generatedData - .getDayAssignmentsConsidered(); - return new ResourceLoadChartData(assignments, - resources, interval.getStart(), interval.getFinish()); + List assignments = generatedData.getDayAssignmentsConsidered(); + + return new ResourceLoadChartData(assignments, resources, interval.getStart(), interval.getFinish()); } private void initializeResources() { @@ -1068,10 +1054,9 @@ public class ResourceLoadController implements Composer { } private static class ListenerTracker { - private final List trackedListeners = new ArrayList(); + private final List trackedListeners = new ArrayList<>(); - public void addListeners(ResourcesLoadPanel panel, - Iterable listeners) { + public void addListeners(ResourcesLoadPanel panel, Iterable listeners) { for (IListenerAdder each : listeners) { Object listener = each.addAndReturnListener(panel); trackedListeners.add(listener); @@ -1080,13 +1065,11 @@ public class ResourceLoadController implements Composer { } private void addCommands(ResourcesLoadPanel resourcesLoadPanel) { - resourcesLoadPanel.add(commands.toArray(new IToolbarCommand[commands - .size()])); + resourcesLoadPanel.add(commands.toArray(new IToolbarCommand[commands.size()])); } private BankHolidaysMarker createBankHolidaysMarker() { - BaseCalendar defaultCalendar = configurationDAO.getConfiguration() - .getDefaultCalendar(); + BaseCalendar defaultCalendar = configurationDAO.getConfiguration().getDefaultCalendar(); return BankHolidaysMarker.create(defaultCalendar); } @@ -1106,8 +1089,7 @@ public class ResourceLoadController implements Composer { }); } - public void setPlanningControllerEntryPoints( - IOrderPlanningGate planningControllerEntryPoints) { + public void setPlanningControllerEntryPoints(IOrderPlanningGate planningControllerEntryPoints) { this.planningControllerEntryPoints = planningControllerEntryPoints; } diff --git a/pom.xml b/pom.xml index 8cd3a96d1..35ffe1abf 100644 --- a/pom.xml +++ b/pom.xml @@ -359,27 +359,28 @@ org.easymock easymock - 2.4 + 3.4 test org.easymock easymockclassextension - 2.4 + 3.2 test - + + commons-collections commons-collections - 3.2 + 3.2.2