Java Doc for ExperimentBase.java in  » Science » Cougaar12_4 » org » cougaar » tools » csmart » experiment » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Science » Cougaar12_4 » org.cougaar.tools.csmart.experiment 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.cougaar.tools.csmart.core.property.ConfigurableComponent
      org.cougaar.tools.csmart.core.property.ModifiableConfigurableComponent
         org.cougaar.tools.csmart.experiment.ExperimentBase

All known Subclasses:   org.cougaar.tools.csmart.experiment.DBExperiment,  org.cougaar.tools.csmart.experiment.XMLExperiment,
ExperimentBase
abstract public class ExperimentBase extends ModifiableConfigurableComponent implements Experiment(Code)
org.cougaar.tools.csmart.experiment

Inner Class :final class MyModificationListener implements ModificationListener,ConfigurableComponentListener

Field Summary
 ComponentDatacompleteSociety
    
transient  LeafOnlyConfigWriterconfigWriter
    
 ReadOnlyPropertiesdefaultNodeArguments
    
transient  Loggerlog
    
 booleanmodified
    
final  Listrecipes
    

Constructor Summary
public  ExperimentBase(String name)
    
public  ExperimentBase(String name, String expID, String trialID)
    

Method Summary
final public  voidaddComponent(ModifiableComponent comp)
     Adds a new component to this experiment.
final public  HostComponentaddHost(String name)
     Adds the Given Host to the Experiment If the given host already exists, an exception is thrown.
final public  NodeComponentaddNode(String name)
     Adds a new node to this experiment.
final  voidaddNodeComponent(ExperimentNode node)
    
final public  voidaddRecipeComponent(RecipeComponent recipe)
    
final public  voidaddSocietyComponent(SocietyComponent sc)
     Adds a societyComponent to this Experiment.
final public  booleanagentNameUnique(String name)
    
final  booleanaskComponentsToAddCDATA()
    
final  voidcreateConfigWriter()
    
final public  voidcreateDefaultConfiguration()
     Blindly assume the experiment has no hosts or nodes yet.
final  voidcreateLogger()
    
final  voidcreateObserver()
    
final public  voidexperimentStopped()
     Notify listeners that experiment was terminated.
final public  voidfireModification()
    
final  voidgenerateHNACDATA()
    
final public  AgentComponent[]getAgents()
    
final public  ListgetAgentsList()
    
final public  StringgetCommAsbID()
    
final public  intgetComponentCount()
     Returns the total number of Components (Recipe and Society) in this experiment.
final public  ListgetComponents()
     Get all the recipes and the society.
final public  ModifiableComponent[]getComponentsAsArray()
    
final public  PropertiesgetDefaultNodeArguments()
    
final public  URLgetDescription()
     Get the URL of the file that describes this experiment.
final public  StringgetExperimentID()
    
final public  StringgetExperimentName()
    
final public  HostComponent[]getHostComponents()
     Get the Hosts in this experiment.
final public  HostComponent[]getHostComponentsNoReconcile()
    
final public  NodeComponent[]getNodeComponents()
     Get the Nodes in this Experiment.
final public  RecipeComponentgetRecipeComponent(int i)
     Gets a specific recipe based on Index.
final public  intgetRecipeComponentCount()
     Returns the total number of recipes in this experiment.
final public  RecipeComponent[]getRecipeComponents()
     Gets all RecipeComponents for this experiment.
final public  FilegetResultDirectory()
    
final public  SocietyComponentgetSocietyComponent()
    
final public  intgetSocietyComponentCount()
     Returns the total number of Societies in this experiment.
final public  StringgetTrialID()
    
final public  booleanhasConfiguration()
     If the experiment has at least one host with at least one node with at least one agent, that is a configuration.
final public  voidimportHNA(Component parent)
     Imports a HNA XML file.
final public  voidinitProperties()
    
final public  booleanisEditInProgress()
     Return whether or not experiment is being edited.
final public  booleanisModified()
     Returns whether or not this experiment has been modified since it was saved to the database.
final public  booleanisRunInProgress()
     Return whether or not experiment is being run.
final public  booleanisRunnable()
     Return whether or not experiment is runnable.
final public  voidremoveComponent(ModifiableComponent comp)
     Removes the given component from the Experiment.
final public  voidremoveHost(HostComponent hostComponent)
     Removes the given host from the experiment.
final public  voidremoveNode(NodeComponent nc)
    
final public  voidremoveRecipeComponent(RecipeComponent recipe)
     Removes the specified RecipeComponent.
final public  voidremoveSocietyComponent()
    
final public  voidrenameHost(HostComponent hostComponent, String name)
     Renames a host in the Experiment.
final public  voidrenameNode(NodeComponent nc, String name)
     Renames a currently existing Node in this Experiment.
final public  voidresetModified()
     Indicate that the experiment is up-to-date with respect to the database.
abstract public  voidsave(DBConflictHandler ch)
    
final public  voidsetCommAsbID(String id)
    
abstract protected  voidsetDefaultNodeArguments()
    
final public  voidsetEditInProgress(boolean newEditInProgress)
     Set edit in progress.
final public  voidsetExperimentID(String expID)
     Sets the Experiment ID for this Experiment.
final public  voidsetRecipeComponents(RecipeComponent[] newRecipes)
     Adds an array of RecipeComponents to this experiment.
final public  voidsetResultDirectory(File resultDirectory)
    
final public  voidsetRunInProgress(boolean newRunInProgress)
     Set run in progress.
final  voidsetSocietyComponent(SocietyComponent society)
    
final  voidsetTrialID(String trialID)
     Sets the current Trial ID.
final public  voidstop()
     Stop after the current trial.
final public  StringtoString()
    
final public  voidupdateNameServerHostName()
     Insure that we have a valid nameserver specification.
final public  voidwriteContents(String filename, OutputStream out)
    

Field Detail
completeSociety
ComponentData completeSociety(Code)



configWriter
transient LeafOnlyConfigWriter configWriter(Code)



defaultNodeArguments
ReadOnlyProperties defaultNodeArguments(Code)



log
transient Logger log(Code)



modified
boolean modified(Code)



recipes
final List recipes(Code)




Constructor Detail
ExperimentBase
public ExperimentBase(String name)(Code)



ExperimentBase
public ExperimentBase(String name, String expID, String trialID)(Code)




Method Detail
addComponent
final public void addComponent(ModifiableComponent comp) throws IllegalArgumentException(Code)
Adds a new component to this experiment. Currently only two Component Types are accepted:
SocietyComponent
RecipeComponent
Parameters:
  comp -
exception:
  java.lang.IllegalArgumentException - if an error occurs



addHost
final public HostComponent addHost(String name) throws IllegalArgumentException(Code)
Adds the Given Host to the Experiment If the given host already exists, an exception is thrown.
Parameters:
  name - - Name of the new Host a HostComponent for this host.
exception:
  java.lang.IllegalArgumentException - if an error occurs



addNode
final public NodeComponent addNode(String name) throws IllegalArgumentException(Code)
Adds a new node to this experiment. If the node currently exists, an exception is thrown.
Parameters:
  name - - Name of new Node a NodeComponent value
exception:
  java.lang.IllegalArgumentException - if an error occurs



addNodeComponent
final void addNodeComponent(ExperimentNode node)(Code)



addRecipeComponent
final public void addRecipeComponent(RecipeComponent recipe) throws IllegalArgumentException(Code)
Adds a RecipeComponent to this Experiment
Parameters:
  recipe - - RecipeComponent to add to Experiment



addSocietyComponent
final public void addSocietyComponent(SocietyComponent sc) throws IllegalArgumentException(Code)
Adds a societyComponent to this Experiment.
Parameters:
  sc -
exception:
  java.lang.IllegalArgumentException - if an error occurs



agentNameUnique
final public boolean agentNameUnique(String name)(Code)



askComponentsToAddCDATA
final boolean askComponentsToAddCDATA()(Code)



createConfigWriter
final void createConfigWriter()(Code)
An Experiment now has a configuration writer that lets all the components write themselves out



createDefaultConfiguration
final public void createDefaultConfiguration()(Code)
Blindly assume the experiment has no hosts or nodes yet. Create a host for the local host, a Node named Node0, and put all the agents on that node on that host.



createLogger
final void createLogger()(Code)



createObserver
final void createObserver()(Code)



experimentStopped
final public void experimentStopped()(Code)
Notify listeners that experiment was terminated.



fireModification
final public void fireModification()(Code)



generateHNACDATA
final void generateHNACDATA()(Code)



getAgents
final public AgentComponent[] getAgents()(Code)



getAgentsList
final public List getAgentsList()(Code)



getCommAsbID
final public String getCommAsbID()(Code)
get the local variable idea of the community assembly for this experiment, possibly null



getComponentCount
final public int getComponentCount()(Code)
Returns the total number of Components (Recipe and Society) in this experiment. an int value



getComponents
final public List getComponents()(Code)
Get all the recipes and the society. List list of all the components in the experiment



getComponentsAsArray
final public ModifiableComponent[] getComponentsAsArray()(Code)
a ModifiableConfigurableComponent[] array ofall the components in the experiment



getDefaultNodeArguments
final public Properties getDefaultNodeArguments()(Code)
Returns the Default Node Arguments a Properties object containing all default Node Args.



getDescription
final public URL getDescription()(Code)
Get the URL of the file that describes this experiment.



getExperimentID
final public String getExperimentID()(Code)



getExperimentName
final public String getExperimentName()(Code)
Returns the Name of this Experiment a String value



getHostComponents
final public HostComponent[] getHostComponents()(Code)
Get the Hosts in this experiment. As a side effect, reconcile the Node/Agent mapping, if the experiment is marked as modified.



getHostComponentsNoReconcile
final public HostComponent[] getHostComponentsNoReconcile()(Code)



getNodeComponents
final public NodeComponent[] getNodeComponents()(Code)
Get the Nodes in this Experiment. As a side-effect, ensure that the NameServer Host property is set correctly, and ensure that the Node/Agent mapping is up-to-date.



getRecipeComponent
final public RecipeComponent getRecipeComponent(int i) throws IndexOutOfBoundsException(Code)
Gets a specific recipe based on Index.
Parameters:
  i - a RecipeComponent value
exception:
  java.lang.IndexOutOfBoundsException - if an error occurs



getRecipeComponentCount
final public int getRecipeComponentCount()(Code)
Returns the total number of recipes in this experiment. an int value



getRecipeComponents
final public RecipeComponent[] getRecipeComponents()(Code)
Gets all RecipeComponents for this experiment. a RecipeComponent[] value



getResultDirectory
final public File getResultDirectory()(Code)



getSocietyComponent
final public SocietyComponent getSocietyComponent()(Code)
Return the SocietyComponent a SocietyComponent value



getSocietyComponentCount
final public int getSocietyComponentCount()(Code)
Returns the total number of Societies in this experiment. Since experiments can only have 1 society, this returns a 0 or 1 value. an int value



getTrialID
final public String getTrialID()(Code)



hasConfiguration
final public boolean hasConfiguration()(Code)
If the experiment has at least one host with at least one node with at least one agent, that is a configuration. a boolean true if it has a configured agent



importHNA
final public void importHNA(Component parent)(Code)
Imports a HNA XML file. The file is imported into a ComponentData structure which is then traversed and applied to the current experiment.
Parameters:
  parent - - Parent GUI Component



initProperties
final public void initProperties()(Code)



isEditInProgress
final public boolean isEditInProgress()(Code)
Return whether or not experiment is being edited. Note that the experiment may be viewed (but not edited) in an editor, even if this flag is not set. boolean whether or not experiment is being edited



isModified
final public boolean isModified()(Code)
Returns whether or not this experiment has been modified since it was saved to the database. true if experiment has been modified



isRunInProgress
final public boolean isRunInProgress()(Code)
Return whether or not experiment is being run. boolean whether or not experiment is being run



isRunnable
final public boolean isRunnable()(Code)
Return whether or not experiment is runnable. An experiment is runnable: if it has a host-node-agent mapping, and it has no unbound properties, and it's not being edited or run, and it's been saved in the database (i.e. the modified flag is false) whether or not an experiment is runnable



removeComponent
final public void removeComponent(ModifiableComponent comp) throws IllegalArgumentException(Code)
Removes the given component from the Experiment. If the component is not supported, an exception is throw.
Parameters:
  comp -
exception:
  java.lang.IllegalArgumentException - if an error occurs



removeHost
final public void removeHost(HostComponent hostComponent)(Code)
Removes the given host from the experiment.
Parameters:
  hostComponent - - HostComponent to remove.



removeNode
final public void removeNode(NodeComponent nc)(Code)
Removes the specified node from the Experiment
Parameters:
  nc - NodeComponent of the Node to remove



removeRecipeComponent
final public void removeRecipeComponent(RecipeComponent recipe)(Code)
Removes the specified RecipeComponent.
Parameters:
  recipe -



removeSocietyComponent
final public void removeSocietyComponent()(Code)
Removes the SocietyComponent from this experiment



renameHost
final public void renameHost(HostComponent hostComponent, String name) throws IllegalArgumentException(Code)
Renames a host in the Experiment. If a host with the given name already exists, an exception is thrown.
Parameters:
  hostComponent - - HostComponent of the host to be renamed.
Parameters:
  name - - New Host Name
exception:
  java.lang.IllegalArgumentException - if an error occurs



renameNode
final public void renameNode(NodeComponent nc, String name) throws IllegalArgumentException(Code)
Renames a currently existing Node in this Experiment. If a node with the new name already exists, an exception is thrown
Parameters:
  nc - - Node Component of the Node to change name
Parameters:
  name - - New Name
exception:
  java.lang.IllegalArgumentException - if an error occurs



resetModified
final public void resetModified()(Code)
Indicate that the experiment is up-to-date with respect to the database. Use with caution! The only reason to reset this flag is that when an experiment is created from the database, its components are built-up from the database information, and thus the experiment appears to be modified.



save
abstract public void save(DBConflictHandler ch)(Code)



setCommAsbID
final public void setCommAsbID(String id)(Code)
(Re) set the local variables idea of the community assembly for this experiment, possibly to null



setDefaultNodeArguments
abstract protected void setDefaultNodeArguments()(Code)



setEditInProgress
final public void setEditInProgress(boolean newEditInProgress)(Code)
Set edit in progress. Used by UI tools to indicate that an experiment is being edited. Note that this is distinct from setting the editability flag, which indicates whether the experiment can ever be edited.
Parameters:
  newEditInProgress -



setExperimentID
final public void setExperimentID(String expID)(Code)
Sets the Experiment ID for this Experiment.
Parameters:
  expID -



setRecipeComponents
final public void setRecipeComponents(RecipeComponent[] newRecipes)(Code)
Adds an array of RecipeComponents to this experiment.
Parameters:
  newRecipes - RecipeComponents



setResultDirectory
final public void setResultDirectory(File resultDirectory)(Code)



setRunInProgress
final public void setRunInProgress(boolean newRunInProgress)(Code)
Set run in progress. Used by UI tools to indicate that an experiment is being run. Note that this is distinct from setting the runnability flag, which indicates whether the experiment can ever be run.
Parameters:
  newRunInProgress -



setSocietyComponent
final void setSocietyComponent(SocietyComponent society)(Code)



setTrialID
final void setTrialID(String trialID)(Code)
Sets the current Trial ID.
Parameters:
  trialID - - New Trial ID



stop
final public void stop()(Code)
Stop after the current trial. This invokes experimentStopped.



toString
final public String toString()(Code)
Returns the name of this component a String value



updateNameServerHostName
final public void updateNameServerHostName()(Code)
Insure that we have a valid nameserver specification. There are several possibilities: If the default node nameserver argument has been set, try to make that be the name server. Parse out the host name part. Then scan all the hosts that have nodes and check to see if any host matches that specified by the default node nameserver argument. If it does, keep that nameserver. If it doesn't (or if there was no default node nameserver argument) then use the first host as the nameserver.



writeContents
final public void writeContents(String filename, OutputStream out)(Code)



Fields inherited from org.cougaar.tools.csmart.core.property.ModifiableConfigurableComponent
protected transient boolean editable(Code)(Java Doc)

Methods inherited from org.cougaar.tools.csmart.core.property.ModifiableConfigurableComponent
public void addModificationListener(ModificationListener l)(Code)(Java Doc)
public ModifiableComponent copy(String name)(Code)(Java Doc)
protected void fireModification()(Code)(Java Doc)
protected void fireModification(ModificationEvent event)(Code)(Java Doc)
public boolean isEditable()(Code)(Java Doc)
public void removeModificationListener(ModificationListener l)(Code)(Java Doc)
public void setEditable(boolean editable)(Code)(Java Doc)

Fields inherited from org.cougaar.tools.csmart.core.property.ConfigurableComponent
protected transient Logger log(Code)(Java Doc)

Methods inherited from org.cougaar.tools.csmart.core.property.ConfigurableComponent
public int addChild(ComposableComponent c)(Code)(Java Doc)
public void addChildConfigurationListener(ChildConfigurationListener l)(Code)(Java Doc)
public ComponentData addComponentData(ComponentData data)(Code)(Java Doc)
public Property addInvisibleProperty(String name, Object value)(Code)(Java Doc)
public Property addInvisibleProperty(String name, Object value, Class cls)(Code)(Java Doc)
public Property addInvisibleProperty(Property p)(Code)(Java Doc)
public void addPropertiesListener(PropertiesListener l)(Code)(Java Doc)
public Property addProperty(String name, Object value)(Code)(Java Doc)
public Property addProperty(String name, Object value, Class cls)(Code)(Java Doc)
public Property addProperty(Property p)(Code)(Java Doc)
public Property addProperty(String name, Object value, PropertyListener l)(Code)(Java Doc)
public boolean componentWasRemoved()(Code)(Java Doc)
public BaseComponent copy(BaseComponent result)(Code)(Java Doc)
public void finishNameChange()(Code)(Java Doc)
protected void fireChildConfigurationChanged()(Code)(Java Doc)
protected void firePropertyAdded(PropertyEvent ev)(Code)(Java Doc)
public Iterator getAllProperties()(Code)(Java Doc)
protected ComposableComponent getAncestorOfClass(Class cls)(Code)(Java Doc)
public ComposableComponent getChild(int n)(Code)(Java Doc)
public ComposableComponent getChild(CompositeName childName)(Code)(Java Doc)
public int getChildCount()(Code)(Java Doc)
public Collection getDescendentsOfClass(Class cls, Collection c)(Code)(Java Doc)
public Collection getDescendentsOfClass(Class cls)(Code)(Java Doc)
public URL getDescription()(Code)(Java Doc)
protected EventListenerList getEventListenerList()(Code)(Java Doc)
public CompositeName getFullName()(Code)(Java Doc)
public Property getInvisibleProperty(CompositeName name)(Code)(Java Doc)
public Property getInvisibleProperty(String localName)(Code)(Java Doc)
public Iterator getLocalProperties()(Code)(Java Doc)
public Iterator getLocalPropertyNames()(Code)(Java Doc)
protected Map getMyProperties()(Code)(Java Doc)
public ComposableComponent getParent()(Code)(Java Doc)
public Iterator getProperties()(Code)(Java Doc)
public Property getProperty(CompositeName name)(Code)(Java Doc)
public Property getProperty(String localName)(Code)(Java Doc)
public Iterator getPropertyNames()(Code)(Java Doc)
public List getPropertyNamesList()(Code)(Java Doc)
protected Property getPropertyWorker(CompositeName name, boolean all, boolean visible)(Code)(Java Doc)
public String getShortName()(Code)(Java Doc)
public Iterator getSortedLocalPropertyNames()(Code)(Java Doc)
public Property getVisibleProperty(CompositeName name)(Code)(Java Doc)
public Property getVisibleProperty(String localName)(Code)(Java Doc)
public boolean hasUnboundProperties()(Code)(Java Doc)
abstract public void initProperties()(Code)(Java Doc)
public boolean isPropertyVisible(Property prop)(Code)(Java Doc)
public ComponentData modifyComponentData(ComponentData data)(Code)(Java Doc)
public ComponentData modifyComponentData(ComponentData data, PopulateDb pdb)(Code)(Java Doc)
public void printAllProperties(PrintStream out)(Code)(Java Doc)
public void printAllProperties(PrintStream out, String indent)(Code)(Java Doc)
public void printLocalProperties(PrintStream out)(Code)(Java Doc)
public void printLocalProperties(PrintStream out, String indent)(Code)(Java Doc)
public void removeAllChildren()(Code)(Java Doc)
public void removeChild(int childIndex)(Code)(Java Doc)
public void removeChild(ComposableComponent c)(Code)(Java Doc)
public void removeChildConfigurationListener(ChildConfigurationListener l)(Code)(Java Doc)
public void removePropertiesListener(PropertiesListener l)(Code)(Java Doc)
public void removeProperty(Property prop)(Code)(Java Doc)
public void setName(String newName)(Code)(Java Doc)
public void setParent(ComposableComponent newParent)(Code)(Java Doc)
public void setProperties(Map props)(Code)(Java Doc)
public void setPropertyVisible(Property prop, boolean newVisible)(Code)(Java Doc)
public void startNameChange()(Code)(Java Doc)
public String toString()(Code)(Java Doc)

Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.