Working with Projects

Project Calculation Modes

Aspose.Tasks for Java API provides three project calculation modes which define how values of dependent properties are calculated when the value of a property is set. These calculation modes are:

This examples below shows the usage of each of these with the help of code samples.

Project Calculation Mode - None

 1// Create empty project and set calculation mode to None
 2
 3Project project = new Project();
 4
 5project.setCalculationMode(CalculationMode.None);
 6
 7
 8
 9// Add a new task
10
11Task task = project.getRootTask().getChildren().add("Task");
12
13
14
15Date minDate = new GregorianCalendar(1, Calendar.JANUARY, 1).getTime();
16
17
18
19// Note that even ids were not calculated
20
21System.out.println("Task Id Equals 0 : " + task.get(Tsk.ID).equals(0));
22
23System.out.println("Task Start Equals 01/01/0001 : " + task.get(Tsk.START).equals(minDate));
24
25System.out.println("Task Finish Equals 01/01/0001 : " + task.get(Tsk.FINISH).equals(minDate));
26
27System.out.println("Task Duration Equals 0 mins : " + task.get(Tsk.DURATION).toString().equals("0 mins"));
28
29
30
31// Set duration property
32
33task.set(Tsk.DURATION, project.getDuration(2, TimeUnitType.Day));
34
35System.out.println("Task Duration Equals 2 days : " + task.get(Tsk.DURATION).toString().equals("2 days"));
36
37System.out.println("Task Start Equals 01/01/0001 : " + task.get(Tsk.START).equals(minDate));
38
39System.out.println("Task Finish Equals 01/01/0001 : " + task.get(Tsk.FINISH).equals(minDate));

Project Calculation Mode - Manual

 1// Create empty project and set calculation mode to Manual
 2
 3Project project = new Project();
 4
 5project.setCalculationMode(CalculationMode.Manual);
 6
 7
 8
 9// Set project start date and add new tasks
10
11project.set(Prj.START_DATE, new GregorianCalendar(2015, Calendar.APRIL, 15).getTime());
12
13Task task1 = project.getRootTask().getChildren().add("Task 1");
14
15Task task2 = project.getRootTask().getChildren().add("Task 2");
16
17
18
19// The necessary properties are set in manual mode
20
21Date start = new GregorianCalendar(2015, Calendar.APRIL, 15, 8, 0, 0).getTime();
22
23Date finish = new GregorianCalendar(2015, Calendar.APRIL, 15, 17, 0, 0).getTime();
24
25System.out.println("Task1 Id Equals 1 : " + task1.get(Tsk.ID).equals(1));
26
27System.out.println("Task1 Start Equals 15/04/2015 08:00 AM : " + task1.get(Tsk.START).equals(start));
28
29System.out.println("Task1 Finish Equals 15/04/2015 05:00 PM : " + task1.get(Tsk.FINISH).equals(finish));
30
31System.out.println("Task1 Duration Equals 1 day : " + task1.get(Tsk.DURATION).toString().equals("1 day"));
32
33System.out.println("Task2 Start Equals 15/04/2015 08:00 AM : " + task2.get(Tsk.START).equals(start));
34
35System.out.println("Task2 Finish Equals 15/04/2015 05:00 PM : " + task2.get(Tsk.FINISH).equals(finish));
36
37System.out.println("Task2 Duration Equals 1 day : " + task2.get(Tsk.DURATION).toString().equals("1 day"));
38
39
40
41// When we link two tasks together their dates are not recalculated in manual mode
42
43TaskLink link = project.getTaskLinks().add(task1, task2, TaskLinkType.FinishToStart);
44
45
46
47// Task 2 Start has not been changed
48
49System.out.println("Task1 Start Equals Task2 Start : " + task1.get(Tsk.START).equals(task2.get(Tsk.START)));
50
51System.out.println("Task1 Finish Equals Task2 Finish : " + task1.get(Tsk.FINISH).equals(task2.get(Tsk.FINISH)));

Project Calculation Mode - Automatic

 1// Create empty project and set calculation mode to Automatic
 2
 3Project project = new Project();
 4
 5project.setCalculationMode(CalculationMode.Automatic);
 6
 7
 8
 9// Set project start date and add new tasks
10
11project.set(Prj.START_DATE, new GregorianCalendar(2015, Calendar.APRIL, 15).getTime());
12
13Task task1 = project.getRootTask().getChildren().add("Task 1");
14
15Task task2 = project.getRootTask().getChildren().add("Task 2");
16
17
18
19// Link tasks
20
21TaskLink link = project.getTaskLinks().add(task1, task2, TaskLinkType.FinishToStart);
22
23
24
25// Verify dates have been recalculated
26
27Calendar cal = Calendar.getInstance();
28
29cal.setTime(task1.get(Tsk.START));
30
31cal.add(Calendar.DATE, 1);
32
33Date task1StartPlusOneDay = cal.getTime();
34
35System.out.println("Task1 Start + 1 Equals Task2 Start : " + task1StartPlusOneDay.equals(task2.get(Tsk.START)));
36
37
38
39cal.setTime(task1.get(Tsk.FINISH));
40
41cal.add(Calendar.DATE, 1);
42
43Date task1FinishPlusOneDay = cal.getTime();
44
45System.out.println("Task1 Finish + 1 Equals Task2 Finish : " + task1FinishPlusOneDay.equals(task2.get(Tsk.FINISH)));
46
47
48
49System.out.println("RootTask Finish Equals Task2 Finish : " + project.getRootTask().get(Tsk.FINISH).equals(task2.get(Tsk.FINISH)));
50
51System.out.println("Project Finish Date Equals Task2 Finish : " + project.get(Prj.FINISH_DATE).equals(task2.get(Tsk.FINISH)));
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.