1 | package dk.deepthought.sidious.planner; |
2 | |
3 | import java.util.Stack; |
4 | |
5 | import dk.deepthought.sidious.supportsystem.Step; |
6 | import dk.deepthought.sidious.supportsystem.SuperLinkID; |
7 | |
8 | /** |
9 | * This class represent a plan in the system. |
10 | * <p> |
11 | * The plan is accessed as a last-in-first-out (LIFO) stack. |
12 | * |
13 | * @author Deepthought |
14 | * |
15 | */ |
16 | public class Plan { |
17 | |
18 | /** |
19 | * The stack of steps. |
20 | */ |
21 | private final Stack<Step> steps = new Stack<Step>(); |
22 | |
23 | /** |
24 | * The id of the requester. |
25 | */ |
26 | private SuperLinkID id; |
27 | |
28 | /** |
29 | * Empty default constructor. |
30 | */ |
31 | public Plan() { |
32 | } |
33 | |
34 | /** |
35 | * Adds a <code>Step</code> to this <code>Plan</code>. |
36 | * |
37 | * @param step |
38 | * the <code>Step</code> to be added to this <code>Plan</code> |
39 | * |
40 | */ |
41 | public void add(Step step) { |
42 | steps.push(step); |
43 | } |
44 | |
45 | /** |
46 | * Gets the steps that make up this plan. |
47 | * @return the steps |
48 | */ |
49 | public Stack<Step> getSteps() { |
50 | return steps; |
51 | } |
52 | |
53 | /** |
54 | * Returns the size plan. Which means the number of steps this plan consists |
55 | * of. |
56 | * |
57 | * @return the size of the plan |
58 | */ |
59 | public int size() { |
60 | return steps.size(); |
61 | } |
62 | |
63 | /** |
64 | * Sets the id of the requester. |
65 | * |
66 | * @param id |
67 | * the id to set |
68 | */ |
69 | public void setId(SuperLinkID id) { |
70 | this.id = id; |
71 | } |
72 | |
73 | /** |
74 | * Returns the id of the requester. |
75 | * |
76 | * @return the id |
77 | */ |
78 | public SuperLinkID getId() { |
79 | return id; |
80 | } |
81 | |
82 | /* (non-Javadoc) |
83 | * @see java.lang.Object#toString() |
84 | */ |
85 | @Override |
86 | public String toString() { |
87 | return getClass().getSimpleName() + "[steps=" + steps + "]"; |
88 | } |
89 | |
90 | } |