Releases: joniles/mpxj
Releases · joniles/mpxj
Version 12.0.0
- NOTE: this is a major version release, breaking changes have been made to the MPXJ API as documented below.
- Timestamps, dates, and times are now represented by
java.time.LocalDateTime
,java.time.LocalDate
andjava.time.LocalTime
respectively, rather thanjava.util.Date
as they were originally. - For .Net users, new
ToDateTime
andToNullableDateTime
extension methods have been provided to convertjava.time.LocalDateTime
,java.time.LocalDate
,java.time.LocalTime
toDateTime
instances. - For .Net users, new
ToJavaLocalDateTime
,ToJavaLocalDate
andToJavaLocalTime
extension methods have been provided to convertDateTime
instances tojava.time.LocalDateTime
,java.time.LocalDate
, andjava.time.LocalTime
. - The class
net.sf.mpxj.Day
has been replaced byjava.time.DayOfWeek
. - All code previously marked as deprecated has been removed.
- Added support for reading and writing the Activity attribute "Expected Finish" for P6 schedules.
Version 11.5.4
- Improve accuracy of dates read from Synchro, Suretrak and Turboproject files.
- By default ignore errors in individual records read from XER files. This matches P6's behavior when importing XER files. Use the
PrimaveraXERFileReader.setIgnoreErrors
method to change the behavior.
Version 11.5.3
- When writing an XER file, provide the necessary default values to allow non-P6 schedules to be successfully imported into P6.
- Ensure multi-day exceptions are written to XER files correctly.
- Ensure GanttProject exception dates are read correctly.
- More closely match the Planner predecessor lag calculation.
- Ensure that
java.sql.Date
values are correctly formatted when writing XER files. - When reading from a P6 database, check to ensure the location table is present before attemting to read locations.
Version 11.5.2
- Improve accuracy of calendar data read from certain Powerproject schedules.
- Improve handling of unusual XER files with calendar time ranges expressed in 12-hour format.
- Correctly parse midnight represented as 24:00:00 from MSPDI files written by certain non-Microsoft Project applications.
- For MSPDI files produced by applications other than Microsoft Project which have an incorrectly nested calendar hierarchy, avoid pruning derived calendars which are referenced elsewhere in the hierarchy.
Version 11.5.1
- Improve read performance when working with large schedules.
- Improve read and write performance of code handling resource calendars.
- Updated to use sqlite-jdbc 3.42.0.0
Version 11.5.0
- Added the ability to read Subproject data embedded in MSPDI files.
- Added the ability to read timephased baseline work and cost from MSPDI files.
- Added the ability to write timephased baseline work and cost to MSPDI files.
- Improve accuracy of timephased baseline work read from MPP files.
- Ensure that non-recurring calendar exceptions take precedence over recurring calendar exceptions.
- Avoid creating duplicate calendar exceptions when reading Asta PP files.
- Added the Bar Name attribute to Task, which is accessed using the
getBarName
andsetBarName
methods. This is populated with the name of the bar to which a task belongs when reading an Asta Powerproject schedule. - When reading schedules from XER files and P6 databases, ensure durations without a value are returned as
null
rather than as a zero duration.
Version 11.4.0
- Added the "Resource Pool File" attribute to ProjectProperties, which represents the full path of the resource pool used by an MPP file. This attribute is accessible via the
getResourcePoolFile
andsetResourcePoolFile
methods. - Added the
getResourcePoolObject
method to allow the resource pool file to be located and read - Added support for reading the task attribute Subproject GUID from MPP files. This attribute can be accessed via the
getSubprojectGUID
andsetSubprojectGUID
methods. - Added support for the task attribute "External Project". When this attribute is true it indicates that the task represents a subproject. The attribute is accessed via the
getExternalProject
andsetExternalProject
methods. - When reading an MSPDI file with external task predecessors, MPXJ now attempts to recreate the placeholder external tasks which would be present if the equivalent MPP file was read.
- External task predecessors are now represented when writing an MSPDI file.
- Added the Task method
getSubprojectObject
which allows the caller to retrieve a ProjectFile instance representing the external project linked to a task. - Added the Task method
expandSubproject
. For task which represent an external project, this method automatically loads the external project and attaches the tasks it contains as children of the current task. This is analogous to the behavior in Microsoft Project where a subproject is expanded to reveal the tasks it contains. - Added the ProjectFile method
expandSubprojects
which identifies any tasks in the project which represent an external project and expands them, linking the tasks from the external project as children of the task in the parent project. Note that the method works recursively so multiple levels of external tasks will be expanded. - Updated to ensure that the
internal_name
attribute of aUserdefinedField
is generated if not present. - Updated to avoid an exception when reading notebook topics from PMXML files.
- Marked the Task method
setSubprojectName
as deprecated. Use thesetSubProjectFile
method instead. - Marked the Task method
getSubprojectName
as deprecated. UsegetSubprojectFile
instead. - Marked the Task method
setExternalTaskProject
as deprecated. Use thesetSubprojectFile
method instead. - Marked the Task method
getExternalTaskProject
as deprecated. Use thegetSubprojectFile
method instead. - Marked the ProjectFile method
getSubProjects
as deprecated. Use the subproject attributes on individual tasks instead. - Marked the Task methods
getSubProject
andsetSubProject
as deprecated. Use the subproject attributes instead.
Version 11.3.2
- Improve default values provided for P6 calendars with missing data.
- Implement both "planned dates" and "current dates" strategies for populating P6 baselines.
- Ensure the Project GUID is read from MPP files.
Version 11.3.1
- Improve accuracy of resource assignment Actual Start and Actual Finish dates when reading MPP files.
- Avoid generating timephased data for zero duration tasks.
- Improve preservation of custom timephased data start and end times.
Version 11.3.0
- Implemented
PrimaveraXERFileWriter
to allow MPXJ to write XER files. - Updated the
ActivityCode
class to ensure that both the scope Project ID and EPS ID can be represented when reading a P6 schedule. (Potentially breaking change if you were using this class). - Ensure secondary constraint date and type are written to PMXML files.
- Ensure leveling priority is written to PMXML files.
- Ensure WBS UDF values are written to PMXML files.
- Ensure integer UDF values are read correctly from XER files and P6 databases.
- Add methods to allow the project's default calendar unique ID to be set and retrieved.
- Add method to allow a calendar's parent calendar unique ID to be retrieved.
- Add method to allow a task's parent task unique ID to be retrieved.
- Add methods to allow a resource assignment's role unique ID to be set and retrieved.
- Add methods to allow a resource assignment's cost account unique ID to be set and retrieved.
- Add method to allow a cost account's parent unique ID to be retrieved.
- Add method to allow an expense item's cost account unique ID to be retrieved.
- Add method to allow an expense item's category unique ID to be retrieved.
- Added
WorkContour.isDefault()
method to allow "built in" resouce curves/work contours to be distinguished from user defined curves. - Updated to retrieve the project's start date from Phoenix PPX files (Contributed by Rohit Sinha).
- Provide access to notebook topics from P6 schedules via the
ProjectFile.getNotesTopics()
method. - Capture unique ID of Activity and WBS notes from P6 schedules.
- Improve the calculation used to determine At Completion Duration of activities when reading XER files and P6 databases.
- Improve representation of certain duration values written to MSPDI files.
- Improve accuracy of certain work calculations where the specified time period does not start with a working day.
- Fix an issue which caused negative timephased work values to be generated when reading certain MPP files.
- Fix an issue reading XER files where the
critical_drtn_hr_cnt
field is expressed a decimal rather than an integer. - Fix an issue populating the WBS attribute for activities read from certain XER files.