From d44d69ec7c108f984fb19180223b50481a38952f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 26 Aug 2009 11:28:22 +0200 Subject: [PATCH] ItEr23S10CUAsignacionGrupoRecursosAPlanificacionItEr22S10: Moving DetailItem to top level --- .../zkoss/ganttz/timetracker/TimeTracker.java | 8 +- .../timetracker/TimeTrackerComponent.java | 5 +- .../ganttz/timetracker/zoom/DetailItem.java | 113 ++++++++++++++++++ .../timetracker/zoom/TimeTrackerState.java | 111 ----------------- 4 files changed, 120 insertions(+), 117 deletions(-) create mode 100644 ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java index a41700e41..9dc479404 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java @@ -9,10 +9,10 @@ import org.joda.time.LocalDate; import org.zkoss.ganttz.DatesMapperOnInterval; import org.zkoss.ganttz.IDatesMapper; import org.zkoss.ganttz.data.Task; +import org.zkoss.ganttz.timetracker.zoom.DetailItem; import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener; import org.zkoss.ganttz.timetracker.zoom.TimeTrackerState; import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; -import org.zkoss.ganttz.timetracker.zoom.TimeTrackerState.DetailItem; import org.zkoss.ganttz.util.Interval; import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; @@ -45,7 +45,7 @@ public class TimeTracker { zoomListeners.addListener(listener); } - public Collection getDetailsFirstLevel() { + public Collection getDetailsFirstLevel() { if (detailsFirstLevelCached == null) { detailsFirstLevelCached = getTimeTrackerState() .getFirstLevelDetails(interval); @@ -53,7 +53,7 @@ public class TimeTracker { return detailsFirstLevelCached; } - public Collection getDetailsSecondLevel() { + public Collection getDetailsSecondLevel() { if (detailsSecondLevelCached == null) { detailsSecondLevelCached = getTimeTrackerState() .getSecondLevelDetails(interval); @@ -89,7 +89,7 @@ public class TimeTracker { // Code to improve. Not optimus. We have to calculate the details twice int result = 0; Collection detailsFirstLevel = getDetailsFirstLevel(); - for (TimeTrackerState.DetailItem item : detailsFirstLevel) { + for (DetailItem item : detailsFirstLevel) { result += item.getSize(); } return result; diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java index d19c2ac77..843ccc5c6 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java @@ -2,6 +2,7 @@ package org.zkoss.ganttz.timetracker; import java.util.Collection; +import org.zkoss.ganttz.timetracker.zoom.DetailItem; import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener; import org.zkoss.ganttz.timetracker.zoom.TimeTrackerState; import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; @@ -64,11 +65,11 @@ public abstract class TimeTrackerComponent extends HtmlMacroComponent { protected abstract void scrollHorizontalPercentage(int pixelsDisplacement); - public Collection getDetailsFirstLevel() { + public Collection getDetailsFirstLevel() { return timeTracker.getDetailsFirstLevel(); } - public Collection getDetailsSecondLevel() { + public Collection getDetailsSecondLevel() { return timeTracker.getDetailsSecondLevel(); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java new file mode 100644 index 000000000..edd6de1e2 --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java @@ -0,0 +1,113 @@ +package org.zkoss.ganttz.timetracker.zoom; + +import org.joda.time.DateTime; +import org.joda.time.Days; + +/** + * This class was conceived as an immutable class but it required to + * procesate twice DetailItem collections so it has now proper setters + * @author Francisco Javier Moran Rúa + * @author Lorenzo Tilve Álvaro + */ +public final class DetailItem { + + private int size; + private String name; + + private boolean even; + private boolean bankHoliday; + + private boolean currentPeriod; + private int currentDayOffset; + + private DateTime startDate; + + private DateTime endDate; + + public DetailItem(int size, String name) { + this(size, name, false); + } + + public DetailItem(int size, String name, DateTime startDate, + DateTime endDate) { + this(size, name, false); + this.startDate = startDate; + this.endDate = endDate; + this.markCurrentDay(); + } + + public void markCurrentDay() { + if (this.startDate.isBeforeNow() && this.endDate.isAfterNow()) { + int offsetInPx = Math + .round((((float) Days.daysBetween(this.startDate, + new DateTime()).getDays()) / ((float) Days + .daysBetween(this.startDate, this.endDate) + .getDays())) + * this.size); + this.markCurrentDay(offsetInPx); + } + } + + public DetailItem(int size, String name, boolean even) { + this.size = size; + this.name = name; + this.even = even; + this.currentPeriod = false; + this.currentDayOffset = 0; + } + + public DetailItem(int size, String name, int currentdayoffset) { + this.size = size; + this.name = name; + this.even = false; + this.bankHoliday = false; + this.currentPeriod = true; + this.currentDayOffset = currentdayoffset; + } + + public int getSize() { + return size; + } + + public String getName() { + return name; + } + + public DateTime getStartDate() { + return startDate; + } + + public DateTime getEndDate() { + return endDate; + } + + public void setEven(boolean even) { + this.even = even; + } + + public void markCurrentDay(int offset) { + this.currentPeriod = true; + this.currentDayOffset = offset; + } + + public boolean isEven() { + return even; + } + + public boolean isBankHoliday() { + return bankHoliday; + } + + public void setBankHoliday(boolean bankHoliday) { + this.bankHoliday = bankHoliday; + } + + public boolean isCurrentPeriod() { + return currentPeriod; + } + + public int getCurrentDayOffset() { + return currentDayOffset; + } + +} \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java index bab9d91f2..fbf36f55a 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java @@ -7,8 +7,6 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.List; -import org.joda.time.DateTime; -import org.joda.time.Days; import org.zkoss.ganttz.util.Interval; /** @@ -20,115 +18,6 @@ public abstract class TimeTrackerState { protected static final long MILLSECONDS_IN_DAY = 1000 * 60 * 60 * 24; protected static final int NUMBER_OF_ITEMS_MINIMUM = 10; - /** - * This class was conceived as an immutable class but it required to - * procesate twice DetailItem collections so it has now proper setters - * @author Francisco Javier Moran Rúa - * @author Lorenzo Tilve Álvaro - */ - public final static class DetailItem { - - private int size; - private String name; - - private boolean even; - private boolean bankHoliday; - - private boolean currentPeriod; - private int currentDayOffset; - - private DateTime startDate; - - private DateTime endDate; - - public DetailItem(int size, String name) { - this(size, name, false); - } - - public DetailItem(int size, String name, DateTime startDate, - DateTime endDate) { - this(size, name, false); - this.startDate = startDate; - this.endDate = endDate; - this.markCurrentDay(); - } - - public void markCurrentDay() { - if (this.startDate.isBeforeNow() && this.endDate.isAfterNow()) { - int offsetInPx = Math - .round((((float) Days.daysBetween(this.startDate, - new DateTime()).getDays()) / ((float) Days - .daysBetween(this.startDate, this.endDate) - .getDays())) - * this.size); - this.markCurrentDay(offsetInPx); - } - } - - public DetailItem(int size, String name, boolean even) { - this.size = size; - this.name = name; - this.even = even; - this.currentPeriod = false; - this.currentDayOffset = 0; - } - - public DetailItem(int size, String name, int currentdayoffset) { - this.size = size; - this.name = name; - this.even = false; - this.bankHoliday = false; - this.currentPeriod = true; - this.currentDayOffset = currentdayoffset; - } - - public int getSize() { - return size; - } - - public String getName() { - return name; - } - - public DateTime getStartDate() { - return startDate; - } - - public DateTime getEndDate() { - return endDate; - } - - public void setEven(boolean even) { - this.even = even; - } - - public void markCurrentDay(int offset) { - this.currentPeriod = true; - this.currentDayOffset = offset; - } - - public boolean isEven() { - return even; - } - - public boolean isBankHoliday() { - return bankHoliday; - } - - public void setBankHoliday(boolean bankHoliday) { - this.bankHoliday = bankHoliday; - } - - public boolean isCurrentPeriod() { - return currentPeriod; - } - - public int getCurrentDayOffset() { - return currentDayOffset; - } - - } - public Collection getFirstLevelDetails(Interval interval) { return markEvens(createDetailsForFirstLevel(interval)); }