/** * Adds the scheduled notifications. * * @param reportDefinition the report definition * @param report the report */ public void addScheduledNotifications(ReportDefinition reportDefinition, Report report) { // Note : there is a change in busineess requirement, that at firing time only we generate the // message/recipients // So only one Scheduled Notification per Planned Notification. if (CollectionUtils.isEmpty(reportDefinition.getPlannedNotifications())) return; Date now = nowFactory.getNow(); Calendar cal = GregorianCalendar.getInstance(); for (PlannedNotification plannedNotification : reportDefinition.getPlannedNotifications()) { ScheduledNotification scheduledNotification = plannedNotification.createScheduledNotification("dummy"); if (plannedNotification instanceof PlannedEmailNotification) { ScheduledEmailNotification scheduledEmailNotification = (ScheduledEmailNotification) scheduledNotification; scheduledEmailNotification.setBody("dummy"); scheduledEmailNotification.setSubjectLine("dummy"); } // set the scheduled dates if (reportDefinition.getBaseDate() != null) cal.setTime(reportDefinition.getBaseDate()); else cal.setTime(now); cal.add( reportDefinition.getTimeScaleUnitType().getCalendarTypeCode(), plannedNotification.getIndexOnTimeScale()); scheduledNotification.setScheduledOn(cal.getTime()); if (plannedNotification.getIndexOnTimeScale() == 0 || DateUtils.compateDateAndTime(now, cal.getTime()) < 0) report.addScheduledNotification(scheduledNotification); } }
/* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { StringBuilder sb = new StringBuilder("ReportDefintionWrapper ["); sb.append(def.getName()); if (substitute != null) { sb.append(" => ").append(substitute.getName()); } sb.append(", ").append(String.valueOf(action)); sb.append("]"); return sb.toString(); }
/** * Creates a new Report object. * * @param reportDefinition the report definition * @param aeReport the ae report * @param baseDate the base date * @return the report */ public Report createReport( final ReportDefinition reportDefinition, final ExpeditedAdverseEventReport aeReport, Date baseDate) { assert reportDefinition != null : "ReportDefinition must be not null. Unable to create a Report"; assert aeReport != null : "ExpeditedAdverseEventReport should not be null. Unable to create a Report"; Date now = nowFactory.getNow(); Report report = reportDefinition.createReport(); report.setCreatedOn(now); Date dueDate = reportDefinition.getExpectedDueDate(baseDate == null ? now : baseDate); report.setDueOn(dueDate); report.getLastVersion().setReportVersionId("0"); // default report.getLastVersion().setAmendmentNumber(new Integer(0)); // attach the aeReport to report aeReport.addReport(report); addScheduledNotifications(reportDefinition, report); return report; }
/** * Gets the readable message. * * @return the readable message */ public String getReadableMessage() { StringBuilder sb = new StringBuilder(); if (action == ActionType.AMEND) { sb.append("Amend ").append(def.getLabel()); if (substitute != null) { sb.append(" with ").append(substitute.getLabel()); } } else if (action == ActionType.WITHDRAW) { sb.append("Withdraw ").append(def.getLabel()); if (substitute != null) { sb.append(" and replace with ").append(substitute.getLabel()); } } else if (action == ActionType.EDIT) { sb.append("Edit ").append(def.getLabel()); } else if (action == ActionType.CREATE) { sb.append("Create ").append(def.getLabel()); } return sb.toString(); }
@Override public Map<String, Object> referenceData( HttpServletRequest request, ReportDefinitionCommand command) { Map<String, Object> map = new LinkedHashMap<String, Object>(); BeanWrapper wrappedCommand = new BeanWrapperImpl(command); // basic details tab fields TabWithFields<ReportDefinitionCommand> tab = getTabFromFlow(getFlow(), BasicsTab.class); Map<String, InputFieldGroup> fieldGroupMap = tab.createFieldGroups(command); InputFieldGroup fieldGroup = fieldGroupMap.get("reportDefinitionOrganization"); List<Pair> fieldList = fetchFieldValues(fieldGroup, wrappedCommand); fieldGroup = fieldGroupMap.get("reportDefinitionFieldGroup"); // the name of the // fieldgroup fieldList.addAll(fetchFieldValues(fieldGroup, wrappedCommand)); map.put(tab.getShortTitle(), fieldList); // report definition tab List<ReportDeliveryDefinition> deliveries = command.getReportDefinition().getDeliveryDefinitions(); if (deliveries != null) { List<Pair> pairs = new ArrayList<Pair>(); for (ReportDeliveryDefinition rdd : deliveries) { if (rdd.getEntityType() == ReportDeliveryDefinition.ENTITY_TYPE_PERSON) { Pair p = new Pair("Person", rdd.getEntityName()); p.setAttribute1(rdd.getEndPoint()); p.setAttribute2(rdd.getFormat().getDisplayName()); pairs.add(p); } if (rdd.getEntityType() == ReportDeliveryDefinition.ENTITY_TYPE_ROLE) { Pair p = new Pair("Role", rdd.getEntityName()); p.setAttribute1(String.valueOf(command.getRoles().get(rdd.getEndPoint()))); p.setAttribute2(rdd.getFormat().getDisplayName()); pairs.add(p); } } for (ReportDeliveryDefinition rdd : deliveries) { if (rdd.getEntityType() == ReportDeliveryDefinition.ENTITY_TYPE_SYSTEM) { Pair p = new Pair("System", rdd.getEntityName()); p.setAttribute1(rdd.getEndPoint()); p.setAttribute2(rdd.getFormat().getDisplayName()); pairs.add(p); } } map.put("rdd", pairs); } // Mandatory Field Definition Tab tab = getTabFromFlow(getFlow(), ReportMandatoryFieldDefinitionTab.class); fieldGroupMap = tab.createFieldGroups(command); map.put("mandatoryFields", fieldGroupMap); // Notification details tab tab = getTabFromFlow(getFlow(), NotificationsTab.class); fieldGroupMap = tab.createFieldGroups(command); Map<String, Object> pnfMap = new LinkedHashMap<String, Object>(); int i = 0; for (PlannedNotification nf : command.getReportDefinition().getPlannedNotifications()) { PlannedEmailNotification penf = (PlannedEmailNotification) nf; List<Pair> pairs = new ArrayList<Pair>(); i++; // - recipient StringBuilder sb = new StringBuilder(); for (Recipient r : penf.getRecipients()) { if (sb.length() > 0) sb.append(","); if (r instanceof RoleBasedRecipient) { sb.append(command.getRoles().get(r.getContact())); } else { sb.append(r.getContact()); } } pairs.add(new Pair("Recipients", sb.toString())); // - subject pairs.add(new Pair("Subject", penf.getSubjectLine())); // - body NotificationBodyContent body = penf.getNotificationBodyContent(); if (body != null) { pairs.add(new Pair("Message", body.getBody())); } else { pairs.add(new Pair("Message", null)); } ReportDefinition rep = command.getReportDefinition(); TimeScaleUnit unit = null; if (rep != null) { unit = rep.getTimeScaleUnitType(); } if (unit != null) { pnfMap.put( "Notification " + i + " of " + unit.getDisplayName() + " " + penf.getIndexOnTimeScale(), pairs); } else { pnfMap.put("Notification " + i + " of UNKNOWN " + penf.getIndexOnTimeScale(), pairs); } } map.put("PENF", pnfMap); Map<String, Object> refDataMap = super.referenceData(command); refDataMap.put("FIELDS", map); return refDataMap; }
/** * The logic for comparing these reports definitons is reverse in the sense that, lesser is the * period of reporting, higher is the priority In other words, we are comparing the priorties */ public int compare(ReportDefinition o1, ReportDefinition o2) { long l1 = o1.getTimeScaleUnitType().getMilliSecondConversionFactor() * o1.getDuration(); long l2 = o2.getTimeScaleUnitType().getMilliSecondConversionFactor() * o2.getDuration(); return (int) (l2 - l1); }
/* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return def.hashCode(); }
/* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { return def.equals(obj); }