/*
* Licensed Materials - Property of Perforce Software, Inc.
* © Copyright Perforce Software, Inc. 2014, 2021
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
package demo.gantt.faces;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.faces.model.SelectItem;
import ilog.views.faces.IlvFacesPageIdUtil;
import ilog.views.faces.IlvFacesUtil;
import ilog.views.gantt.IlvActivity;
import ilog.views.gantt.faces.component.IlvFacesHierarchyChartView;
import ilog.views.gantt.faces.component.data.IlvFacesGanttXMLDataSource;
import ilog.views.gantt.faces.dhtml.component.IlvFacesDHTMLGanttChartView;
/**
* This bean stores all contextual data for every page from a browser accessing
* this web application. The data remains in memory until the session expires.
*/
public class ContextDataBean {
// Structure used to store the context data in memory
private Map<String, ContextData> _contextMap;
/**
* Constructor: Instantiates the context map.
*/
public ContextDataBean() {
_contextMap = new ConcurrentHashMap<String, ContextData>();
}
/**
* Access the {@link ContextData} for the current web page.
*/
static ContextData getContextData() {
// Access the ContextDataBean from the session
ContextDataBean bean = (ContextDataBean) IlvFacesUtil.getSessionAttribute("dataBean");
if (null == bean) {
// Create a new bean for this session
bean = new ContextDataBean();
IlvFacesUtil.setSessionAttribute("dataBean", bean);
}
// Retrieve the identifier for the web page that originated
// the request that is being handled
String pageId = IlvFacesPageIdUtil.getPageId();
ContextData data = bean._contextMap.get(pageId);
if (null == data) {
// Create a new context data
data = new ContextData();
bean._contextMap.put(pageId, data);
}
return data;
}
/**
* Inner class to aggregate all context data into one structure
*/
static class ContextData {
/**
* The XML Data Source binding component.
*/
IlvFacesGanttXMLDataSource xmlDS = null;
/**
* The gantt view component binding.
*/
IlvFacesHierarchyChartView ganttView = new IlvFacesDHTMLGanttChartView();
/**
* The list of activity used as the selectItems displayed by the
* selectOneMenu.
*/
ArrayList<SelectItem> activityItems = null;
/**
* The map that sort the activities by their id.
*/
HashMap<String, IlvActivity> activityById = null;
/**
* The start time of the current activity.
*/
Date startActivityDate = null;
/**
* The end time of the current activity.
*/
Date endActivityDate = null;
/**
* The activity that is currently selected.
*/
IlvActivity currentActivity = null;
/**
* The activity ID = the value of the combo.
*/
String activityId = null;
}
}