package com.constellio.app.ui.pages.events; import com.constellio.app.ui.application.NavigatorConfigurationService; import com.constellio.app.ui.params.ParamUtils; import org.joda.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import java.util.Map; public class EventViewParameters implements Serializable{ transient public static String EVENT_TYPE = "eventType"; transient public static String EVENT_CATEGORY = "eventCategory"; transient public static String BY_ID_EVENT_PARAMETER = "id"; transient public static String EVENT_START_DATE = "startDate"; transient public static String EVENT_END_DATE = "endDate"; private String parametersString; transient private EventCategory eventCategory; transient private Date startDate; transient private Date endDate; transient private String id; transient private String eventType; public EventViewParameters(String parametersString) { this.parametersString = parametersString; } public EventCategory getEventCategory() { if (eventCategory == null){ buildParameters(); } return eventCategory; } public Date getEventStartDate() { if (startDate == null){ buildParameters(); } return startDate; } public Date getEventEndDate() { if (endDate == null){ buildParameters(); } return endDate; } public String getEventId() { if (eventCategory == null){ buildParameters(); } return id; } public String getEventType() { if (eventType == null){ buildParameters(); } return eventType; } private void buildParameters() { String viewNameAndParameters = NavigatorConfigurationService.EVENT_CATEGORY + "/" + this.parametersString; Map<String, String> parameters = ParamUtils.getParamsMap(viewNameAndParameters); String dateString = parameters.get(EventViewParameters.EVENT_START_DATE); if (dateString != null){ this.startDate = LocalDateTime.parse(dateString).withTime(0, 0, 0, 0).toDate(); }else{ this.startDate = new LocalDateTime().minusWeeks(1).withTime(0, 0, 0, 0).toDate(); } String endString = parameters.get(EventViewParameters.EVENT_END_DATE); if (endString != null){ this.endDate = LocalDateTime.parse(endString).withTime(23, 59, 59, 999).toDate(); }else{ this.endDate = new LocalDateTime().withTime(23, 59, 59, 999).toDate(); } this.eventType = parameters.get(EventViewParameters.EVENT_TYPE); String eventCategoryName = parameters.get(EventViewParameters.EVENT_CATEGORY); if(eventCategoryName == null){ eventCategoryName = this.parametersString; } this.eventCategory = EventCategory.valueOf(eventCategoryName); this.id = parameters.get(EventViewParameters.BY_ID_EVENT_PARAMETER); if (id == null){ id = ""; } } }