Skip to content

Releases: joniles/mpxj

Version 11.0.0

08 Feb 13:28
Compare
Choose a tag to compare
  • User defined fields read from P6, Asta and GanttProject schedules are now represented by instances of UserDefinedField. They will no longer be mapped to custom field instances.
  • Enterprise Custom Fields read from MPP and MSPDI files are now represented by instances of UserDefinedField.
  • When writing MSPDI files, UserDefinedField instances which were originally read from enterprise custom fields will be written to the MSPDI file as enterprise custom fields.
  • When writing MSPDI files, UserDefinedField instances which were from applications other than Microsoft Project will automatically be mapped to available custom fields.
  • When writing MPX files, UserDefinedField instances will automatically be mapped to available custom fields.
  • The UserDefinedField type implements the FieldType interface and so can be used with the FieldContainer get and set methods to work with the contents of the user defined fields.
  • The ProjectFile.getUserDefinedFields() method has been added to provide access to all user defined fields defined in the project.
  • The CustomFieldContainer returned by ProjectFile.getCustomFields() will contain entries for all UserDefinedField instances.
  • The various getFieldTypeByAlias and getFieldByAlias methods will retrieve user defined fields by name.
  • Added the convenience method ProjectFile.getPopulatedFields() to retrieve details of all populated fields across the project. This avoids the caller having to individually retrieve the populated fields from the tasks container, resource container and so on.
  • Updated the getPopulatedFields methods to return a Set of FieldType rather than a Set of TaskField, ResourceField etc.
  • The various getPopulatedFields methods will include instances of UserDefinedField in the returned collection if relevant.
  • All ENTERPRISE_CUSTOM_FIELDn values have been removed from the TaskField, ResourceField, AssignmentField and ProjectField enumerations.
  • The getEnterpriseCustomField and setEnterpriseCustomField methods have been removed from ProjectProperties, Task, ResourceandResourceAssignment`.
  • Project UDFs are now read from P6 schedules.
  • Project UDFs are now written to PMXML files.
  • All code previously marked as deprecated has been removed.

Version 10.16.2

29 Jan 15:27
Compare
Choose a tag to compare
  • Updated to improve reading resource attributes from certain MPP14 files.

Version 10.16.1

26 Jan 09:46
Compare
Choose a tag to compare
  • Updated to make resource curve definitions (work contours) available in the WorkContourContainer. This container is accessed using the ProjectFile.getWorkContours() method.

Version 10.16.0

24 Jan 19:59
Compare
Choose a tag to compare
  • Improve accuracy when normalising timephased data.
  • Add support for reading activity steps from XER files, PMXML files and Primavera databases.
  • Add support for writing activity steps to PMXML files.
  • Updated PMXML schema to version 22.12.
  • Updated methods in the GanttBarCommonStyle and GanttBarStyle classes to use a FieldType instance rather than a TaskField instance to allow more flexibility. (Note: this may be a breaking change if you are currently using these classes.)
  • Optionally include some Microsoft Project layout data in JSON output.

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).