From b30213f1fd4d60c3a2d78e7ea081a50c3fc3332d Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Wed, 16 Jul 2008 12:49:26 +0000 Subject: [PATCH] automata files --- src/automata/Automata.java | 133 +++++++++++++++++++++++++++++++++++ src/automata/State.java | 97 +++++++++++++++++++++++++ src/automata/Transition.java | 71 +++++++++++++++++++ 3 files changed, 301 insertions(+) create mode 100755 src/automata/Automata.java create mode 100755 src/automata/State.java create mode 100755 src/automata/Transition.java diff --git a/src/automata/Automata.java b/src/automata/Automata.java new file mode 100755 index 0000000000..e2cb5e6ac3 --- /dev/null +++ b/src/automata/Automata.java @@ -0,0 +1,133 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + +ludovic.apvrille AT enst.fr + +This software is a computer program whose purpose is to allow the +edition of TURTLE analysis, design and deployment diagrams, to +allow the generation of RT-LOTOS or Java code from this diagram, +and at last to allow the analysis of formal validation traces +obtained from external tools, e.g. RTL from LAAS-CNRS and CADP +from INRIA Rhone-Alpes. + +This software is governed by the CeCILL license under French law and +abiding by the rules of distribution of free software. You can use, +modify and/ or redistribute the software under the terms of the CeCILL +license as circulated by CEA, CNRS and INRIA at the following URL +"http://www.cecill.info". + +As a counterpart to the access to the source code and rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors have only limited +liability. + +In this respect, the user's attention is drawn to the risks associated +with loading, using, modifying and/or developing or reproducing the +software by the user in light of its specific status of free software, +that may mean that it is complicated to manipulate, and that also +therefore means that it is reserved for developers and experienced +professionals having in-depth computer knowledge. Users are therefore +encouraged to load and test the software's suitability as regards their +requirements in conditions enabling the security of their systems and/or +data to be ensured and, more generally, to use and operate it in the +same conditions as regards security. + +The fact that you are presently reading this means that you have had +knowledge of the CeCILL license and that you accept its terms. + +/** + * Class Automata + * Creation: 23/03/2006 + * @version 1.0 23/03/2006 + * @author Ludovic APVRILLE + * @see + */ + +package automata; + +import java.util.*; + + +public class Automata { + private State initState; + private LinkedList states; + private String name; + + public Automata() { + states = new LinkedList(); + initState = new State("0"); + states.add(initState); + } + + public Automata(String init) { + states = new LinkedList(); + initState = new State(init); + states.add(initState); + } + + public void setName(String _name) { + name = _name; + } + + public String getName() { + return name; + } + + public State getInitState() { + return initState; + } + + public State getState(int index) { + return (State)(states.get(index)); + } + + public void addState(State s) { + states.add(s); + } + + public State newState() { + State s = new State("" + nbOfStates()); + addState(s); + return s; + } + + public int nbOfStates() { + return states.size(); + } + + public LinkedList getStates() { + return states; + } + + public int nbOfTransitions() { + int nb = 0; + ListIterator iterator = states.listIterator(); + while(iterator.hasNext()) { + nb+= ((State)iterator.next()).nbOfTransitions(); + } + return nb; + } + + public String toAUT() { + StringBuffer sb = new StringBuffer(); + sb.append("des(" + initState.getName() + "," + nbOfTransitions() + "," + nbOfStates() + ")\n"); + ListIterator iterator = states.listIterator(); + while(iterator.hasNext()) { + sb.append(((State)iterator.next()).toAUT()); + } + return new String(sb); + } + + public void renameStates() { + State s; + int cpt = 0; + ListIterator iterator = states.listIterator(); + while(iterator.hasNext()) { + s = (State)(iterator.next()); + s.setName(""+cpt); + cpt ++; + } + } + + +} \ No newline at end of file diff --git a/src/automata/State.java b/src/automata/State.java new file mode 100755 index 0000000000..dfbb6ef6a1 --- /dev/null +++ b/src/automata/State.java @@ -0,0 +1,97 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + +ludovic.apvrille AT enst.fr + +This software is a computer program whose purpose is to allow the +edition of TURTLE analysis, design and deployment diagrams, to +allow the generation of RT-LOTOS or Java code from this diagram, +and at last to allow the analysis of formal validation traces +obtained from external tools, e.g. RTL from LAAS-CNRS and CADP +from INRIA Rhone-Alpes. + +This software is governed by the CeCILL license under French law and +abiding by the rules of distribution of free software. You can use, +modify and/ or redistribute the software under the terms of the CeCILL +license as circulated by CEA, CNRS and INRIA at the following URL +"http://www.cecill.info". + +As a counterpart to the access to the source code and rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors have only limited +liability. + +In this respect, the user's attention is drawn to the risks associated +with loading, using, modifying and/or developing or reproducing the +software by the user in light of its specific status of free software, +that may mean that it is complicated to manipulate, and that also +therefore means that it is reserved for developers and experienced +professionals having in-depth computer knowledge. Users are therefore +encouraged to load and test the software's suitability as regards their +requirements in conditions enabling the security of their systems and/or +data to be ensured and, more generally, to use and operate it in the +same conditions as regards security. + +The fact that you are presently reading this means that you have had +knowledge of the CeCILL license and that you accept its terms. + +/** + * Class State + * Creation: 23/03/2006 + * @version 1.0 23/03/2006 + * @author Ludovic APVRILLE + * @see + */ + +package automata; + +import java.util.*; + + +public class State { + private String name; + private LinkedList transitions; + + public State(String _name) { + transitions = new LinkedList(); + name = _name; + } + + public int nbOfTransitions() { + return transitions.size(); + } + + public LinkedList getTransitions() { + return transitions; + } + + public Transition getTransition(int index) { + return (Transition)(transitions.get(index)); + } + + public String getName() { + return name; + } + + public void setName(String _name) { + name = _name; + } + + public void addTransition(Transition t) { + //System.out.println("Adding transition to state " + getName() + " transition=" + t.getValue() + " to " + t.getNextState().getName()); + transitions.add(t); + } + + public String toAUT() { + StringBuffer sb = new StringBuffer(""); + Transition tr; + + ListIterator iterator = transitions.listIterator(); + while(iterator.hasNext()) { + tr = (Transition)(iterator.next()); + sb.append("(" + name + ", \"" + tr.getValue() + "\", " + tr.getNextState().getName() + ")\n"); + } + return new String(sb); + } + +} \ No newline at end of file diff --git a/src/automata/Transition.java b/src/automata/Transition.java new file mode 100755 index 0000000000..8b77d5b928 --- /dev/null +++ b/src/automata/Transition.java @@ -0,0 +1,71 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + +ludovic.apvrille AT enst.fr + +This software is a computer program whose purpose is to allow the +edition of TURTLE analysis, design and deployment diagrams, to +allow the generation of RT-LOTOS or Java code from this diagram, +and at last to allow the analysis of formal validation traces +obtained from external tools, e.g. RTL from LAAS-CNRS and CADP +from INRIA Rhone-Alpes. + +This software is governed by the CeCILL license under French law and +abiding by the rules of distribution of free software. You can use, +modify and/ or redistribute the software under the terms of the CeCILL +license as circulated by CEA, CNRS and INRIA at the following URL +"http://www.cecill.info". + +As a counterpart to the access to the source code and rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors have only limited +liability. + +In this respect, the user's attention is drawn to the risks associated +with loading, using, modifying and/or developing or reproducing the +software by the user in light of its specific status of free software, +that may mean that it is complicated to manipulate, and that also +therefore means that it is reserved for developers and experienced +professionals having in-depth computer knowledge. Users are therefore +encouraged to load and test the software's suitability as regards their +requirements in conditions enabling the security of their systems and/or +data to be ensured and, more generally, to use and operate it in the +same conditions as regards security. + +The fact that you are presently reading this means that you have had +knowledge of the CeCILL license and that you accept its terms. + +/** + * Class Transition + * Creation: 23/03/2006 + * @version 1.0 23/03/2006 + * @author Ludovic APVRILLE + * @see + */ + +package automata; + + +public class Transition { + private String value; + private State nextState; + + + public Transition(String _value, State _nextState) { + value = _value; + nextState = _nextState; + } + + public String getValue() { + return value; + } + + public State getNextState() { + return nextState; + } + + public void setNextState(State _nextState) { + nextState = _nextState; + } + +} \ No newline at end of file -- GitLab