com.ptc.windchill.counterpart
Class cWTMetadata

java.lang.Object
  extended bycom.ptc.windchill.counterpart.cWTMetadata
All Implemented Interfaces:
nitidus.sil.be.att.iAttachmentIteratorIO, nitidus.sil.be.core.iManagerIO, nitidus.sil.be.clf.iMasterClassificationIO, nitidus.sil.be.clf.iPrivateClassificationIO, nitidus.sil.be.unit.iUnitWorldIO

public class cWTMetadata
extends Object
implements nitidus.sil.be.clf.iMasterClassificationIO, nitidus.sil.be.unit.iUnitWorldIO


Field Summary
private static String CLASSNAME
           
private static boolean DEBUG
           
private  HashMap fAttributeHierarchyIDMap
           
private  nitidus.sil.be.clf.iMasterClassificationManager fCfnManager
           
private  cAbstractClassificationNode[] fClasses
           
private  CounterPartDelta fDelta
           
private  nitidus.sil.be.clf.iMasterClassificationIO fMasterClassificationIO
           
private  cAbstractAttributeDefinition[] fProperties
           
private  cAttributeOrganizer[] fPropertyFolders
           
private  cQuantityOfMeasure[] fQuantitiesOfMeasure
           
private  nitidus.sil.be.unit.iUnitFamilyIO[] fUnitFamilies
           
private  cMeasurementSystem[] fUnitSystems
           
private static DebugWriter LOG
           
 
Constructor Summary
cWTMetadata(nitidus.sil.be.clf.iMasterClassificationManager cfnManager, CounterPartDelta delta)
           
 
Method Summary
private  void addClasses(ClassificationNodeDefaultView[] nodeViews, HashMap idMap, HashMap childNodeMap, HashMap constraintMap, ArrayList classList)
           
private  HashMap addPropToFolder(nitidus.sil.be.clf.iPartProperty prop, HashMap wtFolderMap, HashMap cpPropertyFoldersIOMap)
           
 void apply(CounterPartErrorReport errors)
          applies changes on Windchill
private  ArrayList createPropertyFolderList(ArrayList folderList, HashMap childFolderMap, HashMap childPropMap, AttributeOrgDefaultView rootOrganizer, ArrayList rootFolderChildren)
           
 void enrich()
           
private  void enrichClasses()
           
private  void enrichProperties()
           
private  void enrichPropertyFolders()
           
private  void enrichQOMAndDAtaUnits(cUnitIBADefinition wtUnitProperty)
           
private  void enrichQOMs()
           
private  void enrichRefClassRef(cReferenceIBADefinition wtRefProperty)
           
private  void enrichUnits(nitidus.sil.be.unit.iUnitWorldIO cpUnitWorldIO)
           
private  ClassificationNodeDefaultView[] getAttributeContainers(ClassificationNodeDefaultView[] nodeViews, int nextClone)
           
 nitidus.sil.be.clf.iPartClassIO[] getClasses()
           
private  nitidus.sil.be.clf.iMasterClassificationIO getClassificationIO()
           
private  cAbstractClassificationNode[] getcombinedClasses()
           
private  cAbstractAttributeDefinition[] getCombinedProperties()
           
private  void getConstraintsForNodes(ClassificationNodeDefaultView[] nodeViews, HashMap constraintMap)
          Uses the WSF/CSM API to query the database for classification constraints and create a list of constraints for each classification node and stores the list against the node in the given map.
protected  ArrayList getCpClasses()
           
protected  ArrayList getCpProperties()
           
protected  ArrayList getCpPropertyFolders()
           
protected  ArrayList getCPQoMs()
          obtains CP unit systems list
protected  ArrayList getCPUnitSystems()
          obtains CP unit systems list
 nitidus.sil.be.unit.iUnitFamilyIO[] getFamily()
           
private  HashMap getIDHashMap(nitidus.sil.be.core.iEntryIO[] entries)
           
 nitidus.sil.be.att.iAttachedContentIO getNextAttachment()
           
private  ClassificationNodeDefaultView[] getNodeViews(ClassificationStruct struct, HashMap idMap, HashMap childNodeMap, HashMap constraintMap)
          Queries the database for all classification nodes for a given structure.
private  nitidus.sil.be.clf.iPartClass getPartClassForStruct(ClassificationStructDefaultView structView)
           
 nitidus.sil.be.clf.iPartPropertyIO[] getProperties()
           
 nitidus.sil.be.clf.iPropertyFolderIO[] getPropertyFolders()
           
 nitidus.sil.be.clf.iQuantityOfMeasureIO[] getQuantitiesOfMeasure()
           
 String getRootClassRef()
           
private  cModeledNode getRootNode()
           
 String getRootPropertyFolderRef()
           
private  ClassificationStruct[] getStructures()
           
 nitidus.sil.be.unit.iUnitSystemIO[] getSystem()
           
protected  ArrayList getWtClasses()
           
protected  ArrayList getWtOrganizers()
           
protected  ArrayList getWtProperties()
           
protected  ArrayList getWtQoMs()
          obtains WT QoMs
protected  ArrayList getWTUnitSystems()
          obtains WT unit systems
(package private) static boolean hasBadSystemRef(nitidus.sil.be.unit.iUnitIO unit, nitidus.sil.be.unit.iUnitSystemIO[] wtSystems)
           
private static boolean isInClassList(nitidus.sil.be.clf.iPartClass partClass, nitidus.sil.be.clf.iPartClassIO[] classList)
           
private  void reorderUnitSystems(nitidus.sil.be.unit.iUnitSystemIO[] inOrder)
           
private  void setChildFolderRefsForFolders(ArrayList folderList, HashMap childFolderMap, ArrayList rootFolderChildren)
           
private  void setChildNodeRefsForNodes(ClassificationNodeDefaultView[] nodeViews, HashMap childNodeMap, ArrayList structNodeChildren)
          Scans the given array of classification nodes and creates a list of children for each classification node and stores the list against the node in the given map.
private  void setChildPropRefsForFolders(HashMap childPropMap)
           
private  void setClasses(cAbstractClassificationNode[] classes)
           
private  void setClassificationIO(nitidus.sil.be.clf.iMasterClassificationIO classificationIO)
           
private  void setProperties(cAbstractAttributeDefinition[] properties)
           
private  void setPropertyFolders(cAttributeOrganizer[] propertyFolders)
           
private  void setQuantitiesOfMeasure(cQuantityOfMeasure[] quantitiesOfMeasure)
           
private  void setSomeConstraints(AttributeConstraint[] constraints, HashMap constraintMap)
          For a given array of classification constraints, assign each constraint to the list for the appropriate classification node in the given map.
 void validate(CounterPartErrorReport errors)
          validation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fCfnManager

private nitidus.sil.be.clf.iMasterClassificationManager fCfnManager

fMasterClassificationIO

private nitidus.sil.be.clf.iMasterClassificationIO fMasterClassificationIO

fDelta

private CounterPartDelta fDelta

fUnitSystems

private cMeasurementSystem[] fUnitSystems

fUnitFamilies

private nitidus.sil.be.unit.iUnitFamilyIO[] fUnitFamilies

fPropertyFolders

private cAttributeOrganizer[] fPropertyFolders

fQuantitiesOfMeasure

private cQuantityOfMeasure[] fQuantitiesOfMeasure

fClasses

private cAbstractClassificationNode[] fClasses

fProperties

private cAbstractAttributeDefinition[] fProperties

fAttributeHierarchyIDMap

private HashMap fAttributeHierarchyIDMap

CLASSNAME

private static final String CLASSNAME

DEBUG

private static final boolean DEBUG

LOG

private static final DebugWriter LOG
Constructor Detail

cWTMetadata

public cWTMetadata(nitidus.sil.be.clf.iMasterClassificationManager cfnManager,
                   CounterPartDelta delta)
Method Detail

getFamily

public nitidus.sil.be.unit.iUnitFamilyIO[] getFamily()
Specified by:
getFamily in interface nitidus.sil.be.unit.iUnitWorldIO
See Also:
iUnitWorldIO

getSystem

public nitidus.sil.be.unit.iUnitSystemIO[] getSystem()
Specified by:
getSystem in interface nitidus.sil.be.unit.iUnitWorldIO
See Also:
iUnitWorldIO

getNextAttachment

public nitidus.sil.be.att.iAttachedContentIO getNextAttachment()
                                                        throws IOException
Specified by:
getNextAttachment in interface nitidus.sil.be.att.iAttachmentIteratorIO
Throws:
IOException
See Also:
iMasterClassificationIO

getRootPropertyFolderRef

public String getRootPropertyFolderRef()
Specified by:
getRootPropertyFolderRef in interface nitidus.sil.be.clf.iMasterClassificationIO
See Also:
iMasterClassificationIO

getPropertyFolders

public nitidus.sil.be.clf.iPropertyFolderIO[] getPropertyFolders()
Specified by:
getPropertyFolders in interface nitidus.sil.be.clf.iMasterClassificationIO
See Also:
iMasterClassificationIO

setPropertyFolders

private final void setPropertyFolders(cAttributeOrganizer[] propertyFolders)

setChildFolderRefsForFolders

private final void setChildFolderRefsForFolders(ArrayList folderList,
                                                HashMap childFolderMap,
                                                ArrayList rootFolderChildren)

setChildPropRefsForFolders

private final void setChildPropRefsForFolders(HashMap childPropMap)

createPropertyFolderList

private final ArrayList createPropertyFolderList(ArrayList folderList,
                                                 HashMap childFolderMap,
                                                 HashMap childPropMap,
                                                 AttributeOrgDefaultView rootOrganizer,
                                                 ArrayList rootFolderChildren)

getQuantitiesOfMeasure

public nitidus.sil.be.clf.iQuantityOfMeasureIO[] getQuantitiesOfMeasure()
Specified by:
getQuantitiesOfMeasure in interface nitidus.sil.be.clf.iMasterClassificationIO
See Also:
iMasterClassificationIO

setQuantitiesOfMeasure

private final void setQuantitiesOfMeasure(cQuantityOfMeasure[] quantitiesOfMeasure)

getRootClassRef

public String getRootClassRef()
Specified by:
getRootClassRef in interface nitidus.sil.be.clf.iPrivateClassificationIO
See Also:
iPrivateClassificationIO

getClasses

public nitidus.sil.be.clf.iPartClassIO[] getClasses()
Specified by:
getClasses in interface nitidus.sil.be.clf.iPrivateClassificationIO
See Also:
iPrivateClassificationIO

setClasses

private final void setClasses(cAbstractClassificationNode[] classes)

getNodeViews

private final ClassificationNodeDefaultView[] getNodeViews(ClassificationStruct struct,
                                                           HashMap idMap,
                                                           HashMap childNodeMap,
                                                           HashMap constraintMap)
                                                    throws WTException
Queries the database for all classification nodes for a given structure. Builds three hash maps: (1) A map for finding the CounterPart ID of a node from its Object ID. (2) A map for a later method to store lists of children against the Object ID of each node. (3) A map for a later method to store lists of constraints against the Object ID of each node.

Parameters:
struct - the classification structure (classifiable modeled class) to get the nodes for
idMap - see method description
childNodeMap - see method description
constraintMap - see method description
Returns:
array of Windchill classification nodes (may be size zero but never null)
Throws:
WTException

setChildNodeRefsForNodes

private final void setChildNodeRefsForNodes(ClassificationNodeDefaultView[] nodeViews,
                                            HashMap childNodeMap,
                                            ArrayList structNodeChildren)
Scans the given array of classification nodes and creates a list of children for each classification node and stores the list against the node in the given map. A special list of top level nodes is created in the given list.

Parameters:
nodeViews - array of Windchill classification nodes
childNodeMap - hash map containing an entry for each element of nodeViews mapped to an empty list
structNodeChildren - list for children of classification structure (classifiable modeled class)

getConstraintsForNodes

private final void getConstraintsForNodes(ClassificationNodeDefaultView[] nodeViews,
                                          HashMap constraintMap)
                                   throws WTException
Uses the WSF/CSM API to query the database for classification constraints and create a list of constraints for each classification node and stores the list against the node in the given map.

Parameters:
nodeViews - array of Windchill classification nodes to find constraints for
constraintMap - hash map containing an entry for each element of nodeViews mapped to an empty list
Throws:
WTException

setSomeConstraints

private final void setSomeConstraints(AttributeConstraint[] constraints,
                                      HashMap constraintMap)
For a given array of classification constraints, assign each constraint to the list for the appropriate classification node in the given map. Note: requires fAttributeHierarchyIDMap to get attribute details from constraint key

Parameters:
constraints - array of Windchill classification node constraints
constraintMap - hash map containing an entry for each known classification node mapped to a list

addClasses

private final void addClasses(ClassificationNodeDefaultView[] nodeViews,
                              HashMap idMap,
                              HashMap childNodeMap,
                              HashMap constraintMap,
                              ArrayList classList)
                       throws WTException
Throws:
WTException

getAttributeContainers

private final ClassificationNodeDefaultView[] getAttributeContainers(ClassificationNodeDefaultView[] nodeViews,
                                                                     int nextClone)
                                                              throws WTException
Throws:
WTException

getProperties

public nitidus.sil.be.clf.iPartPropertyIO[] getProperties()
Specified by:
getProperties in interface nitidus.sil.be.clf.iPrivateClassificationIO
See Also:
iPrivateClassificationIO

setProperties

private final void setProperties(cAbstractAttributeDefinition[] properties)

getStructures

private final ClassificationStruct[] getStructures()
                                            throws WTException
Throws:
WTException

getPartClassForStruct

private final nitidus.sil.be.clf.iPartClass getPartClassForStruct(ClassificationStructDefaultView structView)

validate

public void validate(CounterPartErrorReport errors)
validation


apply

public void apply(CounterPartErrorReport errors)
applies changes on Windchill


enrich

public void enrich()

getClassificationIO

private final nitidus.sil.be.clf.iMasterClassificationIO getClassificationIO()

setClassificationIO

private final void setClassificationIO(nitidus.sil.be.clf.iMasterClassificationIO classificationIO)

getIDHashMap

private final HashMap getIDHashMap(nitidus.sil.be.core.iEntryIO[] entries)

enrichUnits

private final void enrichUnits(nitidus.sil.be.unit.iUnitWorldIO cpUnitWorldIO)

reorderUnitSystems

private final void reorderUnitSystems(nitidus.sil.be.unit.iUnitSystemIO[] inOrder)
Parameters:
inOrder - iUnitSystemIO array to take ordering from

enrichQOMs

private final void enrichQOMs()

enrichPropertyFolders

private final void enrichPropertyFolders()

enrichProperties

private final void enrichProperties()

enrichRefClassRef

private final void enrichRefClassRef(cReferenceIBADefinition wtRefProperty)

enrichQOMAndDAtaUnits

private final void enrichQOMAndDAtaUnits(cUnitIBADefinition wtUnitProperty)

enrichClasses

private final void enrichClasses()

getCombinedProperties

private final cAbstractAttributeDefinition[] getCombinedProperties()

addPropToFolder

private final HashMap addPropToFolder(nitidus.sil.be.clf.iPartProperty prop,
                                      HashMap wtFolderMap,
                                      HashMap cpPropertyFoldersIOMap)

getcombinedClasses

private final cAbstractClassificationNode[] getcombinedClasses()

isInClassList

private static final boolean isInClassList(nitidus.sil.be.clf.iPartClass partClass,
                                           nitidus.sil.be.clf.iPartClassIO[] classList)

getRootNode

private final cModeledNode getRootNode()

hasBadSystemRef

static final boolean hasBadSystemRef(nitidus.sil.be.unit.iUnitIO unit,
                                     nitidus.sil.be.unit.iUnitSystemIO[] wtSystems)

getCPUnitSystems

protected ArrayList getCPUnitSystems()
obtains CP unit systems list

Returns:
ArrayList of iUnitSystem[]

getWTUnitSystems

protected ArrayList getWTUnitSystems()
obtains WT unit systems

Returns:
ArrayList of iUnitSystemIO objects

getCPQoMs

protected ArrayList getCPQoMs()
obtains CP unit systems list

Returns:
ArrayList of iUnitSystem[]

getWtQoMs

protected ArrayList getWtQoMs()
obtains WT QoMs

Returns:
ArrayList of iQuantityOfMeasureIO objects

getCpPropertyFolders

protected ArrayList getCpPropertyFolders()
Returns:
ArrayList of iPropertyFolder objects

getWtOrganizers

protected ArrayList getWtOrganizers()
Returns:
ArrayList of iPropertyFolderIO objects

getCpProperties

protected ArrayList getCpProperties()
Returns:
ArrayList of iPropertyFolder objects

getWtProperties

protected ArrayList getWtProperties()
Returns:
ArrayList of iPartPropertyIO objects

getCpClasses

protected ArrayList getCpClasses()
Returns:
ArrayList of iPartClass objects

getWtClasses

protected ArrayList getWtClasses()
Returns:
ArrayList of iPartClassIO objects