Skip to content

Commit

Permalink
Support resource generic attribute.
Browse files Browse the repository at this point in the history
  • Loading branch information
joniles committed May 25, 2018
1 parent 801fccf commit 5dde66a
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 35 deletions.
5 changes: 3 additions & 2 deletions maven/src/changes/changes.xml
Expand Up @@ -6,8 +6,9 @@
</properties>
<body>
<release date="git master" version="7.4.3">
<action dev="joniles" type="update">Store the Primavera Project ID as Unique ID in the project properties.</action>
<action dev="joniles" type="add">Add a Unique ID attribute to the Relation class and populate for schedule types which support this concept.</action>
<action dev="joniles" type="add">Add support for reading the resource "generic" attribute from MPP files.</action>
<action dev="joniles" type="add">Add a Unique ID attribute to the Relation class and populate for schedule types which support this concept.</action>
<action dev="joniles" type="update">Store the Primavera Project ID as Unique ID in the project properties.</action>
<action dev="joniles" type="update">Update MerlinReader to ensure support for Merlin Project Pro 5.</action>
</release>
<release date="30/04/2018" version="7.4.2">
Expand Down
20 changes: 15 additions & 5 deletions src/net/sf/mpxj/Resource.java
Expand Up @@ -1108,7 +1108,7 @@ public void setBCWP(Number bcwp)
}

/**
* Retrievesthe budgeted cost of work performed.
* Retrieves the budgeted cost of work performed.
*
* @return budgeted cost of work performed
*/
Expand All @@ -1121,10 +1121,21 @@ public Number getBCWP()
* Sets the generic flag.
*
* @param isGeneric generic flag
* @deprecated use setGeneric
*/
public void setIsGeneric(boolean isGeneric)
@Deprecated public void setIsGeneric(boolean isGeneric)
{
m_generic = isGeneric;
set(ResourceField.GENERIC, isGeneric);
}

/**
* Sets the generic flag.
*
* @param value generic flag
*/
public void setGeneric(boolean value)
{
set(ResourceField.GENERIC, value);
}

/**
Expand All @@ -1134,7 +1145,7 @@ public void setIsGeneric(boolean isGeneric)
*/
public boolean getGeneric()
{
return (m_generic);
return BooleanHelper.getBoolean((Boolean) getCachedValue(ResourceField.GENERIC));
}

/**
Expand Down Expand Up @@ -2554,7 +2565,6 @@ public void enableEvents()

private boolean m_eventsEnabled = true;
private boolean m_null;
private boolean m_generic;
private boolean m_inactive;
private String m_activeDirectoryGUID;
private Duration m_actualOvertimeWorkProtected;
Expand Down
4 changes: 2 additions & 2 deletions src/net/sf/mpxj/asta/AstaReader.java
Expand Up @@ -131,7 +131,7 @@ public void processResources(List<Row> permanentRows, List<Row> consumableRows)
resource.setName(row.getString("NASE"));
resource.setResourceCalendar(deriveResourceCalendar(row.getInteger("CALENDAV")));
resource.setMaxUnits(Double.valueOf(row.getDouble("AVAILABILITY").doubleValue() * 100));
resource.setIsGeneric(row.getBoolean("CREATED_AS_FOLDER"));
resource.setGeneric(row.getBoolean("CREATED_AS_FOLDER"));
resource.setInitials(getInitials(resource.getName()));
}

Expand Down Expand Up @@ -163,7 +163,7 @@ public void processResources(List<Row> permanentRows, List<Row> consumableRows)
resource.setResourceCalendar(deriveResourceCalendar(row.getInteger("CALENDAV")));
resource.setAvailableFrom(row.getDate("AVAILABLE_FROM"));
resource.setAvailableTo(row.getDate("AVAILABLE_TO"));
resource.setIsGeneric(row.getBoolean("CREATED_AS_FOLDER"));
resource.setGeneric(row.getBoolean("CREATED_AS_FOLDER"));
resource.setMaterialLabel(row.getString("MEASUREMENT"));
resource.setInitials(getInitials(resource.getName()));
}
Expand Down
3 changes: 3 additions & 0 deletions src/net/sf/mpxj/mpp/MPP12Reader.java
Expand Up @@ -1544,6 +1544,9 @@ private void processResourceEnterpriseColumns(Resource resource, byte[] metaData
resource.set(ResourceField.ENTERPRISE_FLAG18, Boolean.valueOf((bits & 0x200000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG19, Boolean.valueOf((bits & 0x400000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG20, Boolean.valueOf((bits & 0x800000) != 0));

bits = MPPUtility.getInt(metaData2, 32);
resource.set(ResourceField.GENERIC, Boolean.valueOf((bits & 0x04000000) != 0));
}
}

Expand Down
6 changes: 4 additions & 2 deletions src/net/sf/mpxj/mpp/MPP14Reader.java
Expand Up @@ -2207,13 +2207,15 @@ private void readBitFields(MppBitFlag[] flags, FieldContainer container, byte[]
private static final MppBitFlag[] PROJECT2010_RESOURCE_META_DATA2_BIT_FLAGS =
{
new MppBitFlag(ResourceField.BUDGET, 8, 0x20, Boolean.FALSE, Boolean.TRUE),
new MppBitFlag(ResourceField.TYPE, 8, 0x10, ResourceType.MATERIAL, ResourceType.COST)
new MppBitFlag(ResourceField.TYPE, 8, 0x10, ResourceType.MATERIAL, ResourceType.COST),
new MppBitFlag(ResourceField.GENERIC, 32, 0x04000000, Boolean.FALSE, Boolean.TRUE),
};

private static final MppBitFlag[] PROJECT2013_RESOURCE_META_DATA2_BIT_FLAGS =
{
new MppBitFlag(ResourceField.BUDGET, 8, 0x20, Boolean.FALSE, Boolean.TRUE),
new MppBitFlag(ResourceField.TYPE, 8, 0x10, ResourceType.MATERIAL, ResourceType.COST)
new MppBitFlag(ResourceField.TYPE, 8, 0x10, ResourceType.MATERIAL, ResourceType.COST),
new MppBitFlag(ResourceField.GENERIC, 32, 0x10000000, Boolean.FALSE, Boolean.TRUE),
};

private static final MppBitFlag[] PROJECT2010_RESOURCE_META_DATA_BIT_FLAGS =
Expand Down
63 changes: 40 additions & 23 deletions src/net/sf/mpxj/mpp/MPP9Reader.java
Expand Up @@ -1529,31 +1529,48 @@ private void processResourceEnterpriseColumns(FieldMap fieldMap, Resource resour

case BOOLEAN:
{
if (field == ResourceField.FLAG1)
switch (field)
{
field = null;
int bits = props.getInt(key);
resource.set(ResourceField.ENTERPRISE_FLAG1, Boolean.valueOf((bits & 0x00002) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG2, Boolean.valueOf((bits & 0x00004) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG3, Boolean.valueOf((bits & 0x00008) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG4, Boolean.valueOf((bits & 0x00010) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG5, Boolean.valueOf((bits & 0x00020) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG6, Boolean.valueOf((bits & 0x00040) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG7, Boolean.valueOf((bits & 0x00080) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG8, Boolean.valueOf((bits & 0x00100) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG9, Boolean.valueOf((bits & 0x00200) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG10, Boolean.valueOf((bits & 0x00400) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG11, Boolean.valueOf((bits & 0x00800) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG12, Boolean.valueOf((bits & 0x01000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG13, Boolean.valueOf((bits & 0x02000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG14, Boolean.valueOf((bits & 0x04000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG15, Boolean.valueOf((bits & 0x08000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG16, Boolean.valueOf((bits & 0x10000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG17, Boolean.valueOf((bits & 0x20000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG18, Boolean.valueOf((bits & 0x40000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG19, Boolean.valueOf((bits & 0x80000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG20, Boolean.valueOf((bits & 0x100000) != 0));
case FLAG1:
{
field = null;
int bits = props.getInt(key);
resource.set(ResourceField.ENTERPRISE_FLAG1, Boolean.valueOf((bits & 0x00002) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG2, Boolean.valueOf((bits & 0x00004) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG3, Boolean.valueOf((bits & 0x00008) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG4, Boolean.valueOf((bits & 0x00010) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG5, Boolean.valueOf((bits & 0x00020) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG6, Boolean.valueOf((bits & 0x00040) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG7, Boolean.valueOf((bits & 0x00080) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG8, Boolean.valueOf((bits & 0x00100) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG9, Boolean.valueOf((bits & 0x00200) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG10, Boolean.valueOf((bits & 0x00400) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG11, Boolean.valueOf((bits & 0x00800) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG12, Boolean.valueOf((bits & 0x01000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG13, Boolean.valueOf((bits & 0x02000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG14, Boolean.valueOf((bits & 0x04000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG15, Boolean.valueOf((bits & 0x08000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG16, Boolean.valueOf((bits & 0x10000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG17, Boolean.valueOf((bits & 0x20000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG18, Boolean.valueOf((bits & 0x40000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG19, Boolean.valueOf((bits & 0x80000) != 0));
resource.set(ResourceField.ENTERPRISE_FLAG20, Boolean.valueOf((bits & 0x100000) != 0));
break;
}

case GENERIC:
{
field = null;
resource.setGeneric(props.getShort(key) != 0);
break;
}

default:
{
break;
}
}

break;
}

Expand Down
2 changes: 1 addition & 1 deletion src/net/sf/mpxj/mspdi/MSPDIReader.java
Expand Up @@ -917,7 +917,7 @@ private void readResource(Project.Resources.Resource xml, HashMap<BigInteger, Pr
mpx.setID(NumberHelper.getInteger(xml.getID()));
mpx.setInitials(xml.getInitials());
mpx.setIsEnterprise(BooleanHelper.getBoolean(xml.isIsEnterprise()));
mpx.setIsGeneric(BooleanHelper.getBoolean(xml.isIsGeneric()));
mpx.setGeneric(BooleanHelper.getBoolean(xml.isIsGeneric()));
mpx.setIsInactive(BooleanHelper.getBoolean(xml.isIsInactive()));
mpx.setIsNull(BooleanHelper.getBoolean(xml.isIsNull()));
//mpx.setLinkedFields();
Expand Down

0 comments on commit 5dde66a

Please sign in to comment.