Releases: joniles/mpxj
Releases · joniles/mpxj
Version 14.1.0
- Updated to POI 5.4.1
- Improve actual duration calculation for activities with suspend and resume dates when reading XER files and Primavera P6 databases.
- Added Enable Summarization and Enable Publication flags to
ProjectProperties
. - Added support for Enable Summarization and Enable Publication flags when reading and writing PMXML files.
- Ensure the Actual Start and Actual Finish attributes in
ProjectProperties
are populated. - Improve retrieval of Enterprise Custom Field names when reading MSPDI files.
- Updated the JSON writer to use Jackson.
Version 14.0.0
- NEW FEATURES
- MPXJ can now schedule projects using CPM (Critical Path Method)
- Two new classes (
MicrosoftScheduler
andPrimaveraScheduler
) allow MPXJ to schedule a project in a way which follows the approach of either Microsoft Project or Primavera P6. - Added support for reading Edraw Project EDPX files
- CHANGES
- Improvements to accuracy of reading text UDF values from Powerproject PP files.
- Corrected conversion of elapsed durations when writing JSON files.
- Added the
Relation#lag_units
method to the ruby gem. - BREAKING CHANGES - .Net
- The
net.sf.mpxj
,net.sf.mpxj-for-csharp
, andnet.sf.mpxj-for-vb
NuGet packages are no longer being distributed. You must migrate your code to use theMPXJ.Net
NuGet package instead. - BREAKING CHANGES - Java, Python
- The name of the package containing MPXJ's Java classes has changed from
net.sf.mpxj
toorg.mpxj
. You will need to update your code by searching fornet.sf.mpxj
and replace this withorg.mpxj
. NOTE: for Java applications using Maven, the Maven Group ID has not changed, you will still retrieve MPXJ using the Group IDnet.sf.mpxj
. - The constant
TaskField.PRIMARY_RESOURCE_ID
has been renamed toTaskField.PRIMARY_RESOURCE_UNIQUE_ID
. - The
RelationContainer#getRawSuccessors
method has been removed. Use theRelationContainer#getSuccessors
method instead. This method now returns the same datagetRawSuccessors
returned previously. - The deprecated
UserDefinedField
constructors have been removed, useUserDefinedField.Builder
instead. - The deprecated
UserDefinedField#setDataType
method has been removed, use theUserDefinedField.Builder#dataType
method instead. - The deprecated
StructuredNotes
constructor has been removed, use theStructuredNotes
constructor taking aProjectFile
instance instead. - The deprecated
Relation#getSourceTask
andRelation#getTargetTask
methods have been removed, useRelation#getPredecessorTask
andRelation#getSuccessorTask
methods instead. - The deprecated
Relation.Builder#sourceTask
andRelation.Builder#targetTask
methods have been removed, useRelation.Builder#predecessorTask
andRelation.Builder#successorTask
methods instead. - The deprecated
ActivityCodeValue#getType
method has been removed. Use theActivityCodeValue#getParentCode
method instead. - The deprecated
ActivityCodeValue#getActivityCode
method has been removed. Use theActivityCodeValue#getParentCode
method instead. - The deprecated
ActivityCodeValue#getParent
method has been removed. Use theActivityCodeValue#getParentValue
method instead. - The deprecated
ActivityCodeValue#getParentUniqueID
method has been removed. Use theActivityCodeValue#getParentValueUniqueID
method instead. - The deprecated
ActivityCodeValue.Builder#type
method has been removed. Use theActivityCodeValue.Builder#activityCode
method instead. - The deprecated
ActivityCodeValue.Builder#parent
method has been removed. Use theActivityCodeValue.Builder#parentValue
method instead. - The deprecated
Task#addActivityCode
method has been removed. Use theTask#addActivityCodeValue
method instead. - The deprecated
GanttBarStyleException#getBarStyleIndex
method has been removed. UseGanttBarStyleException#getGanttBarStyleID
to retrieve the bar style ID, andGanttChartView#getGanttBarStyleByID
to retrieve the style - The deprecated constant
TaskField.ACTIVITY_CODE_LIST
has been removed. UseTaskField.ACTIVITY_CODE_VALUES
instead. - The deprecated
Task#getActivityCodes
method has been removed. Use theTask#getActivityCodeValues
method instead. - The deprecated
Task#setPrimaryResourceID
method has been removed. Use theTask#setPrimaryResourceUniqueID
method instead. - The deprecated
Task#getPrimaryResourceID
method has been removed. Use theTask#getPrimaryResourceUniqueID
method instead. - The deprecated
Task#isSucessor
method has been removed. Use theTask#isSuccessor
method instead. - The common
MPPUtility
static methodsgetShort
,getInt
andgetLong
have been moved to theByteArrayHelper
class. - BREAKING CHANGES - Ruby
- The deprecated Ruby attribute
Relation#task_unique_id
has been removed, useRelation#predecessor_task_unique_id
andRelation#successor_task_unique_id
instead.
Version 13.12.0
- Added support for reading Float Path and Float Path Order from XER files and P6 databases.
- Added support for writing Float Path and Float Path Order to XER files.
- Added support for reading baselines from Phoenix schedules.
- Improve date arithmetic when using the
ProjectCalendar#getDate()
method with elapsed durations. - Include units percent complete when writing resource assignments to PMXML files.
- Improve accuracy of resource assignment remaining units when writing XER and PMXML files.
- When writing MSPDI files, calculate resource assignment remaining work if not present.
Version 13.11.0
- Add support for reading the WBS and Activity Methodology GUID attribute from XER files and P6 databases, and for writing this to XER files.
- Improve accuracy of resource assignment start and finsh dates when reading XER files and P6 databases.
- Fixed an issue reading resource code value hierarchy from XER files.
- Improve retrieval of Gantt Bar Styles from certain MPP files.
- Added the
GanttBarStyleException
methodsgetGanttBarStyleID()
andsetGanttBarStyleID()
. - Added the
GanttChartView
methodgetGanttBarStyleByID()
. - Marked the
GanttBarStyleException#getBarStyleIndex()
method as deprecated. Use theGanttBarStyleException#getGanttBarStyleID()
method to retrieve the Gantt Bar Style ID, then use the view'sgetGanttBarStyleByID()
method to retrieve a list of matching styles. - Added the
Duration#negate()
method to simplify negating a duration. - Improve provision of default values for Project Planned Start date and Activity Planned Duration when writing XER files.
Version 13.10.0
- Add support for reading the P6 EPS using the
listEps()
method provided by thePrimaveraDatabaseReader
andPrimaveraDatabaseFileReader
classes. - Improve handling of Activity Type attribute when reading PMXML files written by Primavera P6 6.x.
- Ensure that the External Early Start and External Late Finish attributes are written to XER files.
- Fix a NPE when calling
PrimaveraXERFileReader.listProjects()
. - Avoid unnecessary data storage and type conversion to improve efficiency when calling
PrimaveraXERFileReader.listProjects()
. - Provide additional
ResourceAssignment
methods to allowList<TimephasedWork>
to be used to add timephased work, rather than requiring aTimephasedWorkContainer
. - Improve identification of tasks when reading certain Asta Powerproject PP files.
Version 13.9.0
- Updated to POI 5.4.0
- Updated PMXML schema to version 24.12.
- Added support for reading and writing currencies for Primavera P6 schedules.
- Improve recognition of dates displayed as NA in Microsoft Project when reading certain MPP file.
- Ignore invalid cost rate table entries when reading certain MPP files.
Version 13.8.0
- Added support for reading and writing Project Codes, Resource Codes, Role Codes and Resource Assignment Codes for Primavera P6 schedules.
- When writing PMXML files, improve handling of P6 schedules where activity code sequence numbers are missing.
- Added an experimental feature to
MSPDIWriter
to allow the writer to generate timephased data when none is present. Disabled by default, call thesetGenerateMissingTimephasedData
and passtrue
to enable. - To improve consistency, the methods
Task.getPrimaryResourceID()
andTask.setPrimaryResourceID()
have been marked as deprecated. Use the newTask.getPrimaryResourceUniqueID()
andTask.setPrimaryResourceUniqueID()
methods instead. - Added the methods
Task.getPrimaryResource()
andTask.setPrimaryResource()
. - Improved accuracy of retrieving the resource assignment GUID attribute when reading MPP files (Contributed by Fabian Schmidt).
- Improve population of Task Start and Finish attributes when reading Primavera P6 schedules.
- Marked the
ActivityCodeValue.getParent()
method as deprecated. UseActivityCodeValue.getParentValue()
instead. - Marked the
ActivityCodeValue.getParentUniqueID()
method as deprecated. UseActivityCodeValue.getParentValueUniqueID()
instead. - Marked the
ActivityCodeValue.Builder.parent()
method as deprecated. UseActivityCodeValue.Builder.parentValue()
instead. - Marked the
ActivityCodeValue.getActivityCode()
method as deprecated. UseActivityCodeValue.getParentCode()
instead.
Version 13.7.0
- Update the MPXJ ruby gem to allow access to calendar data.
- Mark the
ActivityCodeValue.getType()
method as deprecated. For clarity this method has been replaced by the newActivityCodeValue.getActivityCode()
method. - Mark the
ActivityCodeValue.Builder.type()
method as deprecated. For clarity this method has been replaced by the newActivityCodeValue.Builder.activityCode()
method. - Added the
Task.getActivityCodeValues()
method, which returns aMap
ofActivityCodeValue
instances, keyed byActivityCode
. - Marked the
Task.getActivityCodes()
method as deprecated. Replaced with theTask.getActivityCodeValues()
method which is more clearly named, and presents the activity code values in a more flexible form. - Added the
Task.addActivityCodeValue()
method. - Marked the
Task.addActivityCode()
method as deprecated. Replaced with theTask.addActivityCodeValue()
method which is more clearly named. - Further improvements to retrieval of custom field values read from MPP files.
- Ensure that missing resource assignment and task start and finish dates are handled gracefully when working with calendars for manually scheduled tasks.
Version 13.6.0
- Added the
Task.getBaselineTask()
methods. For applications where a separate baseline schedule is present or a baseline has been manually added to theProjectFile
instance, these methods will allow you to access the underlying baseline task instance from the current task instance. - Added the Activity Percent Complete attribute to the
Task
class. The value of this attribute will be the Duration, Physical or Units percent complete value, based on the Percent Complete Type setting. This attribute is provided as a convenience to match the Activity Percent Complete type value shown in P6. - Improve retrieval of custom field values for certain MPP files.
- Improve handling of PMXML files with more than 11 baselines.
- Improve handling of unexpected data types when writing JSON files.
- Added the
Relation.getPredecessorTask()
andRelation.getSuccessorTask()
methods. - Marked the
Relation.getSourceTask()
andRelation.getTargetTask()
methods as deprecated, use theRelation.getPredecessorTask()
andRelation.getSuccessorTask()
instead. - Ensure that with "Link Cross Project Relations" enabled when reading XER or PMXML files, the predecessor and successor lists for both tasks related acrosss projects are correctly populated.
Version 13.5.1
- Fix CVE-2024-49771: Potential Path Traversal Vulnerability