001: package org.andromda.timetracker.console;
002:
003: import java.util.Date;
004:
005: import org.andromda.timetracker.ServiceLocator;
006: import org.andromda.timetracker.domain.TimecardStatus;
007: import org.andromda.timetracker.service.PeopleService;
008: import org.andromda.timetracker.service.TimeTrackingService;
009: import org.andromda.timetracker.vo.PersonVO;
010: import org.andromda.timetracker.vo.TaskVO;
011: import org.andromda.timetracker.vo.TimeAllocationVO;
012: import org.andromda.timetracker.vo.TimePeriodVO;
013: import org.andromda.timetracker.vo.TimecardSummaryVO;
014: import org.andromda.timetracker.vo.TimecardVO;
015:
016: public class TimeTrackerConsole {
017:
018: // ServiceLocator and Services
019: private static ServiceLocator serviceLocator = null;
020: private static PeopleService peopleService = null;
021: private static TimeTrackingService timeTrackingService = null;
022:
023: // Constants
024: private static final long MILLIS_IN_DAY = 24 * 60 * 60 * 1000;
025:
026: public static void main(String[] args) {
027: // Get services
028: serviceLocator = ServiceLocator.instance();
029: peopleService = serviceLocator.getPeopleService();
030: timeTrackingService = serviceLocator.getTimeTrackingService();
031:
032: // Create people
033: PersonVO naresh = createPerson("nbhatia", "Naresh", "Bhatia");
034: PersonVO louis = createPerson("lcoude", "Louis", "Coude");
035: PersonVO john = createPerson("jsmith", "John", "Smith");
036:
037: // Create tasks
038: TaskVO research = createTask("Research");
039: TaskVO development = createTask("Development");
040:
041: // Create timecards
042: TimecardVO timecard1 = createTimecard(naresh, john);
043: TimecardVO timecard2 = createTimecard(naresh, john);
044: TimecardVO timecard3 = createTimecard(louis, john);
045: TimecardVO timecard4 = createTimecard(louis, john);
046:
047: // Fetch and show all objects created above
048: PersonVO[] people = peopleService.getAllPeople();
049: showPeople(people);
050: TaskVO[] tasks = timeTrackingService.getAllTasks();
051: showTasks(tasks);
052: TimecardSummaryVO[] timecards = timeTrackingService
053: .getAllTimecardSummaries();
054: showTimecardSummaries(timecards);
055:
056: // Fetch and show timecard1 details
057: System.out.println("Timecard " + timecard1.getId()
058: + " Details:");
059: TimecardVO timecard1FromDB = timeTrackingService
060: .getTimecard(timecard1.getId());
061: showTimecard(timecard1FromDB);
062: }
063:
064: private static PersonVO createPerson(String username,
065: String firstName, String lastName) {
066: PersonVO person = new PersonVO(null, username, firstName,
067: lastName);
068: person.setId(peopleService.createPerson(person));
069: System.out.println("Person " + person.getId() + " created - "
070: + person.getUsername());
071: return person;
072: }
073:
074: private static TaskVO createTask(String taskName) {
075: TaskVO task = new TaskVO(null, taskName);
076: task.setId(timeTrackingService.createTask(task));
077: System.out.println("Task " + task.getId() + " created - "
078: + task.getName());
079: return task;
080: }
081:
082: private static TimecardVO createTimecard(PersonVO submitter,
083: PersonVO approver) {
084: // Instantiate a timecard
085: TimecardVO timecard = new TimecardVO();
086: timecard.setStatus(TimecardStatus.DRAFT);
087: timecard.setBegDate(new Date());
088: timecard.setSubmitterName(submitter.getUsername());
089: timecard.setApproverName(approver.getUsername());
090: timecard.setComments("On track!");
091:
092: // Get all tasks to choose from
093: TaskVO[] tasks = timeTrackingService.getAllTasks();
094:
095: // Instantiate allocations
096: int count = (int) (Math.random() * 3 + 1);
097: TimeAllocationVO[] allocations = new TimeAllocationVO[count];
098: timecard.setAllocations(allocations);
099: for (int i = 0; i < count; i++) {
100: Date startTime = new Date(timecard.getBegDate().getTime()
101: + i * MILLIS_IN_DAY);
102: Date endTime = new Date(timecard.getBegDate().getTime()
103: + (i + 1) * MILLIS_IN_DAY);
104: TaskVO task = tasks[(int) Math
105: .round((Math.random() * (tasks.length - 1)))];
106: allocations[i] = new TimeAllocationVO(null,
107: new TimePeriodVO(startTime, endTime), task.getId());
108: }
109:
110: // Create timecard
111: timecard.setId(timeTrackingService.createTimecard(timecard));
112:
113: System.out.println("Timecard " + timecard.getId()
114: + " created with " + timecard.getAllocations().length
115: + " allocations");
116:
117: return timecard;
118: }
119:
120: private static void showPeople(PersonVO[] people) {
121: System.out.println("People:");
122: for (int i = 0; i < people.length; i++) {
123: System.out.println(people[i].getId() + ": "
124: + people[i].getUsername() + " - "
125: + people[i].getFirstName() + " "
126: + people[i].getLastName());
127: }
128: System.out.println();
129: }
130:
131: private static void showTasks(TaskVO[] tasks) {
132: System.out.println("Tasks:");
133: for (int i = 0; i < tasks.length; i++) {
134: System.out.println(tasks[i].getId() + ": "
135: + tasks[i].getName());
136: }
137: System.out.println();
138: }
139:
140: private static void showTimecardSummaries(
141: TimecardSummaryVO[] timecards) {
142: System.out.println("Timecards:");
143: for (int i = 0; i < timecards.length; i++) {
144: showTimecardSummary(timecards[i]);
145: }
146: System.out.println();
147: }
148:
149: private static void showTimecardSummary(TimecardSummaryVO timecard) {
150: System.out.println(timecard.getId() + ": status="
151: + timecard.getStatus() + ", begin date="
152: + timecard.getBegDate() + ", comments="
153: + timecard.getComments() + ", submitter="
154: + timecard.getSubmitterName() + ", approver="
155: + timecard.getApproverName());
156: }
157:
158: private static void showTimecard(TimecardVO timecard) {
159: showTimecardSummary(timecard);
160: TimeAllocationVO[] allocations = timecard.getAllocations();
161: for (int i = 0; i < allocations.length; i++) {
162: showTimeAllocation(allocations[i]);
163: }
164: }
165:
166: private static void showTimeAllocation(TimeAllocationVO allocation) {
167: System.out.println(" " + allocation.getId()
168: + ": start time="
169: + allocation.getTimePeriodVO().getStartTime()
170: + ", end time="
171: + allocation.getTimePeriodVO().getEndTime()
172: + ", task id=" + allocation.getTaskId());
173: }
174: }
|