de.uni_paderborn.fujaba.uml
Class UMLPackage

java.lang.Object
  extended byde.uni_paderborn.fujaba.basic.BasicIncrement
      extended byde.uni_paderborn.fujaba.asg.ASGElement
          extended byde.uni_paderborn.fujaba.uml.UMLIncrement
              extended byde.uni_paderborn.fujaba.uml.UMLPackage
All Implemented Interfaces:
java.lang.Comparable, FElement, FIncrement, FPackage, de.uni_kassel.prop.InspectionAware, LogicUnparseInterface, de.tu_bs.coobra.ObjectChangeAware, de.upb.tools.pcs.PropertyChangeClient, de.upb.tools.pcs.PropertyChangeInterface, UniqueIdentifier

public class UMLPackage
extends UMLIncrement
implements FPackage

Associations

          +-----------+ 1                          1
 UMLClass | getName() +------------------------------ UMLPackage
          +-----------+ declares   declaredInPackage

            +-----------+ 1                1
 UMLPackage | getName() +-------------------- UMLPackage
            +-----------+ parent    packages
 

Version:
$Revision: 1.125.2.2 $
Author:
$Author: fklar $

Nested Class Summary
 
Nested classes inherited from class de.uni_paderborn.fujaba.asg.ASGElement
ASGElement.SortByNameComparator
 
Field Summary
static java.lang.String DEFAULT_PACKAGE_NAME
          No comment provided by developer, please add a comment to improve documentation.
 
Fields inherited from class de.uni_paderborn.fujaba.basic.BasicIncrement
dontUseAccessMethodsInThisClass
 
Fields inherited from interface de.uni_paderborn.fujaba.metamodel.FPackage
DECLARES_PROPERTY, PACKAGES_PROPERTY, PARENT_PROPERTY
 
Fields inherited from interface de.uni_paderborn.fujaba.metamodel.FIncrement
ASSERT_IN_UNIT_TEST_PROPERTY, COMMENT_PROPERTY, CONSTRAINTS_PROPERTY, STEREOTYPES_PROPERTY
 
Fields inherited from interface de.uni_paderborn.fujaba.metamodel.FElement
ANNOTATIONS_PROPERTY, DIAGRAMS_PROPERTY, ELEMENT_REFERENCES_PROPERTY, GENERATED_PROPERTY, NAME_PROPERTY, TEXT_PROPERTY
 
Constructor Summary
UMLPackage()
          Constructor for class UMLPackage
UMLPackage(boolean coobraPersistent)
          Constructor for class UMLPackage
UMLPackage(java.lang.String name)
          Constructor for class UMLPackage
 
Method Summary
 boolean addToDeclares(FClass obj)
          Access method for an one to n association.
protected  void addToDeclares(KeyValuePair pair)
          This method is needed only for loading FTreeMaps, don't use it in other cases.
 boolean addToPackages(FPackage obj)
          Access method for an one to n association.
protected  void addToPackages(KeyValuePair pair)
          This method is needed only for loading FTreeMaps, Don't use it in other cases.
 void addToRevImportedPackages(UMLFile elem)
          Access method for an one to n association.
protected  java.lang.String createUnparseModuleName()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Enumeration elementsOfAllChildren()
          Use this function to get all children of a package (all classes and all packages).
 java.util.Enumeration elementsOfRevImportedPackages()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator entriesOfDeclares()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator entriesOfPackages()
          No comment provided by developer, please add a comment to improve documentation.
 UMLClass findClass(java.lang.String name)
          No comment provided by developer, please add a comment to improve documentation.
 FPackage getFParent()
          Get the fParent attribute of the UMLPackage object
 UMLClass getFromDeclares(java.lang.String key)
          Get the fromDeclares attribute of the UMLPackage object
 FClass getFromFDeclares(java.lang.String key)
          Get the fromFDeclares attribute of the UMLPackage object
 FPackage getFromFPackages(java.lang.String key)
          Get the fromFPackages attribute of the UMLPackage object
 UMLPackage getFromPackages(java.lang.String key)
          Get the fromPackages attribute of the UMLPackage object
 java.lang.String getFullPackageName()
           
 java.lang.String getName()
          Get the name attribute of the UMLPackage object
 java.lang.String getPackagePath()
          Get the packagePath attribute of the UMLPackage object
 UMLPackage getParent()
          Get the parent attribute of the UMLPackage object
 FElement getParentElement()
          Query the logical parent of this element (e.g. package of a class, diagram of an object).
 java.lang.String getText()
          Get the text attribute of the UMLPackage object
 boolean hasInDeclares(FClass obj)
          No comment provided by developer, please add a comment to improve documentation.
 boolean hasInPackages(FPackage obj)
          No comment provided by developer, please add a comment to improve documentation.
 boolean hasInRevImportedPackages(UMLFile elem)
          No comment provided by developer, please add a comment to improve documentation.
 boolean hasKeyInDeclares(java.lang.String key)
          No comment provided by developer, please add a comment to improve documentation.
 boolean hasKeyInPackages(java.lang.String key)
          No comment provided by developer, please add a comment to improve documentation.
 boolean hasParent()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator iteratorOfDeclares()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator iteratorOfPackages()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator iteratorOfRevImportedPackages()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator keysOfDeclares()
          No comment provided by developer, please add a comment to improve documentation.
 java.util.Iterator keysOfPackages()
          No comment provided by developer, please add a comment to improve documentation.
 void readAttributes(java.util.Hashtable objects, de.upb.tools.fca.FDuplicatedTreeMap attributes)
          No comment provided by developer, please add a comment to improve documentation.
 void removeAllFromDeclares()
          No comment provided by developer, please add a comment to improve documentation.
 void removeAllFromPackages()
          No comment provided by developer, please add a comment to improve documentation.
 void removeAllFromRevImportedPackages()
          No comment provided by developer, please add a comment to improve documentation.
 boolean removeFromDeclares(FClass obj)
          No comment provided by developer, please add a comment to improve documentation.
 boolean removeFromPackages(FPackage obj)
          No comment provided by developer, please add a comment to improve documentation.
 void removeFromRevImportedPackages(UMLFile elem)
          No comment provided by developer, please add a comment to improve documentation.
 boolean removeKeyFromDeclares(java.lang.String key)
          No comment provided by developer, please add a comment to improve documentation.
 boolean removeKeyFromPackages(java.lang.String key)
          No comment provided by developer, please add a comment to improve documentation.
 void removeYou()
          Isolates the object so the garbage collector can remove it.
 ASGElement searchID(java.lang.String id)
          Searches the ASG tree for a given id
 void setName(java.lang.String name)
          Sets the name attribute of the UMLPackage object
 boolean setParent(FPackage obj)
          Sets the parent attribute of the UMLPackage object
 int sizeOfDeclares()
          No comment provided by developer, please add a comment to improve documentation.
 int sizeOfPackages()
          No comment provided by developer, please add a comment to improve documentation.
 java.lang.String toString()
          No comment provided by developer, please add a comment to improve documentation.
 
Methods inherited from class de.uni_paderborn.fujaba.uml.UMLIncrement
addToConstraints, addToStereotypes, addToStereotypes, entriesOfStereotypes, getComment, getFComment, getFromFStereotypes, getFromStereotypes, getFromStereotypes, hasInConstraints, hasInStereotypes, hasKeyInStereotypes, isAssertInUnitTest, iteratorOfConstraints, iteratorOfStereotypes, keysOfStereotypes, removeAllFromConstraints, removeAllFromStereotypes, removeFromConstraints, removeFromStereotypes, removeKeyFromStereotypes, setAssertInUnitTest, setComment, setStereotype, sizeOfConstraint, sizeOfStereotypes
 
Methods inherited from class de.uni_paderborn.fujaba.asg.ASGElement
acknowledgeChange, addAdditionalListener, addPointToUnparseInformation, addPropertyChangeListener, addPropertyChangeListener, addToAnnotations, addToDiagrams, addToElementReferences, addToElementReferences, addToFsaObjects, addToLocations, addToLocations, addToPropertyChangeListeners, addToPropertyChangeListeners, addToUnparseInformations, addToUnparseInformations, addToUserMessages, deleteTokens, elementsOfDiagrams, entriesOfElementReferences, entriesOfFsaObjects, entriesOfUnparseInformations, fireEvent, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getCoObRAId, getFirstFromFSAObjects, getFirstOOGenToken, getFromElementReferences, getFromFElementReferences, getFromFsaObjects, getFromUnparseInformations, getFSAInterface, getLastModified, getLastOOGenToken, getPointFromUnparseInformation, getPropertyChangeSupport, getRepository, getTransientElements, getUnparseModuleName, getUnparseModuleNameImpl, hasInAnnotations, hasInDiagrams, hasInElementReferences, hasInElementReferences, hasInFsaObjects, hasKeyInElementReferences, hasKeyInFsaObjects, initElementListener, initPersistency, isCoobraPersistent, isInspectableField, isInTransientMode, isPersistencyChange, isReadOnly, iteratorOfAnnotations, iteratorOfDiagrams, iteratorOfElementReferences, iteratorOfFsaObjects, iteratorOfKeyFromUnparseInformations, iteratorOfUnparseInformations, iteratorOfUserMessages, keysOfElementReferences, keysOfFsaObjects, keysOfUnparseInformations, proposeFieldValues, removeAdditionalListener, removeAllFromAnnotations, removeAllFromDiagrams, removeAllFromElementReferences, removeAllFromFsaObjects, removeAllFromUnparseInformations, removeAllFromUserMessages, removeFromAnnotations, removeFromDiagrams, removeFromElementReferences, removeFromElementReferences, removeFromFsaObjects, removeFromPropertyChangeListeners, removeFromPropertyChangeListeners, removeFromUnparseInformations, removeFromUnparseInformations, removeFromUnparseInformations, removeFromUserMessages, removeKeyFromElementReferences, removeKeyFromFsaObjects, removePropertyChangeListener, removePropertyChangeListener, saveFSAProperties, saveLocations, setCoObRAId, setCutCopyPasteParent, setFirstOOGenToken, setGenerated, setInTransientMode, setLastOOGenToken, setRepository, setUnparseModuleName, sizeOfAnnotations, sizeOfDiagrams, sizeOfElementReferences, sizeOfFsaObjects, sizeOfUserMessages, updateFSACollapsed, updateFSALocation, updateKeyInFsaObjects, writeAttributes
 
Methods inherited from class de.uni_paderborn.fujaba.basic.BasicIncrement
compareTo, getID, getUniqueID, getUniqueID, isGenerated, lessUniqueId, readAttributes, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, readFromStringTokenizer, resetClassInfos, resetFieldWriteMethods, setAttribValue, setAttribValue, setID, setUniqueId, writeClassToStringBuffer, writeClassToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer, writeToStringBuffer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.uni_paderborn.fujaba.metamodel.FIncrement
addToConstraints, addToStereotypes, entriesOfStereotypes, getFComment, getFromFStereotypes, hasInConstraints, hasInStereotypes, hasKeyInStereotypes, isAssertInUnitTest, iteratorOfConstraints, iteratorOfStereotypes, keysOfStereotypes, removeAllFromConstraints, removeAllFromStereotypes, removeFromConstraints, removeFromStereotypes, removeKeyFromStereotypes, setAssertInUnitTest, setComment, sizeOfStereotypes
 
Methods inherited from interface de.uni_paderborn.fujaba.metamodel.FElement
addToAnnotations, addToDiagrams, addToElementReferences, addToElementReferences, addToUserMessages, deleteTokens, entriesOfElementReferences, getFirstOOGenToken, getFromFElementReferences, getLastOOGenToken, hasInAnnotations, hasInDiagrams, hasInElementReferences, hasInElementReferences, hasKeyInElementReferences, isCoobraPersistent, isGenerated, iteratorOfAnnotations, iteratorOfDiagrams, iteratorOfElementReferences, iteratorOfUserMessages, keysOfElementReferences, removeAllFromAnnotations, removeAllFromDiagrams, removeAllFromElementReferences, removeAllFromUserMessages, removeFromAnnotations, removeFromDiagrams, removeFromElementReferences, removeFromElementReferences, removeFromUserMessages, removeKeyFromElementReferences, setCutCopyPasteParent, setFirstOOGenToken, setGenerated, setLastOOGenToken, sizeOfAnnotations, sizeOfDiagrams, sizeOfElementReferences, sizeOfUserMessages
 
Methods inherited from interface java.lang.Comparable
compareTo
 
Methods inherited from interface de.uni_paderborn.fujaba.basic.UniqueIdentifier
getID
 
Methods inherited from interface de.uni_paderborn.fujaba.fsa.unparse.LogicUnparseInterface
getFSAInterface, getUnparseModuleName
 
Methods inherited from interface de.upb.tools.pcs.PropertyChangeInterface
getPropertyChangeSupport
 
Methods inherited from interface de.upb.tools.pcs.PropertyChangeClient
addPropertyChangeListener, addPropertyChangeListener, removePropertyChangeListener, removePropertyChangeListener
 
Methods inherited from interface de.tu_bs.coobra.ObjectChangeAware
acknowledgeChange, getCoObRAId, getRepository, setCoObRAId, setRepository
 
Methods inherited from interface de.uni_kassel.prop.InspectionAware
isInspectableField, proposeFieldValues
 

Field Detail

DEFAULT_PACKAGE_NAME

public static final transient java.lang.String DEFAULT_PACKAGE_NAME
No comment provided by developer, please add a comment to improve documentation.

See Also:
Constant Field Values
Constructor Detail

UMLPackage

public UMLPackage()
Constructor for class UMLPackage


UMLPackage

public UMLPackage(boolean coobraPersistent)
Constructor for class UMLPackage

Parameters:
coobraPersistent - No description provided

UMLPackage

public UMLPackage(java.lang.String name)
Constructor for class UMLPackage

Parameters:
name - No description provided
Method Detail

createUnparseModuleName

protected java.lang.String createUnparseModuleName()
No comment provided by developer, please add a comment to improve documentation.

Overrides:
createUnparseModuleName in class ASGElement
Returns:
No description provided

findClass

public UMLClass findClass(java.lang.String name)
No comment provided by developer, please add a comment to improve documentation.

Parameters:
name - No description provided
Returns:
No description provided

searchID

public ASGElement searchID(java.lang.String id)
Searches the ASG tree for a given id

Overrides:
searchID in class ASGElement
Parameters:
id - The id to search for.
Returns:
The Element with the given id, null if not found.

getName

public java.lang.String getName()
Get the name attribute of the UMLPackage object

Specified by:
getName in interface FElement
Overrides:
getName in class ASGElement
Returns:
The name value

setName

public void setName(java.lang.String name)
Sets the name attribute of the UMLPackage object

Specified by:
setName in interface FElement
Overrides:
setName in class ASGElement
Parameters:
name - The new name value

getText

public java.lang.String getText()
Get the text attribute of the UMLPackage object

Specified by:
getText in interface FElement
Overrides:
getText in class ASGElement
Returns:
The text value

getFullPackageName

public java.lang.String getFullPackageName()
Specified by:
getFullPackageName in interface FPackage
Returns:
the full packagename of the this package, returns an empty string if this package is the default- or the rootpackage

getPackagePath

public java.lang.String getPackagePath()
Get the packagePath attribute of the UMLPackage object

Specified by:
getPackagePath in interface FPackage
Returns:
The packagePath value

hasInDeclares

public boolean hasInDeclares(FClass obj)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
hasInDeclares in interface FPackage
Parameters:
obj - No description provided
Returns:
No description provided

hasKeyInDeclares

public boolean hasKeyInDeclares(java.lang.String key)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
hasKeyInDeclares in interface FPackage
Parameters:
key - No description provided
Returns:
No description provided

iteratorOfDeclares

public java.util.Iterator iteratorOfDeclares()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
iteratorOfDeclares in interface FPackage
Returns:
No description provided

keysOfDeclares

public java.util.Iterator keysOfDeclares()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
keysOfDeclares in interface FPackage
Returns:
No description provided

entriesOfDeclares

public java.util.Iterator entriesOfDeclares()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
entriesOfDeclares in interface FPackage
Returns:
No description provided

sizeOfDeclares

public int sizeOfDeclares()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
sizeOfDeclares in interface FPackage
Returns:
No description provided

getFromDeclares

public UMLClass getFromDeclares(java.lang.String key)
Get the fromDeclares attribute of the UMLPackage object

Parameters:
key - No description provided
Returns:
The fromDeclares value

getFromFDeclares

public FClass getFromFDeclares(java.lang.String key)
Get the fromFDeclares attribute of the UMLPackage object

Specified by:
getFromFDeclares in interface FPackage
Parameters:
key - No description provided
Returns:
The fromFDeclares value

addToDeclares

public boolean addToDeclares(FClass obj)
Access method for an one to n association.

Specified by:
addToDeclares in interface FPackage
Parameters:
obj - The object added.
Returns:
No description provided

removeFromDeclares

public boolean removeFromDeclares(FClass obj)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeFromDeclares in interface FPackage
Parameters:
obj - No description provided
Returns:
No description provided

removeKeyFromDeclares

public boolean removeKeyFromDeclares(java.lang.String key)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeKeyFromDeclares in interface FPackage
Parameters:
key - No description provided
Returns:
No description provided

removeAllFromDeclares

public void removeAllFromDeclares()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeAllFromDeclares in interface FPackage

addToDeclares

protected void addToDeclares(KeyValuePair pair)
This method is needed only for loading FTreeMaps, don't use it in other cases.

Parameters:
pair - The object added.

hasInRevImportedPackages

public boolean hasInRevImportedPackages(UMLFile elem)
No comment provided by developer, please add a comment to improve documentation.

Parameters:
elem - No description provided
Returns:
No description provided

elementsOfRevImportedPackages

public java.util.Enumeration elementsOfRevImportedPackages()
No comment provided by developer, please add a comment to improve documentation.

Returns:
No description provided

iteratorOfRevImportedPackages

public java.util.Iterator iteratorOfRevImportedPackages()
No comment provided by developer, please add a comment to improve documentation.

Returns:
No description provided

addToRevImportedPackages

public void addToRevImportedPackages(UMLFile elem)
Access method for an one to n association.

Parameters:
elem - The object added.

removeFromRevImportedPackages

public void removeFromRevImportedPackages(UMLFile elem)
No comment provided by developer, please add a comment to improve documentation.

Parameters:
elem - No description provided

removeAllFromRevImportedPackages

public void removeAllFromRevImportedPackages()
No comment provided by developer, please add a comment to improve documentation.


hasInPackages

public boolean hasInPackages(FPackage obj)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
hasInPackages in interface FPackage
Parameters:
obj - No description provided
Returns:
No description provided

hasKeyInPackages

public boolean hasKeyInPackages(java.lang.String key)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
hasKeyInPackages in interface FPackage
Parameters:
key - No description provided
Returns:
No description provided

iteratorOfPackages

public java.util.Iterator iteratorOfPackages()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
iteratorOfPackages in interface FPackage
Returns:
No description provided

keysOfPackages

public java.util.Iterator keysOfPackages()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
keysOfPackages in interface FPackage
Returns:
No description provided

entriesOfPackages

public java.util.Iterator entriesOfPackages()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
entriesOfPackages in interface FPackage
Returns:
No description provided

sizeOfPackages

public int sizeOfPackages()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
sizeOfPackages in interface FPackage
Returns:
No description provided

getFromPackages

public UMLPackage getFromPackages(java.lang.String key)
Get the fromPackages attribute of the UMLPackage object

Parameters:
key - No description provided
Returns:
The fromPackages value

getFromFPackages

public FPackage getFromFPackages(java.lang.String key)
Get the fromFPackages attribute of the UMLPackage object

Specified by:
getFromFPackages in interface FPackage
Parameters:
key - No description provided
Returns:
The fromFPackages value

addToPackages

public boolean addToPackages(FPackage obj)
Access method for an one to n association.

Specified by:
addToPackages in interface FPackage
Parameters:
obj - The object added.
Returns:
No description provided

removeFromPackages

public boolean removeFromPackages(FPackage obj)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeFromPackages in interface FPackage
Parameters:
obj - No description provided
Returns:
No description provided

removeKeyFromPackages

public boolean removeKeyFromPackages(java.lang.String key)
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeKeyFromPackages in interface FPackage
Parameters:
key - No description provided
Returns:
No description provided

removeAllFromPackages

public void removeAllFromPackages()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
removeAllFromPackages in interface FPackage

addToPackages

protected void addToPackages(KeyValuePair pair)
This method is needed only for loading FTreeMaps, Don't use it in other cases.

Parameters:
pair - The object added.

setParent

public boolean setParent(FPackage obj)
Sets the parent attribute of the UMLPackage object

Specified by:
setParent in interface FPackage
Parameters:
obj - The new parent value
Returns:
No description provided

getParent

public UMLPackage getParent()
Get the parent attribute of the UMLPackage object

Returns:
The parent value

getFParent

public FPackage getFParent()
Get the fParent attribute of the UMLPackage object

Specified by:
getFParent in interface FPackage
Returns:
The fParent value

hasParent

public boolean hasParent()
No comment provided by developer, please add a comment to improve documentation.

Specified by:
hasParent in interface FPackage
Returns:
No description provided

elementsOfAllChildren

public java.util.Enumeration elementsOfAllChildren()
Use this function to get all children of a package (all classes and all packages).

Overrides:
elementsOfAllChildren in class UMLIncrement
Returns:
No description provided

readAttributes

public void readAttributes(java.util.Hashtable objects,
                           de.upb.tools.fca.FDuplicatedTreeMap attributes)
No comment provided by developer, please add a comment to improve documentation.

Overrides:
readAttributes in class BasicIncrement
Parameters:
objects - No description provided
attributes - No description provided
See Also:
BasicIncrement.readAttributes(Hashtable, FDuplicatedTreeMap, boolean)

toString

public java.lang.String toString()
No comment provided by developer, please add a comment to improve documentation.

Returns:
No description provided

removeYou

public void removeYou()
Isolates the object so the garbage collector can remove it.

Specified by:
removeYou in interface FElement
Overrides:
removeYou in class UMLIncrement

getParentElement

public FElement getParentElement()
Query the logical parent of this element (e.g. package of a class, diagram of an object).

Specified by:
getParentElement in interface FElement
Overrides:
getParentElement in class ASGElement
Returns:
the logical parent of this element, may not return null unless this is the top level node (project)