View Javadoc

1   package cz.cuni.amis.pogamut.sposh.elements;
2   
3   /**
4    * Class for holding information about frequency of running various parts of
5    * POSH plan. 
6    *
7    * @author Honza
8    */
9   @Deprecated
10  public class Freq {
11  
12      /**
13       * Infinite frequency. In order for an event to have this frequency, it
14       * would have to occur each 1/inf ms.
15       */
16      public static Freq INFINITE = new Freq(0, FreqUnits.SECONDS);
17  
18      /**
19       * Compare two frequenties.
20       *
21       * @param freq1
22       * @param freq2
23       * @return -1 if freq1 < freq2 0 if freq1 == freq2 1 if freq1 > freq2
24       */
25      public static int compare(long freq1, long freq2) {
26          if (freq1 < freq2) {
27              return -1;
28          }
29          if (freq1 == freq2) {
30              return 0;
31          }
32          return 1;
33      }
34  
35      public static int compare(Freq freq1, Freq freq2) {
36          return compare(freq1.tick(), freq2.tick());
37      }
38  
39  	/**
40  	 * Units for frequency
41  	 * @author HonzaH
42  	 */
43  	public enum FreqUnits {
44  
45  		HOURS("hours", 0),
46  		MINUTES("minutes", 1),
47  		SECONDS("seconds", 2),
48  		NONE("none", 3),
49  		HZ("hz", 4),
50  		PM("pm", 5);
51  
52  		private final String name;
53  		private final int id;
54  
55  		private FreqUnits(String name, int id) {
56  			this.name = name;
57  			this.id = id;
58  		}
59  
60  		@Override
61  		public String toString() {
62  			return name;
63  		}
64  
65  		public int getId() {
66  			return id;
67  		}
68  	}
69  	
70  	
71  	private FreqUnits units;
72  	private double ammount;
73  
74  	Freq() {
75  		this.ammount = 0;
76  		this.units = FreqUnits.NONE;
77  	}
78  
79  	Freq(double count, FreqUnits units) {
80  		this.ammount = count;
81                  this.units = units;
82  	}
83  
84  	public Freq(Freq original) {
85  		this.ammount = original.ammount;
86  		this.units = original.units;
87  	}
88  
89  	@Override
90  	public String toString() {
91  		if (!FreqUnits.NONE.equals(units)) {
92  			return "(" + getUnits() + " " + getAmmount() + ")";
93  		}
94  		return "";
95  	}
96  
97  	public FreqUnits getUnits() {
98  		return units;
99  	}
100 
101 	public void setUnits(FreqUnits units) {
102 		this.units = units;
103 	}
104 
105 	public double getAmmount() {
106 		return ammount;
107 	}
108 
109 	public void setAmmount(double ammount) {
110 		this.ammount = ammount;
111 	}
112 
113     /**
114      * How long does one tick lasts
115      * @return length of tick in ms
116      */
117     public long tick() {
118         switch (units) {
119             case HOURS:
120                 return (long) (3600000L * ammount);
121             case MINUTES:
122                 return (long) (60000L * ammount);
123             case SECONDS:
124                 return (long) (1000L * ammount);
125             case HZ:
126                 return (long) (1000L / ammount);
127             case PM:
128                 return (long) (60000 / ammount);
129             case NONE:
130                 return (long) ammount;
131             default:
132                 throw new IllegalStateException("Invalid units.");
133         }
134     }
135 }