From 984b98f317be3cc497cabd3c0a09a73fd3e03976 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 3 Nov 2009 23:25:02 +0100 Subject: [PATCH] ItEr33S08ValidacionEProbasFuncionaisItEr32S09: Copying mutable values in order to preserve encapsulation --- .../data/DefaultFundamentalProperties.java | 17 +++++++++-------- .../main/java/org/zkoss/ganttz/data/Task.java | 3 +++ .../common/exceptions/ValidationException.java | 2 +- .../hibernate/IntervalOfPartialDatesType.java | 2 +- .../business/planner/entities/TaskElement.java | 12 ++++++++---- .../workreports/entities/WorkReport.java | 4 ++-- .../web/calendars/BaseCalendarModel.java | 3 ++- .../components/CalendarHighlightedDays.java | 6 +++--- .../components/finders/LabelBandboxFinder.java | 2 +- .../worker/CriterionSatisfactionDTO.java | 4 ++-- 10 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java index e59c3625b..428aba4f1 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java @@ -30,13 +30,13 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties private String name; - private Date beginDate = null; + private long beginDate; private long lengthMilliseconds = 0; private String notes; - private Date hoursAdvanceEndDate; + private long hoursAdvanceEndDate; private Date advanceEndDate; @@ -55,10 +55,10 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties Date advanceEndDate, BigDecimal hoursAdvancePercentage, BigDecimal advancePercentage) { this.name = name; - this.beginDate = beginDate; + this.beginDate = beginDate.getTime(); this.lengthMilliseconds = lengthMilliseconds; this.notes = notes; - this.hoursAdvanceEndDate = hoursAdvanceEndDate; + this.hoursAdvanceEndDate = hoursAdvanceEndDate.getTime(); this.advanceEndDate = advanceEndDate; this.hoursAdvancePercentage = hoursAdvancePercentage; this.advancePercentage = advancePercentage; @@ -74,11 +74,11 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties } public Date getBeginDate() { - return beginDate; + return new Date(beginDate); } public long setBeginDate(Date beginDate) { - this.beginDate = beginDate; + this.beginDate = beginDate.getTime(); return lengthMilliseconds; } @@ -105,12 +105,13 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties @Override public Date getHoursAdvanceEndDate() { - return hoursAdvanceEndDate; + return new Date(hoursAdvanceEndDate); } @Override public Date getAdvanceEndDate() { - return advanceEndDate; + return advanceEndDate != null ? new Date(advanceEndDate.getTime()) + : null; } @Override public BigDecimal getHoursAdvancePercentage() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index c96458cfa..3ab510246 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -166,6 +166,9 @@ public abstract class Task implements ITaskFundamentalProperties { } public void setEndDate(Date value) { + if (value == null) { + return; + } setLengthMilliseconds(value.getTime() - getBeginDate().getTime()); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/exceptions/ValidationException.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/exceptions/ValidationException.java index acd53a10c..15814d504 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/exceptions/ValidationException.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/exceptions/ValidationException.java @@ -32,7 +32,7 @@ public class ValidationException extends RuntimeException { private InvalidValue[] invalidValues; public InvalidValue[] getInvalidValues() { - return invalidValues; + return invalidValues.clone(); } public ValidationException(InvalidValue invalidValue) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/partialtime/hibernate/IntervalOfPartialDatesType.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/partialtime/hibernate/IntervalOfPartialDatesType.java index 0ae5f1219..ad42b2a1f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/partialtime/hibernate/IntervalOfPartialDatesType.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/partialtime/hibernate/IntervalOfPartialDatesType.java @@ -79,7 +79,7 @@ public class IntervalOfPartialDatesType implements CompositeUserType { @Override public String[] getPropertyNames() { - return PROPERTY_NAMES; + return PROPERTY_NAMES.clone(); } @Override diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java index fd431f960..e9a70c503 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java @@ -137,11 +137,12 @@ public abstract class TaskElement extends BaseEntity { } public Date getStartDate() { - return startDate; + return startDate != null ? new Date(startDate.getTime()) : null; } public void setStartDate(Date startDate) { - this.startDate = startDate; + this.startDate = startDate != null ? new Date(startDate.getTime()) + : null; } @@ -150,6 +151,9 @@ public abstract class TaskElement extends BaseEntity { * @param newStartDate */ public void moveTo(Date newStartDate) { + if (newStartDate == null) { + return; + } long durationMilliseconds = this.endDate.getTime() - this.startDate.getTime(); this.startDate = newStartDate; @@ -160,11 +164,11 @@ public abstract class TaskElement extends BaseEntity { protected abstract void moveAllocations(); public Date getEndDate() { - return endDate; + return endDate != null ? new Date(endDate.getTime()) : endDate; } public void setEndDate(Date endDate) { - this.endDate = endDate; + this.endDate = endDate != null ? new Date(endDate.getTime()) : null; } void add(Dependency dependency) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workreports/entities/WorkReport.java b/navalplanner-business/src/main/java/org/navalplanner/business/workreports/entities/WorkReport.java index a20eba804..b836708f3 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workreports/entities/WorkReport.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workreports/entities/WorkReport.java @@ -79,11 +79,11 @@ public class WorkReport extends BaseEntity { } public Date getDate() { - return date; + return date != null ? new Date(date.getTime()) : null; } public void setDate(Date date) { - this.date = date; + this.date = date != null ? new Date(date.getTime()) : null; } public String getPlace() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java index 7433be78a..c8f2c8896 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java @@ -192,7 +192,8 @@ public class BaseCalendarModel implements IBaseCalendarModel { @Override public Date getSelectedDay() { - return this.selectedDate; + return selectedDate != null ? new Date(this.selectedDate.getTime()) + : null; } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java index 359154ca1..04f98a84b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java @@ -51,15 +51,15 @@ public class CalendarHighlightedDays extends HtmlMacroComponent { } public Date getInternalValue() { - return value; + return value != null ? new Date(value.getTime()) : null; } public void setValue(Date value) { - this.value = value; + this.value = value != null ? new Date(value.getTime()) : null; } public Date getValue() { - return value; + return value != null ? new Date(value.getTime()) : null; } public void setAncestorExceptionDays(String ancestorExceptionDays) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/LabelBandboxFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/LabelBandboxFinder.java index f8d82c911..89bed4418 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/LabelBandboxFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/LabelBandboxFinder.java @@ -86,7 +86,7 @@ public class LabelBandboxFinder extends BandboxFinder implements IBandboxFinder @Override public String[] getHeaders() { - return headers; + return headers.clone(); } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionSatisfactionDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionSatisfactionDTO.java index 5d4075131..2a83caacc 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionSatisfactionDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionSatisfactionDTO.java @@ -99,11 +99,11 @@ public class CriterionSatisfactionDTO implements INewObject { } public Date getStartDate() { - return startDate; + return new Date(startDate.getTime()); } public Date getEndDate() { - return endDate; + return new Date(endDate.getTime()); } public CriterionSatisfaction getCriterionSatisfaction() {