Statistiques
| Révision:

fr_b02 / petri / src / main / Network.java @ 5

Historique | Voir | Annoter | Télécharger (3,611 ko)

1 2 a19coudr
package main;
2
3
4
import java.util.ArrayList;
5
import java.util.List;
6
7 4 a19coudr
import arcElement.Arc;
8
import arcElement.ArcCleaner;
9
import arcElement.ArcEntering;
10
import arcElement.ArcOutering;
11
import arcElement.ArcZero;
12 3 a19coudr
import element.Place;
13 4 a19coudr
import element.Place.UndefinedToken;
14 3 a19coudr
import element.Transition;
15
16 2 a19coudr
public class Network {
17
        public static int ArcOutering = 2;
18
        public static int ArcCleaner = 1;
19
        public static int ArcZero = 0;
20
        public static int ArcEntering = 3;
21 5 a19coudr
22 2 a19coudr
        private List<Place> placeList;
23
        private List<Transition> listTransition;
24
        public Network() {
25
                this.placeList=new ArrayList<Place>();
26
                this.listTransition=new ArrayList<Transition>();
27
28
        }
29
30
31
        public void addTransition() {
32
                Transition transition = new Transition();
33
                listTransition.add(transition);
34
        }
35 4 a19coudr
        public void addPlace(int value) throws UndefinedToken {
36 2 a19coudr
                Place place = new Place(value);
37
                placeList.add(place);
38
        }
39 5 a19coudr
        @SuppressWarnings("serial")
40
        public class UndefinedIdentifier extends Exception{
41
                public UndefinedIdentifier() {
42
                        super("the identifier cannot take this value");
43
                }
44 2 a19coudr
45 5 a19coudr
        }
46
        public void addArc(Transition transition, Place place, int value, int identifier) throws UndefinedIdentifier {
47 2 a19coudr
48
                if (identifier==ArcZero) {
49
                        transition.getArcList().add(new ArcZero(place, value));
50
                }
51
                else if(identifier==ArcCleaner) {
52
                        transition.getArcList().add(new ArcCleaner(place));
53
                }
54
                else if(identifier==ArcOutering) {
55
                        transition.getArcList().add(new ArcOutering(place,value));
56
                }else if(identifier==ArcEntering) {
57
                        transition.getArcList().add( new ArcEntering(place,value));
58 5 a19coudr
                }else {
59
                        throw new UndefinedIdentifier();
60 2 a19coudr
                }
61
62
        }
63
        public void deleteArc(Arc a) {
64 5 a19coudr
                Arc aToDelete = null;
65 2 a19coudr
                for(Transition transition: listTransition) {
66
                        for(Arc arc:transition.getArcList()) {
67
                                if(arc.equals(a)) {
68 5 a19coudr
                                        aToDelete=arc;                                }
69 2 a19coudr
                        }
70 5 a19coudr
                        transition.getArcList().remove(aToDelete);
71 2 a19coudr
                }
72
73
        }
74 5 a19coudr
75 2 a19coudr
        public void deletePlace( Place place) {
76 5 a19coudr
                Arc aToDelete = null;
77 2 a19coudr
                for(Transition transition: listTransition) {
78
                        for(Arc arc:transition.getArcList()) {
79
                                if(arc.getPlace().equals(place)) {
80 5 a19coudr
                                        aToDelete=arc;
81 2 a19coudr
                                }
82
                        }
83 5 a19coudr
                        deleteArc( aToDelete);
84
                        placeList.remove(place);
85
86 2 a19coudr
                }
87 5 a19coudr
88 2 a19coudr
        }
89 5 a19coudr
90 2 a19coudr
        public void deleteTransition(Transition transition) {
91 5 a19coudr
92 2 a19coudr
                listTransition.remove(transition);
93
        }
94
95
        public void fire(Transition transition) {
96
                if (transition.isPullable()==true) {
97
                        transition.doTransition();
98
                }
99
        }
100
        public String toString() {
101
                String res= "[";
102
                for(int i=0;listTransition.size()>i;i++ ) {
103
                        res=res+"transtion "+i+" :"+listTransition.get(i).toString()+", ";
104
                }
105
                res=res+"]";
106
                return res;
107
        }
108 5 a19coudr
        public static void main(String[] args) throws UndefinedToken, UndefinedIdentifier {
109
110 2 a19coudr
                Network n0=new Network();
111
                n0.addPlace(5);
112
                n0.addPlace(4);
113
                n0.addTransition();
114
                n0.addArc(n0.listTransition.get(0), n0.placeList.get(0), 2, ArcEntering);
115
                n0.addArc(n0.listTransition.get(0), n0.placeList.get(1), 2, ArcOutering);
116
                System.out.println("");
117 5 a19coudr
                System.out.println("RESEAU DE PETRI une transtion, un arcOutering un arcEntering");
118 2 a19coudr
                System.out.println("");
119
                System.out.println("situtation initial : ");
120
                System.out.println(n0);
121 5 a19coudr
122 2 a19coudr
                System.out.println("fire 1 : ");
123
                n0.fire(n0.listTransition.get(0));
124
                System.out.println(n0);
125 5 a19coudr
126 2 a19coudr
                System.out.println("fire 2 : ");
127
                n0.fire(n0.listTransition.get(0));
128
                System.out.println(n0);
129 5 a19coudr
130 2 a19coudr
                System.out.println("fire 3 : ");
131
                n0.fire(n0.listTransition.get(0));
132
                System.out.println(n0);
133
134 5 a19coudr
135 2 a19coudr
        }
136
137 4 a19coudr
138
        public List<Place> getPlaceList() {
139
                return placeList;
140
        }
141
142
143
        public List<Transition> getListTransition() {
144
                return listTransition;
145
        }
146
147 2 a19coudr
}