/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © 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.
*/
import java.util.Calendar;
import java.util.Date;
import ilog.views.gantt.IlvActivity;
import ilog.views.gantt.IlvConstraintType;
import ilog.views.gantt.IlvDuration;
import ilog.views.gantt.IlvResource;
import ilog.views.gantt.IlvTimeUtil;
import ilog.views.gantt.model.IlvDefaultGanttModel;
import ilog.views.gantt.model.IlvSimpleActivity;
import ilog.views.gantt.model.IlvSimpleConstraint;
import ilog.views.gantt.model.IlvSimpleReservation;
import ilog.views.gantt.model.IlvSimpleResource;
import ilog.views.util.time.IlvCalendarFactory;
import ilog.views.util.time.IlvCalendarUtil;
/**
* <code>SimpleProjectDataModel</code> is an in-memory data model that is
* initialized with the schedule for a simple development project.
*/
public class SimpleProjectDataModel extends IlvDefaultGanttModel {
// =========================================
// Instance Variables
// =========================================
/**
* The activities.
*/
private IlvActivity aRoot;
private IlvActivity aGatherReqts;
private IlvActivity aTalkToCusts;
private IlvActivity aCustomrList;
private IlvActivity aContactCust;
private IlvActivity aWriteUpReqs;
private IlvActivity aMarktngSpec;
private IlvActivity aDraftSpec_1;
private IlvActivity aDraftSpec_2;
private IlvActivity aPrfOfConcpt;
private IlvActivity aRoughDesign;
private IlvActivity a__CADLayout;
private IlvActivity a__Detailing;
private IlvActivity aPrototypFab;
private IlvActivity aOrderMaterl;
private IlvActivity a__Machining;
private IlvActivity aBurninTestg;
private IlvActivity aPrepareDemo;
private IlvActivity aDesignDevel;
private IlvActivity aDevelPhase1;
private IlvActivity aDevelPhase2;
private IlvActivity aDevelPhase3;
/**
* The resources.
*/
// private IlvResource rRoot;
private IlvResource rMkting;
private IlvResource rBGates;
private IlvResource rStvJbs;
private IlvResource rMkDell;
private IlvResource rLGerst;
private IlvResource rRchDev;
private IlvResource rLTrvld;
private IlvResource rJGoslg;
private IlvResource rScOaks;
private IlvResource rGBooch;
private IlvResource rLyWall;
// =========================================
// Instance Construction and Initialization
// =========================================
/**
* Constructs a new <code>SimpleProjectDataModel</code> that contains the
* schedule for a typical development project.
*/
public SimpleProjectDataModel() {
createActivities();
createResources();
createReservations();
createConstraints();
}
/**
* Creates the schedule's activities.
*/
protected void createActivities() {
IlvDuration _1Day = IlvDuration.ONE_DAY;
IlvDuration _2Days = IlvDuration.ONE_DAY.multiply(2);
IlvDuration _3Days = IlvDuration.ONE_DAY.multiply(3);
IlvDuration _5Days = IlvDuration.ONE_DAY.multiply(5);
IlvDuration _1Week = IlvDuration.ONE_WEEK;
IlvDuration _2Weeks = IlvDuration.ONE_WEEK.multiply(2);
IlvDuration _3Weeks = IlvDuration.ONE_WEEK.multiply(3);
IlvDuration _4Weeks = IlvDuration.ONE_WEEK.multiply(4);
IlvDuration _5Weeks = IlvDuration.ONE_WEEK.multiply(5);
IlvDuration _6Weeks = IlvDuration.ONE_WEEK.multiply(6);
IlvDuration _7Weeks = IlvDuration.ONE_WEEK.multiply(7);
IlvDuration _8Weeks = IlvDuration.ONE_WEEK.multiply(8);
// IlvDuration _9Weeks = IlvDuration.ONE_WEEK.multiply(9);
// IlvDuration _10Weeks = IlvDuration.ONE_WEEK.multiply(10);
IlvDuration _12Weeks = IlvDuration.ONE_WEEK.multiply(12);
IlvDuration _14Weeks = IlvDuration.ONE_WEEK.multiply(14);
IlvDuration _20Weeks = IlvDuration.ONE_WEEK.multiply(20);
Calendar calendar = IlvCalendarFactory.createInstance();
IlvCalendarUtil.dayFloor(calendar);
Date now = calendar.getTime();
Date in1Day = IlvTimeUtil.add(now, _1Day);
// Date in3Days = IlvTimeUtil.add(now, _3Days);
// Date in1Week = IlvTimeUtil.add(now, _1Week);
Date in2Weeks = IlvTimeUtil.add(now, _2Weeks);
Date in3Weeks = IlvTimeUtil.add(now, _3Weeks);
Date in4Weeks = IlvTimeUtil.add(now, _4Weeks);
Date in6Weeks = IlvTimeUtil.add(now, _6Weeks);
Date in7Weeks = IlvTimeUtil.add(now, _7Weeks);
Date in8Weeks = IlvTimeUtil.add(now, _8Weeks);
// Date in9Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(9));
// Date in10Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(10));
Date in15Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(15));
Date in20Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(20));
// Date in25Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(25));
// Date in30Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(30));
// Date in35Weeks = IlvTimeUtil.add(now, IlvDuration.ONE_WEEK.multiply(10));
aRoot = new IlvSimpleActivity("A-Root", "Project Summary", now, _20Weeks);
setRootActivity(aRoot);
aGatherReqts = new IlvSimpleActivity("A-1", "Gather Requirements", now, _2Weeks);
addActivity(aGatherReqts, aRoot);
aTalkToCusts = new IlvSimpleActivity("A-1.1", "Talk to customers", now, _3Days);
addActivity(aTalkToCusts, aGatherReqts);
aCustomrList = new IlvSimpleActivity("A-1.1.1", "Compile customer list", now, _1Day);
addActivity(aCustomrList, aTalkToCusts);
aContactCust = new IlvSimpleActivity("A-1.1.2", "Contact customers", in1Day, _2Days);
addActivity(aContactCust, aTalkToCusts);
aWriteUpReqs = new IlvSimpleActivity("A-1.2", "Write up requirements", in1Day, in2Weeks);
addActivity(aWriteUpReqs, aGatherReqts);
aMarktngSpec = new IlvSimpleActivity("A-2", "Marketing Specification", in2Weeks, _1Week);
addActivity(aMarktngSpec, aRoot);
aDraftSpec_1 = new IlvSimpleActivity("A-2.1", "First Draft Specification", in2Weeks, _3Days);
addActivity(aDraftSpec_1, aMarktngSpec);
aDraftSpec_2 = new IlvSimpleActivity("A-2.2", "Second Draft Specification", in2Weeks, _5Days);
addActivity(aDraftSpec_2, aMarktngSpec);
aPrfOfConcpt = new IlvSimpleActivity("A-3", "Proof of Concept", in3Weeks, _5Weeks);
addActivity(aPrfOfConcpt, aRoot);
aRoughDesign = new IlvSimpleActivity("A-3.1", "Rough Design", in3Weeks, _1Week);
addActivity(aRoughDesign, aPrfOfConcpt);
a__CADLayout = new IlvSimpleActivity("A-3.1.1", "CAD Layout", in3Weeks, _1Day);
addActivity(a__CADLayout, aRoughDesign);
a__Detailing = new IlvSimpleActivity("A-3.1.2", "Detailing", in3Weeks, _3Days);
addActivity(a__Detailing, aRoughDesign);
aPrototypFab = new IlvSimpleActivity("A-3.2", "Fabricate Prototype", in4Weeks, _2Weeks);
addActivity(aPrototypFab, aPrfOfConcpt);
aOrderMaterl = new IlvSimpleActivity("A-3.2.1", "Order Materials", in4Weeks, _1Day);
addActivity(aOrderMaterl, aPrototypFab);
a__Machining = new IlvSimpleActivity("A-3.2.2", "Machining", in4Weeks, _1Week);
addActivity(a__Machining, aPrototypFab);
aBurninTestg = new IlvSimpleActivity("A-3.3", "Burnin Testing", in6Weeks, _1Week);
addActivity(aBurninTestg, aPrfOfConcpt);
aPrepareDemo = new IlvSimpleActivity("A-3.4", "Prepare Demo", in7Weeks, _1Week);
addActivity(aPrepareDemo, aPrfOfConcpt);
aDesignDevel = new IlvSimpleActivity("A-4", "Design and Development", in6Weeks, _14Weeks);
addActivity(aDesignDevel, aRoot);
aDevelPhase1 = new IlvSimpleActivity("A-4.1", "Phase I Development", in8Weeks, _7Weeks);
addActivity(aDevelPhase1, aDesignDevel);
aDevelPhase2 = new IlvSimpleActivity("A-4.2", "Phase II Development", in15Weeks, _5Weeks);
addActivity(aDevelPhase2, aDesignDevel);
aDevelPhase3 = new IlvSimpleActivity("A-4.3", "Phase III Development", in20Weeks, _12Weeks);
addActivity(aDevelPhase3, aDesignDevel);
}
/**
* Creates the schedule's resources.
*/
protected void createResources() {
IlvResource rRoot = new IlvSimpleResource("ACME Corp.", "All ACME Employees");
setRootResource(rRoot);
rMkting = new IlvSimpleResource("MKTG", "Marketing");
addResource(rMkting, rRoot);
rBGates = new IlvSimpleResource("BG", "Bill Gates");
addResource(rBGates, rMkting);
rStvJbs = new IlvSimpleResource("SJ", "Steve Jobs");
addResource(rStvJbs, rMkting);
rMkDell = new IlvSimpleResource("MD", "Michael Dell");
addResource(rMkDell, rMkting);
rLGerst = new IlvSimpleResource("LG", "Lou Gerstner");
addResource(rLGerst, rMkting);
rRchDev = new IlvSimpleResource("R&D", "Research and Development");
addResource(rRchDev, rRoot);
rLTrvld = new IlvSimpleResource("LT", "Linus Torvalds");
addResource(rLTrvld, rRchDev);
rJGoslg = new IlvSimpleResource("JG", "James Gosling");
addResource(rJGoslg, rRchDev);
rScOaks = new IlvSimpleResource("SO", "Scott Oaks");
addResource(rScOaks, rRchDev);
rGBooch = new IlvSimpleResource("GB", "Grady Booch");
addResource(rGBooch, rRchDev);
rLyWall = new IlvSimpleResource("LW", "Larry Wall");
addResource(rLyWall, rRchDev);
}
/**
* Creates the schedule's reservations.
*/
protected void createReservations() {
addReservation(new IlvSimpleReservation(rMkting, aTalkToCusts));
addReservation(new IlvSimpleReservation(rMkDell, aCustomrList));
addReservation(new IlvSimpleReservation(rLGerst, aCustomrList));
addReservation(new IlvSimpleReservation(rStvJbs, aCustomrList));
addReservation(new IlvSimpleReservation(rBGates, aContactCust));
addReservation(new IlvSimpleReservation(rStvJbs, aContactCust));
addReservation(new IlvSimpleReservation(rMkDell, aWriteUpReqs));
addReservation(new IlvSimpleReservation(rMkDell, aDraftSpec_1));
addReservation(new IlvSimpleReservation(rLGerst, aDraftSpec_1));
addReservation(new IlvSimpleReservation(rMkDell, aDraftSpec_2));
addReservation(new IlvSimpleReservation(rLGerst, aDraftSpec_2));
addReservation(new IlvSimpleReservation(rBGates, aPrfOfConcpt));
addReservation(new IlvSimpleReservation(rRchDev, aPrfOfConcpt));
addReservation(new IlvSimpleReservation(rJGoslg, a__CADLayout));
addReservation(new IlvSimpleReservation(rLyWall, a__CADLayout));
addReservation(new IlvSimpleReservation(rJGoslg, a__Detailing));
addReservation(new IlvSimpleReservation(rGBooch, a__Detailing));
addReservation(new IlvSimpleReservation(rScOaks, a__Detailing));
addReservation(new IlvSimpleReservation(rBGates, aPrototypFab));
addReservation(new IlvSimpleReservation(rLTrvld, aPrototypFab));
addReservation(new IlvSimpleReservation(rScOaks, aBurninTestg));
addReservation(new IlvSimpleReservation(rStvJbs, aBurninTestg));
addReservation(new IlvSimpleReservation(rGBooch, aPrepareDemo));
addReservation(new IlvSimpleReservation(rLyWall, aPrepareDemo));
addReservation(new IlvSimpleReservation(rLGerst, aPrepareDemo));
addReservation(new IlvSimpleReservation(rJGoslg, aDevelPhase1));
addReservation(new IlvSimpleReservation(rLTrvld, aDevelPhase1));
addReservation(new IlvSimpleReservation(rJGoslg, aDevelPhase2));
addReservation(new IlvSimpleReservation(rLTrvld, aDevelPhase2));
addReservation(new IlvSimpleReservation(rScOaks, aDevelPhase2));
addReservation(new IlvSimpleReservation(rJGoslg, aDevelPhase3));
addReservation(new IlvSimpleReservation(rLTrvld, aDevelPhase3));
addReservation(new IlvSimpleReservation(rScOaks, aDevelPhase3));
addReservation(new IlvSimpleReservation(rLyWall, aDevelPhase3));
}
/**
* Creates the schedule's constraints.
*/
protected void createConstraints() {
addConstraint(new IlvSimpleConstraint(aCustomrList, aContactCust, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(aTalkToCusts, aWriteUpReqs, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(aGatherReqts, aMarktngSpec, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(aDraftSpec_1, aDraftSpec_2, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(a__CADLayout, a__Detailing, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(aRoughDesign, aOrderMaterl, IlvConstraintType.START_START));
addConstraint(new IlvSimpleConstraint(aDevelPhase1, aDevelPhase2, IlvConstraintType.END_START));
addConstraint(new IlvSimpleConstraint(aDevelPhase2, aDevelPhase3, IlvConstraintType.END_START));
}
}