Browse our Products

Aspose.Tasks for Java 25.11 Release Notes

All Changes

KeySummaryIssue Type
TASKSNET-11583Add reading of calendar-specific “Hours per Day” setting from Primavera formats.Enhancement
TASKSNET-11582Add reading of “Define Critical Activities” option from Primavera formats and initialization of “Task.IsCritical” flagEnhancement
TASKSNET-11552Add an API to allow reading projects’ Uids and Names from Primavera DBEnhancement
TASKSNET-11620Fix incorrect baseline cost timephased data when assignment’s calendar is different from baseline calendarBug
TASKSNET-11615Fix calculations related to a material resource’s assignment for task with assigned work resourcesBug
TASKSNET-11612Fix calculation of resource assignments with actual work when parent task duration is changedBug
TASKSNET-11611Fix calculation of non started (without actual work reported) resource assignments when parent task duration is changedBug
TASKSNET-11610Investigate and fix rounding errors when work contour duration is changedBug
TASKSNET-11609Fix incorrect baseline work timephased data for the specific fileBug
TASKSNET-11607Fix incorrect calculation of material resource calendarBug
TASKSNET-11595Fix incorrect generation of Timephased Data when assignment start is at the end of working dayBug
TASKSNET-11593Fix InvalidOperationException: ‘ToDouble encountered value with length 26’ when reading the specific fileBug
TASKSNET-11589Fix calculation of contoured resource assignments when parent task duration is changedBug
TASKSNET-11586Fix inconsistent generation of Cost Timephased data after project is saved and openedBug
TASKSNET-11581Add an ability to set negative baseline costBug
TASKSNET-11572Fix TasksReadingException when trying to read resource with no rates defined from Primavera DBBug
TASKSNET-11570Fix reading of calendar data from Primavera DBBug
TASKSNET-11563Inconsistent time-phased AssignmentUnit data for Material resources after repeated task duration editsBug
TASKSNET-11553Inconsistency in duration recalculation when editing a task with a Material resource and a custom extended-hours calendarBug
TASKSNET-11534Fix incorrect logic of RescheduleUncompletedWorkToStartAfter methodBug

Public API and Backwards Incompatible Changes

The following public types were added:Description
com.aspose.tasks.PrimaveraCalendarPropertiesRepresents Primavera-specific properties for a calendar read from Primavera files (XER of P6XML).
com.aspose.tasks.PrimaveraCriticalActivitiesDefiningMethodSpecifies the method for defining critical activities in Primavera.
com.aspose.tasks.PrimaveraDbReaderRepresents a reader to read Project Info from Primavera DB
The following public methods and properties were added:Description
com.aspose.tasks.Calendar.getPrimaveraProperties()Gets an object containing Primavera-specific properties for a calendar read from Primavera formats.
com.aspose.tasks.PrimaveraProjectInfo.getShortName()Gets project’s short name (Project ID).
com.aspose.tasks.PrimaveraBaseReader.#ctor()Initializes a new instance of the class.
com.aspose.tasks.PrimaveraCalendarProperties.getHoursPerDay()Gets amount of hours per day from ‘Time Periods’ settings of the calendar.
com.aspose.tasks.PrimaveraCalendarProperties.getHoursPerWeek()Gets amount of hours per week from ‘Time Periods’ settings of the calendar.
com.aspose.tasks.PrimaveraCalendarProperties.getHoursPerMonth()Gets amount of hours per month from ‘Time Periods’ settings of the calendar.
com.aspose.tasks.PrimaveraCalendarProperties.getHoursPerYear()Gets amount of hours per month from ‘Time Periods’ settings of the calendar.
com.aspose.tasks.PrimaveraDbReader.#ctor(PrimaveraDbSettings)Initializes a new instance of the class.
com.aspose.tasks.PrimaveraDbReader.loadProject(System.Int32)Loads the project with the specified unique identifier.
com.aspose.tasks.PrimaveraProjectProperties.getCriticalActivitiesDefiningMethod()Gets the method for defining critical activities: Longest Path or Total Float approach.
com.aspose.tasks.PrimaveraProjectProperties.getCriticalTotalFloatLimit()Gets the threshold value used to define critical activities if TotalFloat method is used.
com.aspose.tasks.PrimaveraProjectProperties.getShortName()Gets project’s short name (Project ID).
The following public enumerations were added:Description
com.aspose.tasks.PrimaveraCriticalActivitiesDefiningMethod.TotalFloatActivities with TotalSlack (Total Float in Primavera) less than or equal to the value of are marked as critical.
com.aspose.tasks.PrimaveraCriticalActivitiesDefiningMethod.LongestPathActivities on the longest path are marked as critical.

Related issue: TASKSNET-11552 - Add an API to allow reading projects’ Uids and Names from Primavera DB.

Starting with the version 25.11, the new class PrimaveraDbReader can be used to retrieve a project’s short information.


String fileName = dir + "Primavera.db";
String connectionString = String.format("jdbc:sqlite:%s", fileName);

PrimaveraDbSettings primaveraDbSettings = new PrimaveraDbSettings(connectionString, 0);
PrimaveraDbReader reader = new PrimaveraDbReader(primaveraDbSettings);

List<ProjectInfo> projectInfos = reader.getProjectInfos();

for (ProjectInfo info : projectInfos) {
    System.out.println(String.format("%s - %s - %s, %s", info.getUid(), info.getShortName(), info.getName(), info.getExportFlag()));
}

Project project = reader.loadProject(projectInfos.get(0).Uid);
System.out.println(String.format("Project ID: %s", project.getPrimaveraProperties().getShortName());
System.out.println(String.format("Project Name: %s", project.getName());

Existing classes PrimaveraXmlReader and PrimaveraXerReader were modified so that the logic remains consistent across readers of Primavera formats (PrimaveraXmlReader, PrimaveraXerReader, PrimaveraDbReader).