Browse our Products

Aspose.Tasks for Java 20.4 Release Notes

Major Features

The release Aspose.Tasks for Java 20.4supports the long-awaited feature of saving into MPP format without preloading of MPP template file. The next scenario is valid now:

Project p = new Project(); // there is no more need to load MPP template to save it into MPP
// add tasks, resources, etc.
...
p.save("project.mpp", SaveFileFormat.MPP); // !The project will be saved into MPP by using internal MPP template.

Also in this release, we are presenting the new API to work with the built-in and custom properties of a project.

Old meta properties API:

// Custom properties are available through the dictionary of untyped properties:
for (Map.Entry<String, Object> documentCustomProperty : document.getCustomProperties().entrySet()) {
    System.out.println(documentCustomProperty.getKey());
    System.out.println(documentCustomProperty.getValue());
}
// Built-in properties are available through the Project class:
Project project = new Project("Project.mpp");
System.out.println(project.get(Prj.TITLE));
System.out.println(project.get(Prj.AUTHOR));
// ... etc.

New meta properties API:

// Custom properties are available through the typed collection:
Project project = new Project();
for (CustomProjectProperty property : project.getCustomProps()) {
    System.out.println(property.getType());
    System.out.println(property.getName());
    System.out.println(property.getValue());
}
// Built-in properties are available directly:
System.out.println(project.getBuiltInProps().getAuthor());
System.out.println(project.getBuiltInProps().getTitle());
// ... etc.
// ... or as an item of built-in property collection:
for (BuiltInProjectProperty property : project.getBuiltInProps()) {
    System.out.println(property.getName());
    System.out.println(property.getValue());
    // ... etc.
}

All Changes

KeySummaryIssue Type
TASKSNET-3703Implement a support of saving a project into MPP file without preloading of an MPP template fileNew Feature
TASKSNET-3764Refactor Custom and BuiltIn PropertiesEnhancement
TASKSNET-3593When calculation mode is set to automatic the code executes for too longEnhancement
TASKSNET-3724Fix cost calculation in specific MPP fileBug
TASKSNET-3802Fix IndexOutOfRange exception on loading MPP fileBug
TASKSNET-3753Fix extra resource presented in output MPP after reading from DBBug
TASKSNET-3727Fix different project start/end dates in licensed and evaluation modesBug
TASKSNET-3709Fix reading of GdHtml filesBug

Public API and Backwards Incompatible Changes

The following public types were added:Description
com.aspose.tasks.BuiltInProjectPropertyRepresents a built-in property.
com.aspose.tasks.BuiltInProjectPropertyCollectionRepresents a collection of built-in project properties.
com.aspose.tasks.CustomProjectPropertyRepresents a custom property.
com.aspose.tasks.CustomProjectPropertyCollectionRepresents a collection of custom project properties.
com.aspose.tasks.CustomPropertyTypeRepresents a custom property type enumeration.
com.aspose.tasks.GenericPropertyRepresents a base class of a strongly typed property.
com.aspose.tasks.PropertyRepresents a base class of a property.
com.aspose.tasks.PropertyCollectionA base class of collection of properties.
The following public methods and properties were added:Description
com.aspose.tasks.Baseline.equals(com.aspose.tasks.Baseline)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.Baseline.opEquality(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.Baseline.opInequality(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is not equal to a specified object.
com.aspose.tasks.Baseline.opLessThan(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is less than a specified object.
com.aspose.tasks.Baseline.opGreaterThan(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is greater than a specified object.
com.aspose.tasks.Baseline.opGreaterThanOrEqual(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is greater than or equal to a specified object.
com.aspose.tasks.Baseline.opLessThanOrEqual(com.aspose.tasks.Baseline,com.aspose.tasks.Baseline)Returns a value indicating whether this instance is less than or equal to a specified object.
com.aspose.tasks.Duration.opEquality(com.aspose.tasks.Duration,com.aspose.tasks.Duration)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.Duration.opInequality(com.aspose.tasks.Duration,com.aspose.tasks.Duration)Returns a value indicating whether this instance is not equal to a specified object.
com.aspose.tasks.Filter.equals(com.aspose.tasks.Filter)Returns a value indicating whether this instance is equal to the specified AssignmentBaseline object.
com.aspose.tasks.Filter.opEquality(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.Filter.opInequality(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is not equal to a specified object.
com.aspose.tasks.Filter.opLessThan(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is less than a specified object.
com.aspose.tasks.Filter.opGreaterThan(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is greater than a specified object.
com.aspose.tasks.Filter.opGreaterThanOrEqual(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is greater than or equal to a specified object.
com.aspose.tasks.Filter.opLessThanOrEqual(com.aspose.tasks.Filter,com.aspose.tasks.Filter)Returns a value indicating whether this instance is less than or equal to a specified object.
com.aspose.tasks.NullableBool.opEquality(com.aspose.tasks.NullableBool,com.aspose.tasks.NullableBool)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.NullableBool.opInequality(com.aspose.tasks.NullableBool,com.aspose.tasks.NullableBool)Returns a value indicating whether this instance is not equal to a specified object.
com.aspose.tasks.Project.getBuiltInPropsGets project’s built-in properties collection.
com.aspose.tasks.Project.getCustomPropsGets project’s custom properties collection.
com.aspose.tasks.BuiltInProjectPropertyCollection.isReadOnlyGets a value indicating whether this collection is read-only; otherwise, false.
com.aspose.tasks.BuiltInProjectPropertyCollection.getTitleGets or sets the title of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getSubjectGets or sets the subject of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getAuthorGets or sets the author of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getManagerGets or sets the manager of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getCompanyGets or sets the company of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getCategoryGets or sets the category of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getKeywordsGets or sets the keywords of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getCommentsGets or sets the comments of a project.
com.aspose.tasks.BuiltInProjectPropertyCollection.getHyperlinkBaseGets or sets the hyperlink base of a project.
com.aspose.tasks.CustomProjectProperty.getTypeGets the type of the property.
com.aspose.tasks.CustomProjectPropertyCollection.#ctorInitializes a new instance of the com.aspose.tasks.CustomProjectPropertyCollection class.
com.aspose.tasks.CustomProjectPropertyCollection.isReadOnlyGets a value indicating whether this collection is read-only; otherwise, false.
com.aspose.tasks.CustomProjectPropertyCollection.remove(java.lang.String)Removes a property with the specified name from the collection.
com.aspose.tasks.CustomProjectPropertyCollection.clearClears the PropertyCollection.
com.aspose.tasks.CustomProjectPropertyCollection.add(java.lang.String,java.lang.String)Creates a new custom property.
com.aspose.tasks.CustomProjectPropertyCollection.add(java.lang.String,boolean)Creates a new custom property.
com.aspose.tasks.CustomProjectPropertyCollection.add(java.lang.String,double)Creates a new custom property.
com.aspose.tasks.CustomProjectPropertyCollection.add(java.lang.String,java.util.Date)Creates a new custom property.
com.aspose.tasks.GenericProperty.#ctor(java.lang.String)Initializes a new instance of the com.aspose.tasks.GenericProperty class.
com.aspose.tasks.GenericProperty.getValueGenericPropertyNew com.aspose.tasks.GenericProperty.setValueGenericPropertyNew(java.lang.Object)Gets or sets a value of the property.
com.aspose.tasks.Property.getNameGets the name of the property.
com.aspose.tasks.Property.getValue com.aspose.tasks.Property.setValue(java.lang.Object)Gets or sets the value of the property.
com.aspose.tasks.Property.toStringReturns the property value as string.
com.aspose.tasks.PropertyCollection.#ctorInitializes a new instance of the PropertyCollection class.
com.aspose.tasks.PropertyCollection.getNamesGets the collection of all property names.
com.aspose.tasks.PropertyCollection.sizeGets the number of properties in the collection.
com.aspose.tasks.PropertyCollection.isReadOnlyGets a value indicating whether this collection is read-only; otherwise, false.
com.aspose.tasks.PropertyCollection.getItem(java.lang.String)Gets the Property associated with the specified key.
com.aspose.tasks.PropertyCollection.contains(java.lang.String)Determines whether the com.aspose.tasks.PropertyCollection contains a property with the specified name.
com.aspose.tasks.View.opEquality(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is equal to a specified object.
com.aspose.tasks.View.opInequality(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is not equal to a specified object.
com.aspose.tasks.View.opLessThan(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is less than a specified object.
com.aspose.tasks.View.opGreaterThan(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is greater than a specified object.
com.aspose.tasks.View.opGreaterThanOrEqual(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is greater than or equal to a specified object.
com.aspose.tasks.View.opLessThanOrEqual(com.aspose.tasks.View,com.aspose.tasks.View)Returns a value indicating whether this instance is less than or equal to a specified object.
com.aspose.tasks.WeekDayCollection.copyTo(com.aspose.tasks.WeekDay[],int)Copies collection content to an array at specified index.
com.aspose.tasks.WeekDayCollection.indexOf(com.aspose.tasks.WeekDay)Returns index of com.aspose.tasks.WeekDay specified.
com.aspose.tasks.WeekDayCollection.add(int,com.aspose.tasks.WeekDay)Inserts com.aspose.tasks.WeekDay at specified index.
com.aspose.tasks.WorkingTime.#ctor(java.util.Date,java.util.Date)Initializes a new instance of the com.aspose.tasks.WorkingTime class with a com.aspose.tasks.WorkingTime interval item with specified start and finish times.
The following public enumerations were added:Description
com.aspose.tasks.CustomPropertyType.NoneThe property has no type.
com.aspose.tasks.CustomPropertyType.StringThe property is a string value.
com.aspose.tasks.CustomPropertyType.DateTimeThe property is a date time value.
com.aspose.tasks.CustomPropertyType.NumberThe property is an integer number.
com.aspose.tasks.CustomPropertyType.BooleanThe property is a boolean value.