Skip to content

Releases: joniles/mpxj

Version 10.15.0

11 Jan 14:34
Compare
Choose a tag to compare
  • Avoid wrtiting invalid characters to PMXML, MSPDI and Planner XML files.
  • Improve handling of slack values for schedules which only contain a value for total slack.
  • Add support for reading constraint type and constraint date from Phoenix schedule (based on a contribution by Rohit Sinha).
  • Improve timephased data calculation when assignment has zero units.
  • Improve handling of very large duration values when reading and writing MSPDI files.
  • Ensure the Task attributes Active, Constraint Type, Task Mode, and Type always have a value.
  • Ensure the Resource attributes Type, Calculate Costs from Units, and Role always have a value.
  • Ensure the Resource Assignment attributes Calculate Costs from Units, Rate Index, and Rate Source always have a value.
  • Add version number constant to the Java source, accessible as MPXJ.VERSION.
  • Ensure that UDF values are read for WBS entries in PMXML files.
  • Avoid writing duplicate resource assignments to MPX files.

Version 10.14.1

25 Nov 11:28
Compare
Choose a tag to compare
  • Fix CVE-2022-41954: Temporary File Information Disclosure Vulnerability (Contributed by Jonathan Leitschuh)

Version 10.14.0

21 Nov 21:33
Compare
Choose a tag to compare
  • Handle missing default calendar when reading a PMXML file.
  • When reading an MPP file using a file name or File instance, ensure a more memory-efficient approach is used.
  • Improve reading certain FastTrack FTS files.
  • Improve generation of timephased data where working time ends at midnight.
  • Improve generation of timephased data for tasks with a calendar assigned.

Version 10.13.0

16 Nov 20:31
Compare
Choose a tag to compare
  • Add support for reading a resource assignment's cost account from P6 schedules.
  • Add support for writing a resource assignment's cost account to PMXML files.
  • Read resource assignment custom field definitions present in MPP14 files.
  • Improve identification of deleted resources when reading MPP9 files.
  • Ensure tasks with task calendars in MPP files are handled correctly when generating timephased data.
  • Improve generation of timephased data for material resource assignments.
  • Improve accuracy of timephased data when reading certain MPP files.

Version 10.12.0

01 Nov 12:29
Compare
Choose a tag to compare
  • Added the Resource Assignment attribute Calculate Costs From Units, and added read and write support for Primavera schedules.
  • Added the Resource attribute Calculate Costs From Units, and added read and write support for Primavera schedules.
  • Added the Resource and Role attribute Sequence Number, and added read and write support for Primavera schedules.
  • Added the WBS attribute Sequence Number, and added read and write support for Primavera schedules.
  • Ensure activity type is read from Phoenix schedules. (Contributed by Christopher John)
  • Deprecate the CostAccount method getSequence and replace with getSequenceNumber to improve naming consistency.
  • Deprecate the ExpenseCategory method getSequence and replace with getSequenceNumber to improve naming consistency.
  • Avoid possible ArrayIndexOutOfBoundsException when reading GUID values from MPP files (Contributed by Rohit Sinha).

Version 10.11.0

27 Sep 11:35
Compare
Choose a tag to compare
  • Deprecated the Resource methods getParentID and setParentID. Replaced with getParentResourceUniqueID and setParentResourceUniqueID for clarity and consistency.
  • Added the Resource methods setParent and getParent.
  • Added the ChildResourceContainer interface and ResourceContainer.updateStructure method to ensure that resources can be accessed hierarchically when reading a schedule.
  • Added the ResourceAssignment methods getFieldByAlias and setFieldByAlias to simplify working with custom fields, and mkae the API consistent with existing methods on Task and Resource.
  • Added the TaskContainer methods getCustomFields and getFieldTypeByAlias to simplify access to task custom fields.
  • Added the ResourceContainer methods getCustomFields and getFieldTypeByAlias to simplify access to resource custom fields.
  • Added the ResourceAssignmentContainer methods getCustomFields and getFieldTypeByAlias to simplify access to resource assignment custom fields.
  • Added the getCustomFieldsByFieldTypeClass method to CustomFieldContainer to allow retrieval of custom field details by parent class.
  • Deprecated the CustomFieldContainer method getFieldByAlias to be replaced by getFieldTypeByAlias to provide a more consistent method name.
  • Don't attempt to write unknown extended attributes to MSPDI files.
  • Don't populate graphical indicator data if the graphical indicator is not enabled.
  • Don't set custom field aliases to empty strings.
  • Added the CustomFieldContainer method add.
  • Deprecated the CustomFieldContainer method getCustomField, which is replaced by the get method (which returns null if the field type is not configured) and the getOrCreate method (which will return an existing configuration or create a new one if the requested field does not yet have a configuration).

Version 10.10.0

13 Sep 14:27
Compare
Choose a tag to compare
  • Add an option to import Phoenix schedules as a flat set of tasks with separate activity codes, rather than creating a hierarchy of tasks from the activity codes. Note the default is to disable this behavior so existing functionality is unchanged. (Contributed by Christopher Johns)
  • Add a setProperties method to reader classes to allow configuration to be supplied via a Properties instance rather than having to call setter methods. Properties passed to the UniversalProjectReader version of this method will be forwarded to the reader class UniversalProjectReader chooses to reader the supplied file. Properties for multiple reader classes can be included in the Properties instance, each reader class will ignore irrelevant properties.
  • Added the get method to Task, Resource, ResourceAssignment and ProjectProperties as a replacement for the getCurrentValue method. The new get method is paired with the existing set method to provide read and write access to attributes of these classes. This change is intended to improve the interfaces to these classes by making them more consistent, and thus easier to understand.
  • Deprecated the getCurrentValue method on the Task, Resource, ResourceAssignment and ProjectProperties classes. Use the new get method instead.
  • Add getter and setter methods for the Resource attributes Cost Center, Budget Cost, Budget Work, Baseline Budget Cost, Baseline Budget Work, Baseline Budget Cost 1-10, and Baseline Budget Work 1-10.
  • Add getter and setter methods for the Task attributes Response Pending, Scheduled Start, Scheduled Finish, Scheduled Duration, Budget Cost, Budget Work, Baseline Budget Cost, Baseline Budget Work, Baseline Budget Cost 1-10, and Baseline Budget Work 1-10.
  • Added support for the Resource Cost Centre attribute for MSPDI files.
  • Move MPP file-specific functionality for determining baseline values from the Task class into the MPP reader class.
  • Improve handling of the TaskMode attribute.
  • Don't set a Task's Critical attribute unless we have valid slack values.
  • Ensure ResourceAssignment calculated fields are returned correctly when using the getCurrentValue method.
  • Ensure ProjectProperties calculated fields are returned correctly when using the getCurrentValue method.
  • Updated to use jsoup 1.15.3

Version 10.9.1

31 Aug 22:51
Compare
Choose a tag to compare
  • Ensure monthly and yearly recurrences are calculated correctly when the supplied start date is the same as the first recurrence date (Contributed by Rohit Sinha).
  • Add support for reading task calenadrs from Phoenix files (Contributed by Rohit Sinha).
  • Improve reliability of ProjectCleanUtility when using the replacement strategy.

Version 10.9.0

23 Aug 11:42
Compare
Choose a tag to compare
  • Added the ResourceAssignment.getEffectiveRate method to allow the cost rate effective on a given date for a resource assignment to be calculated. For P6 schedules this will take account of the cost rate configuration included as part of the resource assignment.
  • For P6 schedules, the ResourceAssignment.getCostRateTable method now takes in account any cost rate configuration details from the resource assignment when determining which table to return.
  • A resource's Standard Rate, Overtime Rate and Cost per Use are now all derived from the resource's cost rate table, and not stored as attributes of the resource itself.
  • The resource methods setStandardRate, setOvertimeRate, and setCostPerUse have been deprecated. These attributes can now only be set or updated by modifying the resource's cost rate table.
  • When writing MPX files, only include attributes which have a non-empty, non-default value in at least one task or resource.
  • When writing MPX files, ensure attributes which have calculated values are used.
  • Add support for reading a resource assignment's rate type from P6 schedules. The rate type is accessed via the ResourceAssignment.getRateIndex method. The value returned by this method can be used to select the required rate using the CostRateTableEntry,getRate method.
  • Add support for writing a resource assignment's rate type to PMXML files.
  • Add support for reading a resource assignment's role from P6 schedules. The role is accessed via the ResourceAssignment.getRole and ResourceAssignment.setRole methods.
  • Add support for writing a resource assignment's role to PMXML files.
  • Add support for reading a resource assignment's override rate (Price / Unit) from P6 schedules. The rate is accessed via the ResourceAssignment.getOverrideRate and ResourceAssignment.setOverrideRate methods.
  • Add support for writing a resource assignment's override rate (Price / Unit) to PMXML files.
  • Add support for reading a resource assignment's rate source from P6 schedules. The rate source is accessed via the ResourceAssignment.getRateSource and ResourceAssignment.setRateSource methods.
  • Add support for writing a resource assignment's rate source to PMXML files.

Version 10.8.0

17 Aug 14:45
Compare
Choose a tag to compare
  • When reading P6 schedules, all five cost rates for a resource are now available via the CostRateTableEntry.getRate method.
  • All five rates from each cost rate table entry can now be written to PMXML files.
  • When reading files written by Microsoft Project, resource rate values now use the same units as seen by the end user rather than defaulting to hours as was the case previously. (For example, if the user sees $8/day in the source application, you will receive a Rate instance of $8/day rather than $1/hr).
  • The values for a resource's standard rate, overtime rate, and cost per use attributes are now derived from the cost rate table. The values stored on the resource itself are only used if a cost rate table for the resource is not present.
  • The Resource methods getStandardRateUnits and getOvertimeRateUnits are deprecated. Use the getStandardRate and getOvertimeRate methods to retrieve a Rate instance which will include the units for these rates.
  • The Resource methods setStandardRateUnits and setOvertimeRateUnits are deprecated. Supply Rate instances to the setStandardRate and setOvertimeRate methods with the required units instead.
  • The CostRateTableEntry methods getStandardRateUnits and getOvertimeRateUnits are deprecated. Use the getStandardRate and getOvertimeRate methods to retrieve a Rate instance which will include the units for these rates.
  • Ensure rates are formatted "per hour" when writing MSPDI and PMXML files.
  • Include cost rate tables in JSON output.