~tapaal-contributor/tapaal/disappearing-tokens-1940098

« back to all changes in this revision

Viewing changes to src/dk/aau/cs/model/tapn/TimedInputArc.java

  • Committer: Kenneth Yrke Jørgensen
  • Date: 2011-04-12 09:50:16 UTC
  • mfrom: (329.1.188 tapaal-1.5)
  • Revision ID: mail@yrke.dk-20110412095016-e4hqdgab5596ja09
Merged with branch addning support for new 1.5 features

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package dk.aau.cs.model.tapn;
 
2
 
 
3
import java.util.ArrayList;
 
4
import java.util.List;
 
5
 
 
6
import dk.aau.cs.util.Require;
 
7
 
 
8
public class TimedInputArc extends TAPNElement {
 
9
        private TimedPlace source;
 
10
        private TimeInterval interval;
 
11
        private TimedTransition destination;
 
12
 
 
13
        public TimedInputArc(TimedPlace source, TimedTransition destination, TimeInterval interval) {
 
14
                Require.that(source != null, "A timed input arc cannot have a null source place");
 
15
                Require.that(destination != null, "A timed input arc cannot have a null destination transition");
 
16
                Require.that(!source.isShared() || !destination.isShared(), "You cannot draw an arc between a shared transition and shared place.");
 
17
                
 
18
                this.source = source;
 
19
                this.destination = destination;
 
20
                setTimeInterval(interval);
 
21
        }
 
22
 
 
23
        public TimedPlace source() {
 
24
                return source;
 
25
        }
 
26
 
 
27
        public TimeInterval interval() {
 
28
                return interval;
 
29
        }
 
30
 
 
31
        public void setTimeInterval(TimeInterval interval) {
 
32
                Require.that(interval != null, "A timed input arc cannot have a null interval");
 
33
 
 
34
                this.interval = interval;
 
35
        }
 
36
 
 
37
        public TimedTransition destination() {
 
38
                return destination;
 
39
        }
 
40
 
 
41
        public boolean isEnabled() {
 
42
                return getElligibleTokens().size() > 0;
 
43
        }
 
44
 
 
45
        public boolean isEnabledBy(TimedToken token) {
 
46
                Require.that(source.equals(token.place()), "This token is from a different place");
 
47
                return interval.isIncluded(token.age());
 
48
        }
 
49
        
 
50
        public List<TimedToken> getElligibleTokens(){
 
51
                ArrayList<TimedToken> elligbleTokens = new ArrayList<TimedToken>();
 
52
                List<TimedToken> tokens = source.tokens();
 
53
 
 
54
                for (TimedToken t : tokens) {
 
55
                        if (isEnabledBy(t)) elligbleTokens.add(t);
 
56
                }
 
57
 
 
58
                return elligbleTokens;
 
59
        }
 
60
 
 
61
        public void delete() {
 
62
                model().remove(this);
 
63
        }
 
64
 
 
65
        public TimedInputArc copy(TimedArcPetriNet tapn) {
 
66
                return new TimedInputArc(tapn.getPlaceByName(source.name()), tapn.getTransitionByName(destination.name()), interval.copy());
 
67
        }
 
68
 
 
69
        // This method should ONLY be called in relation to sharing/unsharing a place
 
70
        public void setSource(TimedPlace place) {
 
71
                Require.that(place != null, "place cannot be null");
 
72
                this.source = place;            
 
73
        }
 
74
        
 
75
        @Override
 
76
        public String toString() {
 
77
                return "From " + source.name() + " to " + destination.name() + " with interval " + interval().toString();
 
78
        }
 
79
}