com.uppaal.model.core2
Class Document

java.lang.Object
  extended by com.uppaal.model.core2.Element
      extended by com.uppaal.model.core2.Node
          extended by com.uppaal.model.core2.Document
All Implemented Interfaces:
Serializable, Cloneable

public class Document
extends Node

Model for a network of timed automata as defined in UPPAAL. The document object is the root of a tree containing templates, locations and edges.

This class supports the command pattern: It can execute classes implementing the Command interface. It also supports unlimited undo/redo. When using the command interface, each change will increment a version counter. Notice that the version counter is not incremented if the document tree is modified directly.

UPPAAL timed automata model document can be loaded from a file or Internet by using a PrototypeDocument.load() method:

 Document doc = new PrototypeDocument().load(url);
 

The following code demonstrates how to create a document from scratch with default properties (colors and so on) without using editor Commands:

 PrototypeDocument prototype = new PrototypeDocument();
 Document doc = new Document(prototype);
 doc.setProperty("declarations", "clock x;"); // shared global clock x
 
Then a template can be created and manipulated as follows:
 Template t = doc.createTemplate(); // new TA template with defaults
 doc.insert(t, null).setProperty("name", "Template"); // insert and set the name
 t.setProperty("declarations", "clock y;"); // create local clock y
 
The timed automata elements can be created like-wise:
 Location l0 = t.createLocation(); // create a location
 t.insert(l0, null).setProperty("name", "L0"); // insert and name it
 l0.setProperty("x", 0); // set the graphical position x
 l0.setProperty("y", 0); // set the graphical position y
 l0.setFlag("urgent", true); // make the location urgent
 
 Location l1 = t.createLocation();
 t.insert(l1, l0).setProperty("name", "L1");
 l1.setProperty("x", 200);
 l1.setProperty("y",   0);
 
 Edge e = t.createEdge(); // create an edge
 t.insert(e, l1); // insert it after location l1 (can be null)
 e.setSource(l0); // set the origin
 e.setTarget(l1); // set the destination
 e.setProperty("assignment", "x = 0, y = 0"); // add some assignments
 
Finally a system declaration should be added:
 doc.setProperty("system", 
      "Process = Template();\n"+
      "system Process;");
 
Then the model can be saved into an XML file:
 try {
      doc.save("sampledoc.xml");
 } catch (IOException e) {
      e.printStackTrace(System.err);
 }
 
For further examples, visit Engine on how to compile and interact with simulator and verifier.

See Also:
Template, Location, Edge, Element, Property, Serialized Form

Field Summary
protected  LinkedList<CommandListener> cmdListeners
          Command listeners
protected  LinkedList<Command> redoList
          Commands on the redo stack.
protected  LinkedList<Command> undoList
          Commands on the undo stack.
protected  int version
          The version increases with every command executed.
 
Fields inherited from class com.uppaal.model.core2.Node
first, next, previous
 
Fields inherited from class com.uppaal.model.core2.Element
listeners, properties, prototype
 
Constructor Summary
Document()
          Constructor without a prototype.
Document(Element prototype)
          Constructor using the given prototype.
 
Method Summary
 void accept(Visitor visitor)
          Accept a visitor.
 void addCommandListener(CommandListener listener)
          adds editing command listener
 boolean canRedo()
           
 boolean canUndo()
           
 LscTemplate createLscTemplate()
          Creates a new stand-alone LSC template using a LSC prototype from the document.
 Template createTemplate()
          Creates a new stand-alone TA template using a template prototype from the document.
 void execute(Command... commands)
           
 void execute(Command command)
          Execute a command.
 Document getDocument()
          Returns the document of this element.
 AbstractTemplate getLastTATemplate()
          Returns the last TA template or null if no such template exists.
 AbstractTemplate getTemplate(String name)
          Returns the first template with the given name or null if no such template exists.
 AbstractTemplate getTemplates()
          Returns the first template of the document.
 int getVersion()
          Returns the current version number of the document.
static boolean merge(AbstractTemplate source, AbstractTemplate target)
          Merges the source template into target (useful for pasting from clipboard).
 void redo()
          Redo last undone command.
 void removeCommandListener(CommandListener listener)
          removes editing command listener
 Element resolveXPath(String path)
           
 void save(File file)
           
 void save(String filename)
           
 void undo()
          Undo last command.
 
Methods inherited from class com.uppaal.model.core2.Node
clone, getFirst, getLast, getNext, getPrevious, insert, move, remove, setPrototype
 
Methods inherited from class com.uppaal.model.core2.Element
acceptSafe, addListener, getColor, getLocalProperty, getParent, getProperties, getProperty, getPropertyValue, getPrototype, getPrototypeFromParent, getTemplate, getX, getY, hasFlag, importInto, isPropertyLocal, removeListener, setProperties, setProperty, setPropertyFromPath
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

version

protected int version
The version increases with every command executed.


undoList

protected LinkedList<Command> undoList
Commands on the undo stack.


redoList

protected LinkedList<Command> redoList
Commands on the redo stack.


cmdListeners

protected LinkedList<CommandListener> cmdListeners
Command listeners

Constructor Detail

Document

public Document()
Constructor without a prototype.


Document

public Document(Element prototype)
Constructor using the given prototype.

Method Detail

execute

public void execute(Command command)
Execute a command. Increases the version number.


execute

public void execute(Command... commands)

undo

public void undo()
          throws CannotUndoException
Undo last command. Decreases the version number.

Throws:
CannotUndoException

canUndo

public boolean canUndo()

redo

public void redo()
          throws CannotRedoException
Redo last undone command. Increases the version number.

Throws:
CannotRedoException

canRedo

public boolean canRedo()

addCommandListener

public void addCommandListener(CommandListener listener)
adds editing command listener


removeCommandListener

public void removeCommandListener(CommandListener listener)
removes editing command listener


getVersion

public int getVersion()
Returns the current version number of the document. The version number is incremented with every command.


createTemplate

public Template createTemplate()
Creates a new stand-alone TA template using a template prototype from the document. The new template is not added to the document tree!


createLscTemplate

public LscTemplate createLscTemplate()
Creates a new stand-alone LSC template using a LSC prototype from the document. The new template is not added to the document tree!


getTemplates

public AbstractTemplate getTemplates()
Returns the first template of the document. This is the same as calling getFirst() and type casting the result to a Template.


getTemplate

public AbstractTemplate getTemplate(String name)
Returns the first template with the given name or null if no such template exists.


getLastTATemplate

public AbstractTemplate getLastTATemplate()
Returns the last TA template or null if no such template exists.


accept

public void accept(Visitor visitor)
            throws Exception
Description copied from class: Element
Accept a visitor. This method is specialised in every subclass. Part of the visitor pattern.

Overrides:
accept in class Node
Throws:
Exception

getDocument

public Document getDocument()
Description copied from class: Element
Returns the document of this element.

Overrides:
getDocument in class Element

resolveXPath

public Element resolveXPath(String path)

save

public void save(String filename)
          throws IOException
Throws:
IOException

save

public void save(File file)
          throws IOException
Throws:
IOException

merge

public static boolean merge(AbstractTemplate source,
                            AbstractTemplate target)
Merges the source template into target (useful for pasting from clipboard). The source template gets emptied without a notice. The new elements are placed to the right of existing elements.



Copyright © 2012 Uppsala University and Aalborg University. All Rights Reserved.