Releases: joniles/mpxj
Releases · joniles/mpxj
Version 11.0.0
- 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 theFieldType
interface and so can be used with theFieldContainer
get
andset
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 byProjectFile.getCustomFields()
will contain entries for allUserDefinedField
instances. - The various
getFieldTypeByAlias
andgetFieldByAlias
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 aSet
ofFieldType
rather than aSet
ofTaskField
,ResourceField
etc. - The various
getPopulatedFields
methods will include instances ofUserDefinedField
in the returned collection if relevant. - All
ENTERPRISE_CUSTOM_FIELDn
values have been removed from theTaskField
,ResourceField
,AssignmentField
andProjectField
enumerations. - The
getEnterpriseCustomField
andsetEnterpriseCustomField
methods have been removed fromProjectProperties
, Task,
Resourceand
ResourceAssignment`. - 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
- Updated to improve reading resource attributes from certain MPP14 files.
Version 10.16.1
- Updated to make resource curve definitions (work contours) available in the
WorkContourContainer
. This container is accessed using theProjectFile.getWorkContours()
method.
Version 10.16.0
- 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
andGanttBarStyle
classes to use aFieldType
instance rather than aTaskField
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
- 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
- Fix CVE-2022-41954: Temporary File Information Disclosure Vulnerability (Contributed by Jonathan Leitschuh)
Version 10.14.0
- 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
- 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
- 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
methodgetSequence
and replace withgetSequenceNumber
to improve naming consistency. - Deprecate the
ExpenseCategory
methodgetSequence
and replace withgetSequenceNumber
to improve naming consistency. - Avoid possible ArrayIndexOutOfBoundsException when reading GUID values from MPP files (Contributed by Rohit Sinha).
Version 10.11.0
- Deprecated the
Resource
methodsgetParentID
andsetParentID
. Replaced withgetParentResourceUniqueID
andsetParentResourceUniqueID
for clarity and consistency. - Added the
Resource
methodssetParent
andgetParent
. - Added the
ChildResourceContainer
interface andResourceContainer.updateStructure
method to ensure that resources can be accessed hierarchically when reading a schedule. - Added the
ResourceAssignment
methodsgetFieldByAlias
andsetFieldByAlias
to simplify working with custom fields, and mkae the API consistent with existing methods onTask
andResource
. - Added the
TaskContainer
methodsgetCustomFields
andgetFieldTypeByAlias
to simplify access to task custom fields. - Added the
ResourceContainer
methodsgetCustomFields
andgetFieldTypeByAlias
to simplify access to resource custom fields. - Added the
ResourceAssignmentContainer
methodsgetCustomFields
andgetFieldTypeByAlias
to simplify access to resource assignment custom fields. - Added the
getCustomFieldsByFieldTypeClass
method toCustomFieldContainer
to allow retrieval of custom field details by parent class. - Deprecated the
CustomFieldContainer
methodgetFieldByAlias
to be replaced bygetFieldTypeByAlias
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
methodadd
. - Deprecated the
CustomFieldContainer
methodgetCustomField
, which is replaced by theget
method (which returnsnull
if the field type is not configured) and thegetOrCreate
method (which will return an existing configuration or create a new one if the requested field does not yet have a configuration).