org.argouml.kernel
Class Project

java.lang.Object
  |
  +--org.argouml.kernel.Project
All Implemented Interfaces:
java.io.Serializable

public class Project
extends java.lang.Object
implements java.io.Serializable

A datastructure that represents the designer's current project. A Project consists of diagrams and UML models.

See Also:
Serialized Form

Field Summary
 java.lang.String _authorname
           
 GenerationPreferences _cgPrefs
           
protected  ru.novosoft.uml.foundation.core.MNamespace _currentNamespace
           
protected  ru.novosoft.uml.model_management.MModel _defaultModel
           
 java.lang.String _description
           
 java.util.Vector _diagrams
           
 java.lang.String _historyFile
           
 java.util.Vector _members
           
 java.util.Vector _models
           
 boolean _needsSave
           
protected  ChangeRegistry _saveRegistry
           
 java.util.Vector _searchpath
           
 java.util.HashMap _UUIDRefs
           
 java.lang.String _version
           
 java.beans.VetoableChangeSupport _vetoSupport
           
static java.lang.String ARGO_TEE
           
protected static org.apache.log4j.Category cat
           
static java.lang.String COMPRESSED_FILE_EXT
           
protected static org.tigris.gef.ocl.OCLExpander expander
           
static java.lang.String PROJECT_FILE_EXT
           
static java.lang.String SEPARATOR
           
static java.lang.String TEMPLATES
           
static java.lang.String UNCOMPRESSED_FILE_EXT
           
static java.lang.String UNTITLED_FILE
           
 
Constructor Summary
Project()
           
Project(java.io.File file)
           
Project(ru.novosoft.uml.model_management.MModel model)
           
Project(java.net.URL url)
           
 
Method Summary
 void addDiagram(ArgoDiagram d)
           
 void addMember(ArgoDiagram d)
           
 void addMember(ru.novosoft.uml.model_management.MModel m)
           
 void addMember(ProjectMemberTodoList pm)
           
 void addMember(java.lang.String name, java.lang.String type)
           
 void addModel(ru.novosoft.uml.foundation.core.MNamespace m)
           
 void addSearchPath(java.lang.String searchpath)
           
static void addStat(java.util.Vector stats, java.lang.String name, int value)
           
 java.util.Collection findFigsForMember(java.lang.Object member)
          Finds all figs on the diagrams for some project member, including the figs containing the member (so for some operation, the containing figclass is returned).
 ProjectMember findMemberByName(java.lang.String name)
           
 java.net.URL findMemberURLInSearchPath(java.lang.String name)
           
 ru.novosoft.uml.foundation.core.MClassifier findType(java.lang.String s)
          Searches for a type/classifier with name s.
 ru.novosoft.uml.foundation.core.MClassifier findType(java.lang.String s, boolean defineNew)
          Searches for a type/classifier with name s.
 ru.novosoft.uml.foundation.core.MClassifier findTypeInModel(java.lang.String s, ru.novosoft.uml.foundation.core.MNamespace ns)
          Will only return first classifier with the matching name
 java.lang.String getAuthorname()
           
 java.lang.String getBaseName()
          Added Eugenio's patches to load 0.8.1 projects.
 ru.novosoft.uml.foundation.core.MNamespace getCurrentNamespace()
           
 ru.novosoft.uml.model_management.MModel getDefaultModel()
           
 java.lang.String getDescription()
           
 java.util.Vector getDiagrams()
           
 GenerationPreferences getGenerationPrefs()
           
 java.lang.String getHistoryFile()
           
 java.lang.Object getInitialTarget()
           
 java.util.Vector getMembers()
           
 ru.novosoft.uml.foundation.core.MNamespace getModel()
           
 java.util.Collection getModels()
          Returns all models, including the default model (default.xmi).
 java.lang.String getName()
           
 int getPresentationCountFor(ru.novosoft.uml.foundation.core.MModelElement me)
           
 ru.novosoft.uml.model_management.MModel getRoot()
          Returns the root.
 java.util.Vector getSearchPath()
           
static java.util.Vector getStats()
           
 java.net.URL getURL()
           
 java.util.Vector getUserDefinedModels()
          Returns all models defined by the user.
 java.lang.String getVersion()
           
 java.beans.VetoableChangeSupport getVetoSupport()
           
 boolean isInTrash(java.lang.Object dm)
           
 boolean isValidDiagramName(java.lang.String name)
          Returns true if the given name is a valid name for a diagram.
static Project load(java.net.URL url)
           
 void loadAllMembers()
           
 void loadMembersOfType(java.lang.String type)
           
 ru.novosoft.uml.model_management.MModel loadModelFromXMI(java.net.URL url)
          Loads a model (XMI only) from a .zargo file.
static Project loadProject(java.net.URL url)
          This method creates a project from the specified URL Unlike the constructor which forces an .argo extension This method will attempt to load a raw XMI file This method can fail in several different ways.
 void loadZippedProjectMembers(java.net.URL url)
          Loads all the members from a zipped input stream.
 void makeUntitledProject()
          Makes a just created project to an untitled project with a class diagram and a usecase diagram and an untitled model.
 void moveFromTrash(java.lang.Object obj)
           
 void moveToTrash(java.lang.Object obj)
          Moves some object to trash.
 boolean needsSave()
           
 void postLoad()
           
 void postSave()
           
 void preSave()
           
protected  void removeDiagram(ArgoDiagram d)
          Removes a diagram from the list with diagrams.
protected  void removeProjectMemberDiagram(ArgoDiagram d)
          Removes a project member diagram completely from the project.
static void resetStats()
           
 void save(boolean overwrite, java.io.File file)
          There are known issues with saving, particularly losing the xmi at save time. see issue http://argouml.tigris.org/issues/show_bug.cgi?
 void setAuthorname(java.lang.String s)
           
 void setCurrentNamespace(ru.novosoft.uml.foundation.core.MNamespace m)
           
static void setCurrentProject(Project currentProject)
          Sets the currentProject.
 void setDefaultModel(ru.novosoft.uml.model_management.MModel defaultModel)
           
 void setDescription(java.lang.String s)
           
 void setFile(java.io.File file)
           
 void setGenerationPrefs(GenerationPreferences cgp)
           
 void setHistoryFile(java.lang.String s)
           
 void setName(java.lang.String n)
           
 void setNeedsSave(boolean newValue)
           
 void setRoot(ru.novosoft.uml.model_management.MModel root)
          Sets the root.
static void setStat(java.lang.String n, int v)
           
 void setURL(java.net.URL url)
           
 void setVersion(java.lang.String s)
           
protected  void trashInternal(java.lang.Object obj)
          Removes some object from the project.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SEPARATOR

public static final java.lang.String SEPARATOR

COMPRESSED_FILE_EXT

public static final java.lang.String COMPRESSED_FILE_EXT

UNCOMPRESSED_FILE_EXT

public static final java.lang.String UNCOMPRESSED_FILE_EXT

PROJECT_FILE_EXT

public static final java.lang.String PROJECT_FILE_EXT

TEMPLATES

public static final java.lang.String TEMPLATES

ARGO_TEE

public static java.lang.String ARGO_TEE

UNTITLED_FILE

public static final java.lang.String UNTITLED_FILE

expander

protected static org.tigris.gef.ocl.OCLExpander expander

_saveRegistry

protected ChangeRegistry _saveRegistry

_authorname

public java.lang.String _authorname

_description

public java.lang.String _description

_version

public java.lang.String _version

_searchpath

public java.util.Vector _searchpath

_members

public java.util.Vector _members

_historyFile

public java.lang.String _historyFile

_models

public java.util.Vector _models

_diagrams

public java.util.Vector _diagrams

_defaultModel

protected ru.novosoft.uml.model_management.MModel _defaultModel

_needsSave

public boolean _needsSave

_currentNamespace

protected ru.novosoft.uml.foundation.core.MNamespace _currentNamespace

_UUIDRefs

public java.util.HashMap _UUIDRefs

_cgPrefs

public GenerationPreferences _cgPrefs

_vetoSupport

public transient java.beans.VetoableChangeSupport _vetoSupport

cat

protected static org.apache.log4j.Category cat
Constructor Detail

Project

public Project(java.io.File file)
        throws java.net.MalformedURLException,
               java.io.IOException

Project

public Project(java.net.URL url)

Project

public Project()

Project

public Project(ru.novosoft.uml.model_management.MModel model)
Method Detail

makeUntitledProject

public void makeUntitledProject()
Makes a just created project to an untitled project with a class diagram and a usecase diagram and an untitled model.

loadProject

public static Project loadProject(java.net.URL url)
                           throws java.io.IOException,
                                  java.lang.Exception
This method creates a project from the specified URL Unlike the constructor which forces an .argo extension This method will attempt to load a raw XMI file

This method can fail in several different ways. Either by throwing an exception or by having the ArgoParser.SINGLETON.getLastLoadStatus() set to not true.

TODO: This method NEEDS a refactoring.


loadModelFromXMI

public ru.novosoft.uml.model_management.MModel loadModelFromXMI(java.net.URL url)
                                                         throws java.io.IOException
Loads a model (XMI only) from a .zargo file. BE ADVISED this method has a side effect. It sets _UUIDREFS to the model.

If there is a problem with the xmi file, an error is set in the ArgoParser.SINGLETON.getLastLoadStatus() field. This needs to be examined by the calling function.

Parameters:
url - The url with the .zargo file
Returns:
MModel The model loaded
Throws:
java.io.IOException - Thrown if the model or the .zargo file itself is corrupted in any way.

loadZippedProjectMembers

public void loadZippedProjectMembers(java.net.URL url)
                              throws java.io.IOException,
                                     java.beans.PropertyVetoException
Loads all the members from a zipped input stream.
Throws:
java.io.IOException - if there is something wrong with the zipped archive or with the model.
java.beans.PropertyVetoException - if the adding of a diagram is vetoed.

getBaseName

public java.lang.String getBaseName()
Added Eugenio's patches to load 0.8.1 projects.

getName

public java.lang.String getName()

setName

public void setName(java.lang.String n)
             throws java.beans.PropertyVetoException,
                    java.net.MalformedURLException

getURL

public java.net.URL getURL()

setURL

public void setURL(java.net.URL url)

setFile

public void setFile(java.io.File file)

getSearchPath

public java.util.Vector getSearchPath()

addSearchPath

public void addSearchPath(java.lang.String searchpath)

findMemberURLInSearchPath

public java.net.URL findMemberURLInSearchPath(java.lang.String name)

getMembers

public java.util.Vector getMembers()

addMember

public void addMember(java.lang.String name,
                      java.lang.String type)

addMember

public void addMember(ArgoDiagram d)

addMember

public void addMember(ProjectMemberTodoList pm)

addMember

public void addMember(ru.novosoft.uml.model_management.MModel m)

addModel

public void addModel(ru.novosoft.uml.foundation.core.MNamespace m)

removeProjectMemberDiagram

protected void removeProjectMemberDiagram(ArgoDiagram d)
Removes a project member diagram completely from the project.
Parameters:
d -  

findMemberByName

public ProjectMember findMemberByName(java.lang.String name)

load

public static Project load(java.net.URL url)
                    throws java.io.IOException,
                           org.xml.sax.SAXException

loadMembersOfType

public void loadMembersOfType(java.lang.String type)

loadAllMembers

public void loadAllMembers()

save

public void save(boolean overwrite,
                 java.io.File file)
          throws java.io.IOException,
                 java.lang.Exception
There are known issues with saving, particularly losing the xmi at save time. see issue http://argouml.tigris.org/issues/show_bug.cgi?id=410 It is also being considered to save out individual xmi's from individuals diagrams to make it easier to modularize the output of Argo.

getAuthorname

public java.lang.String getAuthorname()

setAuthorname

public void setAuthorname(java.lang.String s)

getVersion

public java.lang.String getVersion()

setVersion

public void setVersion(java.lang.String s)

getDescription

public java.lang.String getDescription()

setDescription

public void setDescription(java.lang.String s)

getHistoryFile

public java.lang.String getHistoryFile()

setHistoryFile

public void setHistoryFile(java.lang.String s)

setNeedsSave

public void setNeedsSave(boolean newValue)

needsSave

public boolean needsSave()

getUserDefinedModels

public java.util.Vector getUserDefinedModels()
Returns all models defined by the user. I.e. this does not return the default model but all other models.
Returns:
Vector

getModels

public java.util.Collection getModels()
Returns all models, including the default model (default.xmi).
Returns:
Collection

getModel

public ru.novosoft.uml.foundation.core.MNamespace getModel()

findType

public ru.novosoft.uml.foundation.core.MClassifier findType(java.lang.String s)
Searches for a type/classifier with name s. If the type is not found, a new type is created and added to the current namespace.
Parameters:
s -  
Returns:
MClassifier

findType

public ru.novosoft.uml.foundation.core.MClassifier findType(java.lang.String s,
                                                            boolean defineNew)
Searches for a type/classifier with name s. If defineNew is true, a new type is defined if the type/classifier is not found. The newly created type is added to the currentNamespace and given the name s.
Parameters:
s -  
defineNew -  
Returns:
MClassifier

findFigsForMember

public java.util.Collection findFigsForMember(java.lang.Object member)
Finds all figs on the diagrams for some project member, including the figs containing the member (so for some operation, the containing figclass is returned).
Parameters:
member - The member we are looking for. This can be a NSUML object but also another object.
Returns:
Collection The collection with the figs.

findTypeInModel

public ru.novosoft.uml.foundation.core.MClassifier findTypeInModel(java.lang.String s,
                                                                   ru.novosoft.uml.foundation.core.MNamespace ns)
Will only return first classifier with the matching name
Parameters:
s - is short name

setCurrentNamespace

public void setCurrentNamespace(ru.novosoft.uml.foundation.core.MNamespace m)

getCurrentNamespace

public ru.novosoft.uml.foundation.core.MNamespace getCurrentNamespace()

getDiagrams

public java.util.Vector getDiagrams()

addDiagram

public void addDiagram(ArgoDiagram d)

removeDiagram

protected void removeDiagram(ArgoDiagram d)
Removes a diagram from the list with diagrams. Removes (hopefully) the event listeners for this diagram. Does not remove the diagram from the project members. This should not be called directly. Use moveToTrash if you want to remove a diagram.
Parameters:
d -  

getPresentationCountFor

public int getPresentationCountFor(ru.novosoft.uml.foundation.core.MModelElement me)

getInitialTarget

public java.lang.Object getInitialTarget()

setGenerationPrefs

public void setGenerationPrefs(GenerationPreferences cgp)

getGenerationPrefs

public GenerationPreferences getGenerationPrefs()

getVetoSupport

public java.beans.VetoableChangeSupport getVetoSupport()

preSave

public void preSave()

postSave

public void postSave()

postLoad

public void postLoad()

moveToTrash

public void moveToTrash(java.lang.Object obj)
Moves some object to trash. This mechanisme must be rethought since it only deletes an object completely from the project
Parameters:
obj - The object to be deleted
See Also:
trashInternal(java.lang.Object)

trashInternal

protected void trashInternal(java.lang.Object obj)
Removes some object from the project. Does not update GUI since this method only handles project management.
Parameters:
obj -  

moveFromTrash

public void moveFromTrash(java.lang.Object obj)

isInTrash

public boolean isInTrash(java.lang.Object dm)

resetStats

public static void resetStats()

setStat

public static void setStat(java.lang.String n,
                           int v)

getStats

public static java.util.Vector getStats()

addStat

public static void addStat(java.util.Vector stats,
                           java.lang.String name,
                           int value)

setDefaultModel

public void setDefaultModel(ru.novosoft.uml.model_management.MModel defaultModel)

getDefaultModel

public ru.novosoft.uml.model_management.MModel getDefaultModel()

setCurrentProject

public static void setCurrentProject(Project currentProject)
Sets the currentProject.
Parameters:
currentProject - The currentProject to set

getRoot

public ru.novosoft.uml.model_management.MModel getRoot()
Returns the root.
Returns:
MModel

setRoot

public void setRoot(ru.novosoft.uml.model_management.MModel root)
Sets the root.
Parameters:
root - The root to set

isValidDiagramName

public boolean isValidDiagramName(java.lang.String name)
Returns true if the given name is a valid name for a diagram. Valid means that it does not occur as a name for a diagram yet.
Parameters:
name - The name to test
Returns:
boolean True if there are no problems with this name, false if it's not valid.


ArgoUML (c) 1996-2002
ArgoUML Project Home
ArgoUML Cookbook