From f288ea524431fe04f664ed22cb4bbe532761b13e Mon Sep 17 00:00:00 2001
From: Guillaume Thomazon <gtn@kereval.com>
Date: Wed, 13 Mar 2013 15:27:27 +0000
Subject: [PATCH] Add date personnalisation

git-svn-id: https://scm.gforge.inria.fr/authscm/ycadoret/svn/gazelle/Maven/gazelle-proxy/trunk@34260 356b4b1a-1d2b-0410-8bf1-ffa24008f01e
---
 .../gazelle/proxy/gui/MessagesStepBean.java   | 159 ++++++++++++++++++
 1 file changed, 159 insertions(+)

diff --git a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/gui/MessagesStepBean.java b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/gui/MessagesStepBean.java
index 108fe172..a44c2b9b 100644
--- a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/gui/MessagesStepBean.java
+++ b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/gui/MessagesStepBean.java
@@ -2,7 +2,10 @@ package net.ihe.gazelle.proxy.gui;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.Map;
 
@@ -32,11 +35,15 @@ import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Scope;
 import org.jboss.seam.faces.Redirect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Name("messagesStepBean")
 @Scope(ScopeType.PAGE)
 public class MessagesStepBean {
 
+	private static Logger log = LoggerFactory.getLogger(MessagesStepBean.class);
+
 	private transient HibernateMessageDataModel<AbstractMessage> messageDataModel;
 	private MessageFilterStep messageFilterStep;
 
@@ -198,5 +205,157 @@ public class MessagesStepBean {
 	public void setFilterPathReceiver(boolean filterPathReceiver) {
 		messageFilterStep.setFilterPathReceiver(filterPathReceiver);
 	}
+	
+	public boolean isFilterPersoDate() {
+		return messageFilterStep.isFilterPersoDate();
+	}
+
+	public void setFilterPersoDate(boolean filterPersoDate) {
+		messageFilterStep.setFilterPersoDate(filterPersoDate);
+	}
+
+	public Date getStartDate() {
+		return messageFilterStep.startDate;
+	}
+
+	public Date getEndDate() {
+		return messageFilterStep.endDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		messageFilterStep.setStartDate(startDate);
+	}
+
+	public void setEndDate(Date endDate) {
+		messageFilterStep.setEndDate(endDate);
+	}
 
+	public void dateSelection(String value) {
+		if (value.equals("1")) {
+			setFilterPersoDate(false);
+		} else {
+			setFilterDates(false);
+		}
+	}
+
+	private String currentSelectDate;
+
+	public String getCurrentSelectDate() {
+		return currentSelectDate;
+	}
+
+	public void setCurrentSelectDate(String currentSelectDate) {
+		this.currentSelectDate = currentSelectDate;
+	}
+
+	public void selectDate(String date) {
+		if (!(date.equals("--")) && !(date.isEmpty()) && date != null) {
+			Date startDate, endDate = null;
+			startDate = new Date();
+			Calendar cal = new GregorianCalendar();
+
+			if (date.equals("today")) {
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("yesterday")) {
+				if (cal.get(Calendar.DAY_OF_YEAR) == 1) {
+					cal.set(Calendar.YEAR, (cal.get(Calendar.YEAR) - 1));
+					cal.set(Calendar.MONTH, cal.get(Calendar.DECEMBER));
+					cal.set(Calendar.DAY_OF_MONTH, 31);
+				} else {
+					cal.set(Calendar.DAY_OF_YEAR, (cal.get(Calendar.DAY_OF_YEAR) - 1));
+				}
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("this week")) {
+				if (cal.get(Calendar.DAY_OF_YEAR) < 7) {
+					cal.set(Calendar.YEAR, (cal.get(Calendar.YEAR) - 1));
+					cal.set(Calendar.MONTH, cal.get(Calendar.DECEMBER));
+					cal.set(Calendar.DAY_OF_MONTH, 31 - (7 - cal.get(Calendar.DAY_OF_YEAR)));
+				}
+				cal.set(Calendar.DAY_OF_WEEK, 2);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("this month")) {
+				cal.set(Calendar.DAY_OF_MONTH, 1);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("last week")) {
+				if (cal.get(Calendar.WEEK_OF_YEAR) == 1) {
+					cal.set(Calendar.YEAR, (cal.get(Calendar.YEAR) - 1));
+					cal.set(Calendar.WEEK_OF_YEAR, 52);
+				} else {
+					cal.set(Calendar.WEEK_OF_YEAR, (cal.get(Calendar.WEEK_OF_YEAR) - 1));
+				}
+				cal.set(Calendar.DAY_OF_WEEK, 2);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("last month")) {
+				if (cal.get(Calendar.MONTH) == 0) {
+					cal.set(Calendar.YEAR, (cal.get(Calendar.YEAR) - 1));
+					cal.set(Calendar.MONTH, cal.get(Calendar.DECEMBER));
+				} else {
+					cal.set(Calendar.MONTH, (cal.get(Calendar.MONTH) - 1));
+				}
+				cal.set(Calendar.DAY_OF_MONTH, 1);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+			}
+			if (date.equals("last hour")) {
+				cal.set(Calendar.HOUR, (cal.get(Calendar.HOUR) - 1));
+			}
+			startDate = cal.getTime();
+			endDate = new Date();
+
+			cal = new GregorianCalendar();
+			if (date.equals("yesterday")) {
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+				endDate = cal.getTime();
+			}
+			if (date.equals("last week")) {
+				cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR));
+				cal.set(Calendar.DAY_OF_WEEK, 2);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+				endDate = cal.getTime();
+			}
+			if (date.equals("last month")) {
+				cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
+				cal.set(Calendar.DAY_OF_MONTH, 1);
+				cal.set(Calendar.HOUR_OF_DAY, 0);
+				cal.set(Calendar.MINUTE, 0);
+				cal.set(Calendar.SECOND, 0);
+				cal.set(Calendar.MILLISECOND, 0);
+				endDate = cal.getTime();
+			}
+			messageFilterStep.setStartDate(startDate);
+			messageFilterStep.setEndDate(endDate);
+
+		} else {
+			log.error("Date problem");
+		}
+
+	}
 }
-- 
GitLab