diff --git a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java index b281a7409915fe17e47e3e7fa5160e48b370ef0c..feaf463514f46a61c108d198e5359d1a59ffd47b 100644 --- a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java +++ b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java @@ -2,8 +2,10 @@ package net.ihe.gazelle.proxy.dao; 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.HashSet; import java.util.List; import java.util.Set; @@ -17,8 +19,12 @@ import net.ihe.gazelle.proxy.model.tm.Step; import net.ihe.gazelle.proxy.model.tm.TestInstance; import org.apache.commons.lang.StringEscapeUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MessageFilterStep<T extends AbstractMessage> implements MessageFilter<T> { + + private static Logger log = LoggerFactory.getLogger(MessageFilterStep.class); private Step step; private boolean filterPathReceiver = true; @@ -279,19 +285,21 @@ public class MessageFilterStep<T extends AbstractMessage> implements MessageFilt Crit oneOfPath = new CritLogical(false, pathsArray); criterions.add(oneOfPath); } - + if (filterPersoDate) { - if (endDate.before(startDate)){ - endDate=startDate; + if (endDate.before(startDate)) { + endDate = startDate; } - + criterions.add(new CritSimple("dateReceived", "date", startDate, CritSimpleType.GE)); criterions.add(new CritSimple("dateReceived", "date", endDate, CritSimpleType.LE)); } if (filterDates) { startDate = getStartDate(testInstance); - endDate = step.getDate(); + // For the moment the end date is the last modification of TI + endDate = getLastModifDate(testInstance); + // endDate = step.getDate(); criterions.add(new CritSimple("dateReceived", "date", startDate, CritSimpleType.GE)); criterions.add(new CritSimple("dateReceived", "date", endDate, CritSimpleType.LE)); @@ -321,11 +329,44 @@ public class MessageFilterStep<T extends AbstractMessage> implements MessageFilt if (indexOf == 0) { startDate = testInstance.getDate(); } else { - startDate = steps.get(indexOf - 1).getDate(); + // for the moment the start date is always the date of TI creation + startDate = testInstance.getDate(); + // startDate = steps.get(indexOf - 1).getDate(); } return startDate; } + private Date getLastModifDate(TestInstance testInstance) { + Date lastModifDate = null; + List<Step> steps = testInstance.getSteps(); + int indexOf = steps.indexOf(step); + if (indexOf > 0) { + lastModifDate = steps.get(indexOf - 1).getDate(); + } + + for (int i = 0; i < steps.size();) { + for (int j = 1; j < steps.size();) { + log.info(""+steps.get(i).getDate()); + log.info(""+steps.get(j).getDate()); + if (steps.get(i).getDate().compareTo(steps.get(j).getDate()) >= 0) { + if (lastModifDate==null || lastModifDate.compareTo(steps.get(i).getDate()) <= 0) { + lastModifDate = steps.get(i).getDate(); + } + } + j++; + } + i++; + } + if (lastModifDate == null || startDate.after(lastModifDate)) { + lastModifDate.equals(startDate); + Calendar cal = new GregorianCalendar(); + cal.setTime(lastModifDate); + cal.set(Calendar.YEAR, 1); + lastModifDate = cal.getTime(); + } + return lastModifDate; + } + public boolean isFilterPathReceiver() { return filterPathReceiver; }