Statistiques
| Révision :

root / src / gZFS / zreplicas.java @ 53

Historique | Voir | Annoter | Télécharger (13,04 ko)

1 53 kreverch
/*******************************************************************
2 53 kreverch
 *
3 53 kreverch
 * Copyright (C) 2013 Kevin Reverchon
4 53 kreverch
 * This file/program is part of gZFS free software
5 53 kreverch
 * See COPYING file for details
6 53 kreverch
 *
7 53 kreverch
 *******************************************************************/
8 14 kreverch
package gZFS;
9 14 kreverch
10 14 kreverch
import java.text.DateFormat;
11 14 kreverch
import java.text.ParseException;
12 14 kreverch
import java.text.SimpleDateFormat;
13 14 kreverch
import java.util.Calendar;
14 14 kreverch
import java.util.Date;
15 14 kreverch
import java.util.GregorianCalendar;
16 14 kreverch
import java.util.Hashtable;
17 14 kreverch
18 14 kreverch
public class zreplicas {
19 14 kreverch
        public Hashtable<String,zProperties> zProperties = new Hashtable<String, zProperties>();
20 14 kreverch
        public Hashtable<String,zProperties> zSchedulerProperties = new Hashtable<String, zProperties>();
21 14 kreverch
22 14 kreverch
        private Hashtable<Object, Object> cronMinute = new Hashtable<Object, Object>();
23 14 kreverch
        private Hashtable<Object, Object> cronHour= new Hashtable<Object, Object>();
24 14 kreverch
        private Hashtable<Object, Object> cronMonth= new Hashtable<Object, Object>();
25 14 kreverch
        private Hashtable<Object, Object> cronDayOfMonth = new Hashtable<Object, Object>();
26 14 kreverch
        private Hashtable<Object, Object> cronDayOfWeek = new Hashtable<Object, Object>();
27 14 kreverch
28 14 kreverch
        zreplicas(){
29 14 kreverch
                String valueForHash = null;
30 14 kreverch
                for (int i=1;i<61;i++){
31 14 kreverch
32 14 kreverch
                        if ( i<10){
33 14 kreverch
                                valueForHash="0"+String.valueOf(i);
34 14 kreverch
                        }else{
35 14 kreverch
                                valueForHash=String.valueOf(i);
36 14 kreverch
                        }
37 14 kreverch
                        cronMinute.put(String.valueOf(i), valueForHash);
38 14 kreverch
                        if ( i ==1){
39 14 kreverch
                                cronMinute.put("*", "All");
40 14 kreverch
                        }else{
41 14 kreverch
                                cronMinute.put("*/"+i, "Every "+valueForHash+" Minutes");
42 14 kreverch
                        }
43 14 kreverch
                }
44 14 kreverch
45 14 kreverch
                for (int i=0;i<24;i++){
46 14 kreverch
                        if ( i<10){
47 14 kreverch
                                valueForHash="0"+String.valueOf(i);
48 14 kreverch
                        }else{
49 14 kreverch
                                valueForHash=String.valueOf(i);
50 14 kreverch
                        }
51 14 kreverch
                        cronHour.put(String.valueOf(i), valueForHash);
52 14 kreverch
                        if ( i ==1){
53 14 kreverch
                                cronHour.put("*", "All");
54 14 kreverch
                        }else{
55 14 kreverch
                                cronHour.put("*/"+i, "Every "+valueForHash+" Hours");
56 14 kreverch
                        }
57 14 kreverch
                }
58 14 kreverch
59 14 kreverch
                cronMonth.put("01", "January");
60 14 kreverch
                cronMonth.put("02", "February");
61 14 kreverch
                cronMonth.put("03", "March");
62 14 kreverch
                cronMonth.put("04", "April");
63 14 kreverch
                cronMonth.put("05", "May");
64 14 kreverch
                cronMonth.put("06", "June");
65 14 kreverch
                cronMonth.put("07", "July");
66 14 kreverch
                cronMonth.put("08", "August");
67 14 kreverch
                cronMonth.put("09", "September");
68 14 kreverch
                cronMonth.put("10", "October");
69 14 kreverch
                cronMonth.put("11", "November");
70 14 kreverch
                cronMonth.put("12", "December");
71 14 kreverch
                cronMonth.put("*", "All");
72 14 kreverch
73 14 kreverch
                cronDayOfWeek.put("0", "Sunday");
74 14 kreverch
                cronDayOfWeek.put("1", "Monday");
75 14 kreverch
                cronDayOfWeek.put("2", "Tuesday");
76 14 kreverch
                cronDayOfWeek.put("3", "Wednesday");
77 14 kreverch
                cronDayOfWeek.put("4", "Thursday");
78 14 kreverch
                cronDayOfWeek.put("5", "Friday");
79 14 kreverch
                cronDayOfWeek.put("6", "Saturday");
80 14 kreverch
                cronDayOfWeek.put("*", "All");
81 14 kreverch
82 14 kreverch
83 14 kreverch
                for (int i=1;i<31;i++){
84 14 kreverch
                        if ( i<10){
85 14 kreverch
                                valueForHash="0"+String.valueOf(i);
86 14 kreverch
                        }else{
87 14 kreverch
                                valueForHash=String.valueOf(i);
88 14 kreverch
                        }
89 14 kreverch
                        cronDayOfMonth.put(String.valueOf(i), valueForHash);
90 14 kreverch
                        if ( i ==1){
91 14 kreverch
                                cronDayOfMonth.put("*", "All");
92 14 kreverch
                        }else{
93 14 kreverch
                                cronDayOfMonth.put("*/"+i, "Every "+valueForHash+" Days");
94 14 kreverch
                        }
95 14 kreverch
                }
96 14 kreverch
97 14 kreverch
                Hashtable<Object, Object> permitValueNameVolFS = new Hashtable<Object, Object>();
98 14 kreverch
                zProperties zPropertyNameVolFS = new zProperties();
99 14 kreverch
                permitValueNameVolFS.clear();
100 14 kreverch
                zPropertyNameVolFS.setNameProperty("name");
101 14 kreverch
                zPropertyNameVolFS.setLabelProperty("Name Volume/FileSystem replicated");
102 14 kreverch
                zPropertyNameVolFS.setType("noupdateable");
103 14 kreverch
                zPropertyNameVolFS.setValue("");
104 14 kreverch
                zPropertyNameVolFS.setPermitValue(null);
105 14 kreverch
                zPropertyNameVolFS.setMultivalues(null);
106 14 kreverch
                zSchedulerProperties.put("name", zPropertyNameVolFS);
107 14 kreverch
108 14 kreverch
                Hashtable<Object, Object> permitValueFileConf = new Hashtable<Object, Object>();
109 14 kreverch
                zProperties zPropertyFileConf = new zProperties();
110 14 kreverch
                permitValueFileConf.clear();
111 14 kreverch
                zPropertyFileConf.setNameProperty("fileconf");
112 14 kreverch
                zPropertyFileConf.setLabelProperty("Configuration File");
113 14 kreverch
                zPropertyFileConf.setType("noupdateable");
114 14 kreverch
                zPropertyFileConf.setValue("");
115 14 kreverch
                zPropertyFileConf.setPermitValue(null);
116 14 kreverch
                zPropertyFileConf.setMultivalues(null);
117 14 kreverch
                zSchedulerProperties.put("fileconf", zPropertyFileConf);
118 14 kreverch
119 14 kreverch
                Hashtable<Object, Object> permitValueNameReplica = new Hashtable<Object, Object>();
120 14 kreverch
                zProperties zPropertyNameReplica = new zProperties();
121 14 kreverch
                permitValueNameReplica.clear();
122 14 kreverch
                zPropertyNameReplica.setNameProperty("namereplica");
123 14 kreverch
                zPropertyNameReplica.setLabelProperty("Replica Name");
124 14 kreverch
                zPropertyNameReplica.setType("noupdateable");
125 14 kreverch
                zPropertyNameReplica.setValue("");
126 14 kreverch
                zPropertyNameReplica.setPermitValue(null);
127 14 kreverch
                zPropertyNameReplica.setMultivalues(null);
128 14 kreverch
                zSchedulerProperties.put("namereplica", zPropertyNameReplica);
129 14 kreverch
130 14 kreverch
                Hashtable<Object, Object> permitValueNbReplicas = new Hashtable<Object, Object>();
131 14 kreverch
                zProperties zPropertyNbReplicas = new zProperties();
132 14 kreverch
                permitValueNbReplicas.clear();
133 14 kreverch
                zPropertyNbReplicas.setNameProperty("nbreplica");
134 14 kreverch
                zPropertyNbReplicas.setLabelProperty("Number replicas to keep");
135 14 kreverch
                zPropertyNbReplicas.setType("freeentry");
136 14 kreverch
                zPropertyNbReplicas.setValue("");
137 14 kreverch
                zPropertyNbReplicas.setPermitValue(null);
138 14 kreverch
                zPropertyNbReplicas.setMultivalues(null);
139 14 kreverch
                zSchedulerProperties.put("nbreplica", zPropertyNbReplicas);
140 14 kreverch
141 14 kreverch
                Hashtable<Object, Object> permitValueLastSnapshotReplicated = new Hashtable<Object, Object>();
142 14 kreverch
                zProperties zPropertyLastSnapshotReplicated = new zProperties();
143 14 kreverch
                permitValueLastSnapshotReplicated.clear();
144 14 kreverch
                zPropertyLastSnapshotReplicated.setNameProperty("lastsnapshotreplicated");
145 14 kreverch
                zPropertyLastSnapshotReplicated.setLabelProperty("Last Snapshot Replicated");
146 14 kreverch
                zPropertyLastSnapshotReplicated.setType("noupdateable");
147 14 kreverch
                zPropertyLastSnapshotReplicated.setValue("");
148 14 kreverch
                zPropertyLastSnapshotReplicated.setPermitValue(null);
149 14 kreverch
                zPropertyLastSnapshotReplicated.setMultivalues(null);
150 14 kreverch
                zSchedulerProperties.put("lastsnapshotreplicated", zPropertyLastSnapshotReplicated);
151 14 kreverch
152 14 kreverch
                Hashtable<Object, Object> permitValueMinutesOfSReplicas = new Hashtable<Object, Object>();
153 14 kreverch
                zProperties zPropertyMinutesOfSReplicas = new zProperties();
154 14 kreverch
                permitValueMinutesOfSReplicas.clear();
155 14 kreverch
                zPropertyMinutesOfSReplicas.setNameProperty("minutesofreplicas");
156 14 kreverch
                zPropertyMinutesOfSReplicas.setLabelProperty("Minutes of replication [0-60]");
157 14 kreverch
                zPropertyMinutesOfSReplicas.setType("nofreeentry");
158 14 kreverch
                zPropertyMinutesOfSReplicas.setValue("");
159 14 kreverch
                zPropertyMinutesOfSReplicas.setPermitValue(cronMinute);
160 14 kreverch
                zPropertyMinutesOfSReplicas.setMultivalues(null);
161 14 kreverch
                zSchedulerProperties.put("minutesofreplicas", zPropertyMinutesOfSReplicas);
162 14 kreverch
163 14 kreverch
                Hashtable<Object, Object> permitValueReplicaServer = new Hashtable<Object, Object>();
164 14 kreverch
                zProperties zPropertyReplicaServer = new zProperties();
165 14 kreverch
                permitValueReplicaServer.clear();
166 14 kreverch
                zPropertyReplicaServer.setNameProperty("server");
167 14 kreverch
                zPropertyReplicaServer.setLabelProperty("Server For Replication");
168 14 kreverch
                zPropertyReplicaServer.setType("nofreeentry");
169 14 kreverch
                zPropertyReplicaServer.setValue("");
170 14 kreverch
                zPropertyReplicaServer.setPermitValue(null);
171 14 kreverch
                zPropertyReplicaServer.setMultivalues(null);
172 14 kreverch
                zSchedulerProperties.put("server", zPropertyReplicaServer);
173 14 kreverch
174 14 kreverch
                Hashtable<Object, Object> permitValueReplicaPool = new Hashtable<Object, Object>();
175 14 kreverch
                zProperties zPropertyReplicaPool = new zProperties();
176 14 kreverch
                permitValueReplicaPool.clear();
177 14 kreverch
                zPropertyReplicaPool.setNameProperty("replicapool");
178 14 kreverch
                zPropertyReplicaPool.setLabelProperty("Pool For Replication");
179 14 kreverch
                zPropertyReplicaPool.setType("nofreeentry");
180 14 kreverch
                zPropertyReplicaPool.setValue("");
181 14 kreverch
                zPropertyReplicaPool.setPermitValue(null);
182 14 kreverch
                zPropertyReplicaPool.setMultivalues(null);
183 14 kreverch
                zSchedulerProperties.put("replicapool", zPropertyReplicaPool);
184 14 kreverch
185 14 kreverch
186 14 kreverch
                Hashtable<Object, Object> permitValueReplicasHours = new Hashtable<Object, Object>();
187 14 kreverch
                zProperties zPropertyReplicasHours = new zProperties();
188 14 kreverch
                permitValueReplicasHours.clear();
189 14 kreverch
                zPropertyReplicasHours.setNameProperty("hoursofreplicas");
190 14 kreverch
                zPropertyReplicasHours.setLabelProperty("Hour of replication [0-23]");
191 14 kreverch
                zPropertyReplicasHours.setType("nofreeentry");
192 14 kreverch
                zPropertyReplicasHours.setValue("");
193 14 kreverch
                zPropertyReplicasHours.setPermitValue(cronHour);
194 14 kreverch
                zPropertyReplicasHours.setMultivalues(null);
195 14 kreverch
                zSchedulerProperties.put("hoursofreplicas", zPropertyReplicasHours);
196 14 kreverch
197 14 kreverch
                Hashtable<Object, Object> permitValueDayOfWeekReplicas = new Hashtable<Object, Object>();
198 14 kreverch
                zProperties zPropertyDayOfWeekReplicas = new zProperties();
199 14 kreverch
                permitValueDayOfWeekReplicas.clear();
200 14 kreverch
                zPropertyDayOfWeekReplicas.setNameProperty("dayofweekreplicas");
201 14 kreverch
                zPropertyDayOfWeekReplicas.setLabelProperty("Day of week of Replication [0-6] 0 for Sunday");
202 14 kreverch
                zPropertyDayOfWeekReplicas.setType("nofreeentry");
203 14 kreverch
                zPropertyDayOfWeekReplicas.setValue("");
204 14 kreverch
                zPropertyDayOfWeekReplicas.setPermitValue(cronDayOfWeek);
205 14 kreverch
                zPropertyDayOfWeekReplicas.setMultivalues(null);
206 14 kreverch
                zSchedulerProperties.put("dayofweekreplicas", zPropertyDayOfWeekReplicas);
207 14 kreverch
208 14 kreverch
                Hashtable<Object, Object> permitValueDayOfMonthReplicas = new Hashtable<Object, Object>();
209 14 kreverch
                zProperties zPropertyDayOfMonthReplicas = new zProperties();
210 14 kreverch
                permitValueDayOfMonthReplicas.clear();
211 14 kreverch
                zPropertyDayOfMonthReplicas.setNameProperty("dayofmonthreplicas");
212 14 kreverch
                zPropertyDayOfMonthReplicas.setLabelProperty("Day of Month of Snapshots [1-30]");
213 14 kreverch
                zPropertyDayOfMonthReplicas.setType("nofreeentry");
214 14 kreverch
                zPropertyDayOfMonthReplicas.setValue("");
215 14 kreverch
                zPropertyDayOfMonthReplicas.setPermitValue(cronDayOfMonth);
216 14 kreverch
                zPropertyDayOfMonthReplicas.setMultivalues(null);
217 14 kreverch
                zSchedulerProperties.put("dayofmonthreplicas", zPropertyDayOfMonthReplicas);
218 14 kreverch
219 14 kreverch
                Hashtable<Object, Object> permitValueMonthReplicas = new Hashtable<Object, Object>();
220 14 kreverch
                zProperties zPropertyMonthReplicas = new zProperties();
221 14 kreverch
                permitValueMonthReplicas.clear();
222 14 kreverch
                zPropertyMonthReplicas.setNameProperty("monthreplicas");
223 14 kreverch
                zPropertyMonthReplicas.setLabelProperty("Month");
224 14 kreverch
                zPropertyMonthReplicas.setType("nofreeentry");
225 14 kreverch
                zPropertyMonthReplicas.setValue("");
226 14 kreverch
                zPropertyMonthReplicas.setPermitValue(cronMonth);
227 14 kreverch
                zPropertyMonthReplicas.setMultivalues(null);
228 14 kreverch
                zSchedulerProperties.put("monthreplicas", zPropertyMonthReplicas);
229 14 kreverch
230 14 kreverch
                /*Hashtable<Object, Object> permitValueFreqSnapshots = new Hashtable<Object, Object>();
231 14 kreverch
                zProperties zPropertyFreqSnapshots = new zProperties();
232 14 kreverch
                permitValueFreqSnapshots.clear();
233 14 kreverch
                zPropertyFreqSnapshots.setNameProperty("frequency");
234 14 kreverch
                zPropertyFreqSnapshots.setLabelProperty("Frequency");
235 14 kreverch
                zPropertyFreqSnapshots.setType("internaluse");
236 14 kreverch
                zPropertyFreqSnapshots.setValue("");
237 14 kreverch
                zPropertyFreqSnapshots.setPermitValue(null);
238 14 kreverch
                zSchedulerProperties.put("frequency", zPropertyFreqSnapshots);*/
239 14 kreverch
240 14 kreverch
241 14 kreverch
        }
242 14 kreverch
243 14 kreverch
        public void formatCronValue(String frequency, String DaySnapshot){
244 14 kreverch
                String cronValue ="";
245 14 kreverch
246 14 kreverch
                if (frequency.contains("Hours")){
247 14 kreverch
                        this.zSchedulerProperties.get("minutesofsnaphots").setValue("*");
248 14 kreverch
                        this.zSchedulerProperties.get("hoursofsnaphots").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Hours", ""));
249 14 kreverch
                        this.zSchedulerProperties.get("dayofmonthsnapshots").setValue("*");
250 14 kreverch
                        this.zSchedulerProperties.get("monthsnapshots").setValue("*");
251 14 kreverch
                        this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
252 14 kreverch
253 14 kreverch
                }else{
254 14 kreverch
                        this.zSchedulerProperties.get("hour").setValue(this.zSchedulerProperties.get("time").getValue().split(":")[0]);
255 14 kreverch
                        this.zSchedulerProperties.get("minutes").setValue(this.zSchedulerProperties.get("time").getValue().split(":")[1]);
256 14 kreverch
                        if (frequency.contains("Days")){
257 14 kreverch
                                this.zSchedulerProperties.get("dayofmonthsnapshots").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Days", ""));
258 14 kreverch
                                this.zSchedulerProperties.get("monthsnapshots").setValue("*");
259 14 kreverch
                                this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
260 14 kreverch
261 14 kreverch
                        }else{
262 14 kreverch
                                if (frequency.contains("Months")){
263 14 kreverch
                                        this.zSchedulerProperties.get("dayofmonthsnapshots").setValue(this.zSchedulerProperties.get("dayofmonthsnapshots").getValue());
264 14 kreverch
                                        this.zSchedulerProperties.get("monthsnapshots").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Months", ""));
265 14 kreverch
                                        this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
266 14 kreverch
267 14 kreverch
                                }else{
268 14 kreverch
                                        if (frequency.contains("Hour")){
269 14 kreverch
                                                this.zSchedulerProperties.get("minutes").setValue("*");
270 14 kreverch
                                                this.zSchedulerProperties.get("hours").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Hour", ""));
271 14 kreverch
                                                this.zSchedulerProperties.get("dayofmonthsnapshots").setValue("*");
272 14 kreverch
                                                this.zSchedulerProperties.get("monthsnapshots").setValue("*");
273 14 kreverch
                                                this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
274 14 kreverch
                                        }else{
275 14 kreverch
                                                if (frequency.contains("Day")){
276 14 kreverch
                                                        this.zSchedulerProperties.get("dayofmonthsnapshots").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Day", ""));
277 14 kreverch
                                                        this.zSchedulerProperties.get("monthsnapshots").setValue("*");
278 14 kreverch
                                                        this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
279 14 kreverch
                                                }else{
280 14 kreverch
                                                        if (frequency.contains("Month")){
281 14 kreverch
                                                                this.zSchedulerProperties.get("dayofmonthsnapshots").setValue(this.zSchedulerProperties.get("dayofmonthsnapshots").getValue());
282 14 kreverch
                                                                this.zSchedulerProperties.get("monthsnapshots").setValue("*/"+frequency.replaceAll("Every", "").replaceAll("Month", ""));
283 14 kreverch
                                                                this.zSchedulerProperties.get("dayofweeksnapshots").setValue("*");
284 14 kreverch
                                                        }
285 14 kreverch
                                                }
286 14 kreverch
                                        }
287 14 kreverch
                                }
288 14 kreverch
                        }
289 14 kreverch
                }
290 14 kreverch
        }
291 14 kreverch
292 14 kreverch
        public static int getIntDayOfWeek(String dayOfWeek)
293 14 kreverch
        {
294 14 kreverch
                try
295 14 kreverch
                {
296 14 kreverch
                        DateFormat formatter ;
297 14 kreverch
                        Date date ;
298 14 kreverch
                        formatter = new SimpleDateFormat("EEE");
299 14 kreverch
                        date = (Date)formatter.parse(dayOfWeek);
300 14 kreverch
                        GregorianCalendar g = new GregorianCalendar();
301 14 kreverch
                        g.setTime(date);
302 14 kreverch
                        return g.get(Calendar.DAY_OF_WEEK);
303 14 kreverch
                }
304 14 kreverch
                catch (ParseException e)
305 14 kreverch
                {
306 14 kreverch
                        System.out.println("Exception :"+e);
307 14 kreverch
                }
308 14 kreverch
                return 0;
309 14 kreverch
        }
310 14 kreverch
311 14 kreverch
312 14 kreverch
313 14 kreverch
314 14 kreverch
315 14 kreverch
}