OSDN Git Service

Initial commit
[ultramonkey-l7/l7gui.git] / src / src / org / ultramonkey / l7 / controller / L7vsConfController.java
1 package org.ultramonkey.l7.controller;
2
3 /**
4  * l7vs config file controller,
5  *      Confing file reader and writer.
6  * <p>class L7vsConfController</p>
7  * <p>Copyright(c) NTT COMWARE 2008</p>
8  * @author nakai.
9  */
10
11 public class L7vsConfController {
12
13     /**
14      * l7vs config file position and name.
15      */
16     protected static String FILENAME = "/etc/l7vs/l7vs.cf";
17
18     protected static String LOGGER_MASTER_KEY = "logger";
19
20     protected static String L7VSADM_MASTER_KEY = "l7vsadm";
21
22     protected static String REPLICATION_MASTER_KEY = "replication";
23
24     protected static String SNMPAGENT_MASTER_KEY = "snmpagent";
25
26     /**
27      * l7vsd log File Name key
28      */
29     protected static String LB_LOG_FILENAME_KEY = "l7vsd_log_filename";
30
31     /**
32      *  l7vsd log rotate key
33      */
34     protected static String LB_LOG_ROTATION_KEY = "l7vsd_rotation";
35
36     /**
37      * l7vsd log max backup index key
38      */
39     protected static String LB_LOG_MAXBACKUPINDEX_KEY = "l7vsd_max_backup_index";
40
41     /**
42      * l7vsd log rotate timing key
43      */
44     protected static String LB_LOG_ROTATE_TIMING_KEY = "l7vsd_rotation_timing";
45
46     /**
47      * l7vsd log rotate timing type key
48      */
49     protected static String LB_LOG_ROTATE_TIMING_VALUE_KEY = "l7vsd_rotation_timing_value";
50
51     /**
52      * l7vsd log file size max value key
53      */
54     protected static String LB_LOG_MAXFILESIZE_KEY = "l7vsd_max_filesize";
55
56     /**
57      * l7vsd log level for network category key
58      */
59     protected static String LB_LOGCATEGORY_NETWORK_KEY = "l7vsd_network";
60
61     /**
62      * l7vsd log level for network.bandwidth category key
63      */
64     protected static String LB_LOGCATEGORY_NETWORK_BANDWIDTH_KEY = "l7vsd_network.bandwidth";
65
66     /**
67      * k7vsd log level for network.connection category key
68      */
69     protected static String LB_LOGCATEGORY_NETWORK_NUM_CONNECTION_KEY = "l7vsd_network.num_connection";
70
71     /**
72      * l7vsd log level for network qos category key
73      */
74     protected static String LB_LOGCATEGORY_NETWORK_QOS_KEY = "l7vsd_network.qos";
75
76     /**
77      * l7vsd log level for virtual service category key
78      */
79     protected static String LB_LOGCATEGORY_VIRTUALSERVICE_KEY = "l7vsd_virtual_service";
80
81     /**
82      * l7vsd log level for real server category key
83      */
84     protected static String LB_LOGCATEOGRY_REALSERVER_KEY = "l7vsd_real_server";
85
86     /**
87      * l7vsd log level for sorry server category key
88      */
89     protected static String LB_LOGCATEOGRY_SORRYSERVER_KEY = "l7vsd_sorry_server";
90
91     /**
92      * l7vsd log level for realserver balancing category key
93      */
94     protected static String LB_LOGCATEOGRY_REALSERVER_BALANCING_KEY = "l7vsd_real_server.balancing";
95
96     /**
97      * l7vsd log level for replication category key
98      */
99     protected static String LB_LOGCATEOGRY_REPLICATION_KEY = "l7vsd_replication";
100
101     /**
102      * l7vsd log level for start and stop messege category key
103      */
104     protected static String LB_LOGCATEOGRY_STARTSTOP_KEY = "l7vsd_start_stop";
105
106     /**
107      * l7vsd log level for system category key
108      */
109     protected static String LB_LOGCATEOGRY_SYSTEM_KEY = "l7vsd_system";
110
111     /**
112      * l7vsd log level for memory in system category key
113      */
114     protected static String LB_LOGCATEOGRY_SYSTEMMEMORY_KEY = "l7vsd_system.memory";
115
116     /**
117      * l7vsd log level for socket category key
118      */
119     protected static String LB_LOGCATEOGRY_SYSTEMSOCKET_KEY = "l7vsd_system.socket";
120
121     /**
122      * l7vsd log level for signal category key
123      */
124     protected static String LB_LOGCATEOGRY_SYSTEMSIGNAL_KEY = "l7vsd_system.signal";
125
126     /**
127      * l7vsd log level for environment key
128      */
129     protected static String LB_LOGCATEOGRY_ENVIROMENT_KEY = "l7vsd_environment";
130
131     /**
132      * l7vsd log level for environment parameter category key
133      */
134     protected static String LB_LOGCATEOGRY_ENVIROMENTPARAMTER_KEY = "l7vsd_environment.parameter";
135
136     /**
137      * l7vsd log level for logger category key
138      */
139     protected static String LB_LOGCATEGORY_LOGGER_KEY = "l7vsd_logger";
140
141     /**
142      * l7vsd log level for parameter category key
143      */
144     protected static String LB_LOGCATEGORY_PARAMTER = "l7vsd_parameter";
145
146     /**
147      * l7vsd log level for event category key
148      */
149     protected static String LB_LOGCATEGORY_EVENT_KEY = "l7vsd_event";
150
151     /**
152      * l7vsd log level for schedule category key
153      */
154     protected static String LB_LOGCATEGORY_SCHEDULE_KEY = "l7vsd_schedule";
155
156     /**
157      * l7vsd log level for program category key
158      */
159     protected static String LB_LOGCATEGORY_PROGRAM_KEY = "l7vsd_program";
160
161     /**
162      * l7vsd log level for protocol category key
163      */
164     protected static String LB_LOGCATEGORY_PROTOCOL_KEY = "l7vsd_protocol";
165
166     /**
167      * l7vsd log level for module category key
168      */
169     protected static String LB_LOGCATEGORY_MODULE_KEY = "l7vsd_module";
170
171     /**
172      * l7vsadm log file name key
173      */
174     protected static String ADM_LOG_FILENAME_KEY = "l7vsadm_log_filename";
175
176     /**
177      * l7vsadm log rotation key
178      */
179     protected static String ADM_LOG_ROTATION_KEY = "l7vsadm_rotation";
180
181     /**
182      * l7vsadm log maxbackup indexn key
183      */
184     protected static String ADM_LOG_MAXBACKUPINDEX_KEY = "l7vsadm_max_backup_index";
185
186     /**
187      * l7vsadm log rotate timing key
188      */
189     protected static String ADM_LOG_ROTATE_TIMING_KEY = "l7vsadm_rotation_timing";
190
191     /**
192      * l7vsadm log rotate timing 
193      */
194     protected static String ADM_LOG_ROTATE_TIMING_VALUE_KEY = "l7vsadm_rotation_timing_value";
195
196     /**
197      * l7vsadm log maxfilesize key
198      */
199     protected static String ADM_LOG_MAXFILESIZE_KEY = "l7vsadd_max_filesize";
200
201     /**
202      * l7vsadm log level for pase key
203      */
204     protected static String ADM_LOGCATEGORY_PARSE_KEY = "l7vsadm_parse";
205
206     /**
207      * l7vsadm log level for operate key
208      */
209     protected static String ADM_LOGCATEGORY_OPERATE_KEY = "l7vsadm_operate";
210
211     /**
212      * l7vsadm log level for communicate key
213      */
214     protected static String ADM_LOGCATEGORY_COMMUNICATE_KEY = "l7vsadm_communicate";
215
216     /**
217      * l7vsadm log level for config result key
218      */
219     protected static String ADM_LOGCATEGORY_CONFIG_RESULT_KEY = "l7vsadm_config_result";
220
221     /**
222      * l7vsadm log level for common key
223      */
224     protected static String ADM_LOGCATEOGRY_COMMON = "l7vsadm_common";
225
226     /**
227      * l7vsadm logl level for logger key
228      */
229     protected static String ADM_LOGCATEGORY_LOGGER = "l7vsadm_logger";
230
231     /**
232      * l7vsadm log level for parameter key
233      */
234     protected static String ADM_LOGCATEGORY_PARAMETER = "l7vsadm_parameter";
235
236     /**
237      * l7vsadm log level for protocol key
238      */
239     protected static String ADM_LOGCATEOGRY_PROTOCOL = "l7vsadm_protocol";
240
241     /**
242      * l7vsadm log level for module key
243      */
244     protected static String ADM_LOGCATEOGRY_MODULE = "l7vsadm_module";
245
246     /**
247      * snmp log filename kay
248      */
249     protected static String SNMP_LOG_FILENAME_KEY = "snmpagent_log_filename";
250
251     /**
252      * snmp log rotatetion key
253      */
254     protected static String SNMP_LOG_ROTATION_KEY = "snmpagent_rotation";
255
256     /**
257      * snmp max backup num key
258      */
259     protected static String SNMP_LOG_MAXBACKUPINDEX_KEY = "snmpagent_max_backup_index";
260
261     /**
262      * snmp log rotate timing key
263      */
264     protected static String SNMP_LOG_ROTATE_TIMING_KEY = "snmpagent_rotation_timing";
265
266     /**
267      * snmp log rotate timing value key
268      */
269     protected static String SNMP_LOG_ROTATE_TIMING_VALUE_KEY = "snmpagent_rotation_timing_value";
270
271     /**
272      * snmp log max filesize key
273      */
274     protected static String SNMP_MAX_FILESIZE_KEY = "snmpagent_max_filesize";
275
276     /**
277      * snmp log level for start stop message category key
278      */
279     protected static String SNMP_LOGCATEOGRY_STARTSTOP_KEY = "snmpagent_start_stop";
280
281     /**
282      * snmp log level for manager recive category key
283      */
284     protected static String SNMP_LOGCATEGORY_MANAGER_RECEIVE_KEY = "snmpagent_manager_receive";
285
286     /**
287      * snmp log level for manager send category key
288      */
289     protected static String SNMP_LOGCATEGORY_MANAGER_SEND_KEY = "snmpagent_manager_send";
290
291     /**
292      * snmp log level for l7vsd recive category key
293      */
294     protected static String SNMP_LOGCATEGORY_L7VSD_RECEIVE_KEY = "snmpagent_l7vsd_receive";
295
296     /**
297      * snmp log level for l7vsd send category key
298      */
299     protected static String SNMP_LOGCATEGORY_L7VSD_SEND_KEY = "snmpagent_l7vsd_send";
300
301     /**
302      * snmp log level for logger category key
303      */
304     protected static String SNMP_LOGCATEGORY_LOGGER = "snmpagent_logger";
305
306     /**
307      * snmp log level for parameter category key
308      */
309     protected static String SNMP_LOGCATEGORY_PARAMETER = "snmpagent_parameter";
310
311     /**
312      * l7vsadm command interval key
313      */
314     protected static String ADM_CMD_INTERVAL_KEY = "cmd_interval";
315
316     /**
317      * l7vsadm command retry count key
318      */
319     protected static String ADM_CMD_COUNT_KEY = "cmd_count";
320
321     /**
322      * l7vsadm connection retry interval timing key
323      */
324     protected static String ADM_CON_INTERVAL_KEY = "con_interval";
325
326     /**
327      * l7vsadm connection retry count key
328      */
329     protected static String ADM_CON_COUNT_KEY = "con_count";
330
331     /**
332      * l7vsd replication target ipaddress key
333      */
334     protected static String REPLICATION_IPADDR_KEY = "ip_addr";
335
336     /**
337      * l7vsd replication using portno key
338      */
339     protected static String REPLICATION_SERVICENAME_KEY = "service_name";
340
341     /**
342      * l7vsd replication using NIC kay
343      */
344     protected static String REPLICATION_NIC_KEY = "nic";
345
346     /**
347      * l7vsd replication interval timing key
348      */
349     protected static String REPLICATION_INTERVAL_KEY = "interval";
350
351     /**
352      * l7vsd replication interval timing key
353      */
354     protected static String REPLICATION_COMPULSORILY_INTERVAL_KEY = "compulsorily_interval";
355
356     /**
357      * l7vsd replication component base key
358      */
359     protected static String REPLICATION_COMPONENT_ID_BASE_KEY = "cmponent_id_";
360
361     /**
362      * l7vsd replication component size base key
363      */
364     protected static String REPLICATION_COMPONENT_SIZE_BASE_KEY = "cmponent_size_";
365
366     /**
367      * SNMPAgent using NIC key
368      */
369     protected static String SNMPAGENT_NIC_KEY = "nic";
370
371     /**
372      * SNMPAgent using ipaddress key
373      */
374     protected static String SNMPAGENT_IPADDR_KEY = "ip_addr";
375
376     /**
377      * SNMPAgent using service port key
378      */
379     protected static String SNMPAGENT_PORT_KEY = "port";
380
381     /**
382      * SNMPAgent using interval key
383      */
384     protected static String SNMPAGENT_INTERVAL_KEY = "interval";
385
386     /**
387      * SNMPAgent using status key(this value is temp)
388      */
389     protected static String SNMPAGENT_STATUS_KEY = "status";
390
391     /**
392      * l7vsd replication using max component num
393      */
394     protected static int MAX_REPLICATION_COMPONENT_COUNT = 99;
395
396     /**
397      * pair class
398      * <p>class pair</p>
399      * <p>Copyright(c) NTT COMWARE 2008</p>
400      * @author kubota
401      */
402     protected class Pair<E, N> {
403         protected E elementFirst;
404
405         protected N elementSecond;
406
407         public Pair(E firstIn, N secondIn) {
408             elementFirst = firstIn;
409             elementSecond = secondIn;
410         }
411
412         public void set(E firstIn, N secondIn) {
413             elementFirst = firstIn;
414             elementSecond = secondIn;
415         }
416
417         public E first() {
418             return elementFirst;
419         }
420
421         public N second() {
422             return elementSecond;
423         }
424     }
425
426     protected Pair<String, String> paseKey(String inLine) {
427         if (inLine == null)
428             return null;
429         int pos = inLine.indexOf("=");
430         if (pos == -1)
431             return new Pair(inLine, "");
432         String first = inLine.substring(0, pos);
433         String second = inLine.substring(pos + 1, inLine.length());
434         if (first.indexOf('#') != -1)
435             return new Pair<String, String>("", "");
436         if (second.indexOf('#') != -1) {
437             pos = second.indexOf('#');
438             second = second.substring(0, pos);
439         }
440         first = first.trim();
441         second = second.trim();
442         if (second.matches("^\".*\"$"))
443             second = second.substring(1, second.length() - 1);
444         Pair<String, String> pair = new Pair<String, String>(first, second);
445         return pair;
446     }
447
448     /**
449      * component use set.
450      * <p>class ComponentSet</p>
451      * <p>Copyright(c) NTT COMWARE 2008</p>
452      * @author kubota
453      */
454     protected class ComponentSet {
455         public Pair<String, String> idPair;
456
457         public Pair<String, String> sizePair;
458     }
459
460     protected static LogData.LogLevel convStringToLogLevel(String instr)
461                     throws org.ultramonkey.l7.model.FileNotReadException {
462         if (instr == null) {
463             org.ultramonkey.l7.model.FileNotReadException exception = new org.ultramonkey.l7.model.FileNotReadException();
464             exception
465                             .setErrMessage("function L7vsConfController::convStringToLogLevel(String) param is null");
466             throw exception;
467         }
468         if (instr.equals("debug"))
469             return LogData.LogLevel.DEBUG;
470         else if (instr.equals("DEBUG"))
471             return LogData.LogLevel.DEBUG;
472         else if (instr.equals("error"))
473             return LogData.LogLevel.ERROR;
474         else if (instr.equals("ERROR"))
475             return LogData.LogLevel.ERROR;
476         else if (instr.equals("fatal"))
477             return LogData.LogLevel.FATAL;
478         else if (instr.equals("FATAL"))
479             return LogData.LogLevel.FATAL;
480         else if (instr.equals("info"))
481             return LogData.LogLevel.INFO;
482         else if (instr.equals("INFO"))
483             return LogData.LogLevel.INFO;
484         else if (instr.equals("warn"))
485             return LogData.LogLevel.WARN;
486         else if (instr.endsWith("WARN"))
487             return LogData.LogLevel.WARN;
488         org.ultramonkey.l7.model.FileNotReadException exception = new org.ultramonkey.l7.model.FileNotReadException();
489         exception.setErrMessage("");
490         throw exception;
491     }
492
493     protected static String convLogLevelToLogString(LogData.LogLevel inlevel) {
494         if (inlevel == LogData.LogLevel.DEBUG)
495             return "\"debug\"";
496         if (inlevel == LogData.LogLevel.ERROR)
497             return "\"error\"";
498         if (inlevel == LogData.LogLevel.FATAL)
499             return "\"fatal\"";
500         if (inlevel == LogData.LogLevel.INFO)
501             return "\"info\"";
502         if (inlevel == LogData.LogLevel.WARN)
503             return "\"warn\"";
504         return "";
505     }
506
507     // list to data for LoggerParameter.
508     protected void readLoggerParameter(L7vsConfData data,
509                     java.util.LinkedList<String> inList)
510                     throws org.ultramonkey.l7.model.FileNotReadException {
511         if (data == null || inList == null)
512             return;
513         for (java.util.Iterator<String> itr = inList.iterator(); itr.hasNext();) {
514             String buffer = itr.next();
515             Pair<String, String> pair = paseKey(buffer);
516             if (pair.first().equals(LB_LOG_FILENAME_KEY) )
517                 data.logger.lbLog.fileName = pair.second();
518             else if (pair.first().equals(LB_LOG_ROTATION_KEY))
519                 data.logger.lbLog.rotation = pair.second();
520             else if (pair.first().equals(LB_LOG_MAXBACKUPINDEX_KEY) ) {
521                 try {
522                     data.logger.lbLog.maxBackupIndex = Integer.parseInt(pair.second());
523                 } catch (java.lang.NumberFormatException e) {
524                     data.logger.lbLog.maxBackupIndex = 0;
525                 }
526               }
527             else if (pair.first().equals(LB_LOG_ROTATE_TIMING_KEY))
528                 data.logger.lbLog.rotationTiming = pair.second();
529             else if (pair.first().equals(LB_LOG_ROTATE_TIMING_VALUE_KEY))
530                 data.logger.lbLog.rotationTimingValue = pair.second();
531             else if (pair.first().equals(LB_LOG_MAXFILESIZE_KEY))
532                 data.logger.lbLog.maxFileSize = pair.second();
533             else if (pair.first().equals(LB_LOGCATEGORY_NETWORK_KEY) )
534                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_NETWORK,
535                                 convStringToLogLevel(pair.second()));
536             else if (pair.first().equals(LB_LOGCATEGORY_NETWORK_BANDWIDTH_KEY))
537                 data.logger.lbLog.logLevel.put(
538                                 LogData.LogCategory.L7VSD_NETWORK_BANDWIDTH,
539                                 convStringToLogLevel(pair.second()));
540             else if (pair.first().equals(LB_LOGCATEGORY_NETWORK_NUM_CONNECTION_KEY))
541                 data.logger.lbLog.logLevel.put(
542                                 LogData.LogCategory.L7VSD_NETWORK_NUM_CONNECTION,
543                                 convStringToLogLevel(pair.second()));
544             else if (pair.first().equals(LB_LOGCATEGORY_NETWORK_QOS_KEY))
545                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_NETWORK_QOS,
546                                 convStringToLogLevel(pair.second()));
547             else if (pair.first().equals(LB_LOGCATEGORY_VIRTUALSERVICE_KEY))
548                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_VIRTUAL_SERVICE,
549                                 convStringToLogLevel(pair.second()));
550             else if (pair.first().equals(LB_LOGCATEOGRY_REALSERVER_KEY))
551                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_REAL_SERVER,
552                                 convStringToLogLevel(pair.second()));
553             else if (pair.first().equals(LB_LOGCATEOGRY_SORRYSERVER_KEY))
554                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SORRY_SERVER,
555                                 convStringToLogLevel(pair.second()));
556             else if (pair.first().equals(LB_LOGCATEOGRY_REALSERVER_BALANCING_KEY))
557                 data.logger.lbLog.logLevel.put(
558                                 LogData.LogCategory.L7VSD_REAL_SERVER_BALANCING,
559                                 convStringToLogLevel(pair.second()));
560             else if (pair.first().equals(LB_LOGCATEOGRY_REPLICATION_KEY))
561                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_REPLICATION,
562                                 convStringToLogLevel(pair.second()));
563             else if (pair.first().equals(LB_LOGCATEOGRY_STARTSTOP_KEY))
564                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_START_STOP,
565                                 convStringToLogLevel(pair.second()));
566             else if (pair.first().equals(LB_LOGCATEOGRY_SYSTEM_KEY))
567                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SYSTEM,
568                                 convStringToLogLevel(pair.second()));
569             else if (pair.first().equals(LB_LOGCATEOGRY_SYSTEMMEMORY_KEY))
570                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SYSTEM_MEMORY,
571                                 convStringToLogLevel(pair.second()));
572             else if (pair.first().equals(LB_LOGCATEOGRY_SYSTEMSOCKET_KEY))
573                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SYSTEM_SOCKET,
574                                 convStringToLogLevel(pair.second()));
575             else if (pair.first().equals(LB_LOGCATEOGRY_SYSTEMSIGNAL_KEY))
576                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SYSTEM_SIGNAL,
577                                 convStringToLogLevel(pair.second()));
578             else if (pair.first().equals(LB_LOGCATEOGRY_ENVIROMENT_KEY))
579                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_ENVIRONMENT,
580                                 convStringToLogLevel(pair.second()));
581             else if (pair.first().equals(LB_LOGCATEOGRY_ENVIROMENTPARAMTER_KEY))
582                 data.logger.lbLog.logLevel.put(
583                                 LogData.LogCategory.L7VSD_ENVIRONMENT_PARAMETER,
584                                 convStringToLogLevel(pair.second()));
585             else if (pair.first().equals(LB_LOGCATEGORY_LOGGER_KEY))
586                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_LOGGER,
587                                 convStringToLogLevel(pair.second()));
588             else if (pair.first().equals(LB_LOGCATEGORY_PARAMTER))
589                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_PARAMETER,
590                                 convStringToLogLevel(pair.second()));
591             else if (pair.first().equals(LB_LOGCATEGORY_EVENT_KEY))
592                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_EVENT,
593                                 convStringToLogLevel(pair.second()));
594             else if (pair.first().equals(LB_LOGCATEGORY_SCHEDULE_KEY))
595                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_SCHEDULE,
596                                 convStringToLogLevel(pair.second()));
597             else if (pair.first().equals(LB_LOGCATEGORY_PROGRAM_KEY))
598                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_PROGRAM,
599                                 convStringToLogLevel(pair.second()));
600             else if (pair.first().equals(LB_LOGCATEGORY_PROTOCOL_KEY))
601                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_PROTOCOL,
602                                 convStringToLogLevel(pair.second()));
603             else if (pair.first().equals(LB_LOGCATEGORY_MODULE_KEY))
604                 data.logger.lbLog.logLevel.put(LogData.LogCategory.L7VSD_MODULE,
605                                 convStringToLogLevel(pair.second()));
606             else if (pair.first().equals(ADM_LOG_FILENAME_KEY))
607                 data.logger.admLog.fileName = pair.second();
608             else if (pair.first().equals(ADM_LOG_ROTATION_KEY))
609                 data.logger.admLog.rotation = pair.second();
610             else if (pair.first().equals(ADM_LOG_MAXBACKUPINDEX_KEY)) {
611                 try {
612                     data.logger.admLog.maxBackupIndex = Integer.parseInt(pair.second());
613                 } catch (java.lang.NumberFormatException e) {
614                     data.logger.admLog.maxBackupIndex = 0;
615                 }
616             } else if (pair.first().equals(ADM_LOG_ROTATE_TIMING_KEY))
617                 data.logger.admLog.rotationTiming = pair.second();
618             else if (pair.first().equals(ADM_LOG_ROTATE_TIMING_VALUE_KEY))
619                 data.logger.admLog.rotationTimingValue = pair.second();
620             else if (pair.first().equals(ADM_LOG_MAXFILESIZE_KEY))
621                 data.logger.admLog.maxFileSize = pair.second();
622             else if (pair.first().equals(ADM_LOGCATEGORY_PARSE_KEY))
623                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_PARSE,
624                                 convStringToLogLevel(pair.second()));
625             else if (pair.first().equals(ADM_LOGCATEGORY_OPERATE_KEY))
626                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_OPERATE,
627                                 convStringToLogLevel(pair.second()));
628             else if (pair.first().equals(ADM_LOGCATEGORY_COMMUNICATE_KEY))
629                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_COMMUNICATE,
630                                 convStringToLogLevel(pair.second()));
631             else if (pair.first().equals(ADM_LOGCATEGORY_CONFIG_RESULT_KEY))
632                 data.logger.admLog.logLevel.put(
633                                 LogData.LogCategory.L7VSADM_CONFIG_RESULT,
634                                 convStringToLogLevel(pair.second()));
635             else if (pair.first().equals(ADM_LOGCATEOGRY_COMMON))
636                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_COMMON,
637                                 convStringToLogLevel(pair.second()));
638             else if (pair.first().equals(ADM_LOGCATEGORY_LOGGER))
639                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_LOGGER,
640                                 convStringToLogLevel(pair.second()));
641             else if (pair.first().equals(ADM_LOGCATEGORY_PARAMETER))
642                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_PARAMETER,
643                                 convStringToLogLevel(pair.second()));
644             else if (pair.first().equals(ADM_LOGCATEOGRY_PROTOCOL))
645                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_PROTOCOL,
646                                 convStringToLogLevel(pair.second()));
647             else if (pair.first().equals(ADM_LOGCATEOGRY_MODULE))
648                 data.logger.admLog.logLevel.put(LogData.LogCategory.L7VSADM_MODULE,
649                                 convStringToLogLevel(pair.second()));
650             else if (pair.first().equals(SNMP_LOG_FILENAME_KEY))
651                 data.logger.snmpLog.fileName = pair.second();
652             else if (pair.first().equals(SNMP_LOG_ROTATION_KEY))
653                 data.logger.snmpLog.rotation = pair.second();
654             else if (pair.first().equals(SNMP_LOG_MAXBACKUPINDEX_KEY)) {
655                 try {
656                     data.logger.snmpLog.maxBackupIndex = Integer.parseInt(pair.second());
657                 } catch (java.lang.NumberFormatException e) {
658                     data.logger.snmpLog.maxBackupIndex = 0;
659                 }
660             } else if (pair.first().equals(SNMP_LOG_ROTATE_TIMING_KEY))
661                 data.logger.snmpLog.rotationTiming = pair.second();
662             else if (pair.first().equals(SNMP_LOG_ROTATE_TIMING_VALUE_KEY))
663                 data.logger.snmpLog.rotationTimingValue = pair.second();
664             else if (pair.first().equals(SNMP_MAX_FILESIZE_KEY))
665                 data.logger.snmpLog.maxFileSize = pair.second();
666             else if (pair.first().equals(SNMP_LOGCATEOGRY_STARTSTOP_KEY))
667                 data.logger.snmpLog.logLevel.put(
668                                 LogData.LogCategory.SNMPAGENT_START_STOP,
669                                 convStringToLogLevel(pair.second()));
670             else if (pair.first().equals(SNMP_LOGCATEGORY_MANAGER_RECEIVE_KEY))
671                 data.logger.snmpLog.logLevel.put(
672                                 LogData.LogCategory.SNMPAGENT_MANAGER_RECEIVE,
673                                 convStringToLogLevel(pair.second()));
674             else if (pair.first().equals(SNMP_LOGCATEGORY_MANAGER_SEND_KEY))
675                 data.logger.snmpLog.logLevel.put(
676                                 LogData.LogCategory.SNMPAGENT_MANAGER_SEND,
677                                 convStringToLogLevel(pair.second()));
678             else if (pair.first().equals(SNMP_LOGCATEGORY_L7VSD_RECEIVE_KEY))
679                 data.logger.snmpLog.logLevel.put(
680                                 LogData.LogCategory.SNMPAGENT_L7VSD_RECEIVE,
681                                 convStringToLogLevel(pair.second()));
682             else if (pair.first().equals(SNMP_LOGCATEGORY_L7VSD_SEND_KEY))
683                 data.logger.snmpLog.logLevel.put(
684                                 LogData.LogCategory.SNMPAGENT_L7VSD_SEND,
685                                 convStringToLogLevel(pair.second()));
686             else if (pair.first().equals(SNMP_LOGCATEGORY_LOGGER))
687                 data.logger.snmpLog.logLevel.put(LogData.LogCategory.SNMPAGENT_LOGGER,
688                                 convStringToLogLevel(pair.second()));
689             else if (pair.first().equals(SNMP_LOGCATEGORY_PARAMETER))
690                 data.logger.snmpLog.logLevel.put(LogData.LogCategory.SNMPAGENT_PARAMETER,
691                                 convStringToLogLevel(pair.second()));
692         }
693     }
694
695     protected void readAdmParameter(L7vsConfData data, java.util.LinkedList<String> inList)
696                     throws org.ultramonkey.l7.model.FileNotReadException {
697         if (data == null || inList == null)
698             return;
699         for (java.util.Iterator<String> itr = inList.iterator(); itr.hasNext();) {
700             String buffer = itr.next();
701             Pair<String, String> pair = paseKey(buffer);
702             if (pair.first().indexOf(ADM_CMD_INTERVAL_KEY) != -1) {
703                 try {
704                     data.admCmdInterval = Integer.parseInt(pair.second());
705                 } catch (java.lang.NumberFormatException e) {
706                     data.admCmdInterval = 0;
707                 }
708             } else if (pair.first().indexOf(ADM_CMD_COUNT_KEY) != -1) {
709                 try {
710                     data.admCmdCount = Integer.parseInt(pair.second());
711                 } catch (java.lang.NumberFormatException e) {
712                     data.admCmdCount = 0;
713                 }
714             } else if (pair.first().indexOf(ADM_CON_INTERVAL_KEY) != -1) {
715                 try {
716                     data.admConInterval = Integer.parseInt(pair.second());
717                 } catch (java.lang.NumberFormatException e) {
718                     data.admConInterval = 0;
719                 }
720             } else if (pair.first().indexOf(ADM_CON_COUNT_KEY) != -1) {
721                 try {
722                     data.admConCount = Integer.parseInt(pair.second());
723                 } catch (java.lang.NumberFormatException e) {
724                     data.admConCount = 0;
725                 }
726             }
727
728         }
729     }
730
731     protected void readSNMPAgentParameter(L7vsConfData data,
732                     java.util.LinkedList<String> inList)
733                     throws org.ultramonkey.l7.model.FileNotReadException {
734         if (data == null || inList == null)
735             return;
736         for (java.util.Iterator<String> itr = inList.iterator(); itr.hasNext();) {
737             String buffer = itr.next();
738             Pair<String, String> pair = paseKey(buffer);
739             if (pair.first().indexOf(SNMPAGENT_NIC_KEY) != -1)
740                 data.snmpNIC = pair.second();
741             else if (pair.first().indexOf(SNMPAGENT_IPADDR_KEY) != -1)
742                 data.snmpIpAddr = pair.second();
743             else if (pair.first().indexOf(SNMPAGENT_PORT_KEY) != -1)
744                 data.snmpPort = pair.second();
745             else if (pair.first().indexOf(SNMPAGENT_INTERVAL_KEY) != -1) {
746                 try {
747                     data.snmpInterval = Integer.parseInt(pair.second());
748                 } catch (java.lang.NumberFormatException e) {
749                     data.snmpInterval = 0;
750                 }
751             }
752         }
753     }
754
755     protected void readReplicationParameter(L7vsConfData data,
756                     java.util.LinkedList<String> inList)
757                     throws org.ultramonkey.l7.model.FileNotReadException {
758         if (data == null || inList == null)
759             return;
760         java.util.HashMap<String, Pair<String,String>> map = new java.util.HashMap<String, Pair<String,String>>();
761         for (java.util.Iterator<String> itr = inList.iterator(); itr.hasNext();) {
762             String buffer = itr.next();
763             Pair<String, String> pair = paseKey(buffer);
764             if (pair.first().indexOf(REPLICATION_IPADDR_KEY) != -1)
765                 data.replicationOtherNode.host = pair.second();
766             else if (pair.first().indexOf(REPLICATION_SERVICENAME_KEY) != -1)
767                 data.replicationOtherNode.port = pair.second();
768             else if (pair.first().indexOf(REPLICATION_NIC_KEY) != -1)
769                 data.replicationNic = pair.second();
770             else if (pair.first().indexOf(REPLICATION_INTERVAL_KEY) != -1 &&
771                         pair.first().indexOf(REPLICATION_COMPULSORILY_INTERVAL_KEY) == -1) {
772                 try {
773                     data.replicationInterval = Integer.parseInt(pair.second());
774                 } catch (java.lang.NumberFormatException e) {
775                     data.replicationInterval = 0;
776                 }
777             } else if (pair.first().indexOf(REPLICATION_COMPONENT_ID_BASE_KEY) != -1) {
778                 String number = pair.first().substring(REPLICATION_COMPONENT_ID_BASE_KEY.length(), REPLICATION_COMPONENT_ID_BASE_KEY.length() + 2);
779                 Pair<String,String> tmpPair = map.get(number);
780                 if( tmpPair == null )
781                         map.put(number, new Pair<String,String>(pair.second(), "" ));
782                 else
783                         tmpPair.set(pair.first(), tmpPair.second());
784             } else if (pair.first().indexOf(REPLICATION_COMPONENT_SIZE_BASE_KEY) != -1) {
785                 String number = pair.first().substring(REPLICATION_COMPONENT_SIZE_BASE_KEY.length(), REPLICATION_COMPONENT_SIZE_BASE_KEY.length() + 2);
786                 Pair<String,String> tmpPair = map.get(number);
787                 if( tmpPair == null )
788                         map.put(number, new Pair<String,String>("", pair.second()));
789                 else
790                         tmpPair.set(tmpPair.first(), pair.second());
791             }
792         }
793         //data puts COMPONENTID and SIZE
794         data.component = new java.util.HashMap<String, Integer>();
795         for (java.util.Iterator<java.util.Map.Entry<String, Pair<String,String>>> itr = map.entrySet().iterator(); itr
796                         .hasNext();) {
797                 java.util.Map.Entry<String, Pair<String,String>> entry = itr.next();
798             Pair<String, String> pair = entry.getValue();
799             try {
800                 data.component.put(pair.first(), Integer.parseInt(pair.second()));
801             } catch (java.lang.NumberFormatException e) {
802                 data.component.put(pair.first(), 0);
803             }
804         }
805     }
806
807     /**
808      * l7vs.cf load function.
809      * @return L7vsConfData create from l7vs.cf file.
810      * @throws org.ultramonkey.l7/model.FileNotReadException
811      */
812     protected L7vsConfData loadFromFile()
813                     throws org.ultramonkey.l7.model.FileNotReadException {
814
815         // data read on stack
816         java.util.Stack<String> stack = new java.util.Stack<String>();
817         try {
818             java.io.FileReader file = new java.io.FileReader(FILENAME);
819             java.io.BufferedReader reader = new java.io.BufferedReader(file);
820             String buffer;
821             while ((buffer = reader.readLine()) != null) {
822                 if (buffer.length() != 0 && buffer.charAt(0) != '#') {
823                     stack.push(buffer);
824                 }
825             }
826         } catch (Exception e) {
827             org.ultramonkey.l7.model.FileNotReadException ex = new org.ultramonkey.l7.model.FileNotReadException();
828             ex.setErrMessage("Cannot read file : " + FILENAME + "/ base exception = "
829                             + e.getMessage());
830             throw ex;
831         }
832         //category search.
833
834         L7vsConfData data = new L7vsConfData();
835         java.util.LinkedList<String> tmpList = new java.util.LinkedList<String>();
836         while (!stack.empty()) {
837             String buffer = stack.pop();
838             buffer = buffer.trim();
839             int pos = buffer.indexOf('#');
840             if( pos == 0 ) continue;
841             if( pos != -1 ) buffer = buffer.substring(0, pos);
842             else if (buffer.charAt(0) == '[' && buffer.charAt(buffer.length()-1) == ']') {
843                 // select service;
844                 if (buffer.indexOf(LOGGER_MASTER_KEY) != -1) {
845                     readLoggerParameter(data, tmpList);
846                     tmpList.clear();
847                     continue;
848                 } else if (buffer.indexOf(L7VSADM_MASTER_KEY) != -1) {
849                     readAdmParameter(data, tmpList);
850                     tmpList.clear();
851                     continue;
852                 } else if (buffer.indexOf(REPLICATION_MASTER_KEY) != -1) {
853                     readReplicationParameter(data, tmpList);
854                     tmpList.clear();
855                     continue;
856                 } else if (buffer.indexOf(SNMPAGENT_MASTER_KEY) != -1) {
857                     readSNMPAgentParameter(data, tmpList);
858                     tmpList.clear();
859                     continue;
860                 }
861             }
862             tmpList.addFirst(buffer);
863         }
864
865         return data;
866     }
867
868         private static String trimQuote(String s) {
869                 if (s != null && s.matches("^\".*\"$")) {
870                         s = s.substring(1, s.length() - 1);
871                 }
872                 return s;
873         }
874
875     protected void searchInsertData(String key, String value,
876                     java.util.LinkedList<String> list, int start, int end) {
877         for (int i = start; i < end; ++i) {
878             String buffer = list.get(i).trim();
879             if (buffer.length() == 0)
880                 continue;
881             int commentpos = buffer.indexOf("#");
882             if (commentpos != -1)
883                 buffer = buffer.substring(commentpos, buffer.length());
884             Pair<String, String> pair = paseKey(buffer);
885             if (pair.first().length() == 0)
886                 continue;
887             if (pair.first().equals(key)) {
888                 if (pair.second().equals(trimQuote(value)))
889                         return;
890                 StringBuffer buf = new StringBuffer();
891                 if (commentpos == -1)
892                         buf.append('#');
893                 buf.append(list.get(i));
894                 list.remove(i);
895                 list.add(i, buf.toString());
896                 list.add(i + 1, key + "=" + value);
897                 return;
898             }
899         }
900         list.add(end + 1, key + "=" + value);
901     }
902
903     /**
904      * 
905      * <p> saveToFile method</p>
906      *
907      */
908     protected void saveToFile(L7vsConfData data)
909                     throws org.ultramonkey.l7.model.FileNotWriteException {
910         java.util.LinkedList<String> datas = new java.util.LinkedList();
911         try {
912             java.io.FileReader file = new java.io.FileReader(FILENAME);
913             java.io.BufferedReader reader = new java.io.BufferedReader(file);
914             String buffer;
915             while ((buffer = reader.readLine()) != null) {
916                 datas.addLast(buffer);
917             }
918         } catch (Exception e) {
919             org.ultramonkey.l7.model.FileNotWriteException ex = new org.ultramonkey.l7.model.FileNotWriteException();
920             ex.setErrMessage("Cannot open file : " + FILENAME);
921             throw ex;
922         }
923
924         //[logger]
925         int startpos = 0;
926         int endpos = 0; //logger value.
927         for (int i = 0; i < datas.size(); ++i) {
928             String buffer = datas.get(i).trim();
929             if (buffer.length() == 0)
930                 continue;
931             if (buffer.charAt(0) == '#')
932                 continue;
933             int cmntpos = buffer.indexOf("#");
934             if (cmntpos != -1)
935                 buffer = buffer.substring(0, cmntpos).trim();
936             if (buffer.charAt(0) == '[' && buffer.charAt(buffer.length()-1) == ']') {
937                 if (buffer.indexOf("logger") != -1 || buffer.indexOf("LOGGER") != -1) {
938                     startpos = i + 1;
939                 } else {
940                     if (startpos != 0) {
941                         endpos = i;
942                         break;
943                     }
944                 }
945             }
946         }
947         if( endpos == 0 ) endpos = datas.size();
948         if (data.logger.lbLog.fileName != null
949                         && data.logger.lbLog.fileName.length() != 0)
950             searchInsertData(LB_LOG_FILENAME_KEY,
951                             "\"" + data.logger.lbLog.fileName + "\"", datas, startpos,
952                             endpos);
953         if (data.logger.lbLog.rotation != null
954                         && data.logger.lbLog.rotation.length() != 0)
955             searchInsertData(LB_LOG_ROTATION_KEY,
956                             "\"" + data.logger.lbLog.rotation + "\"", datas, startpos,
957                             endpos += 1);
958         if (data.logger.lbLog.maxBackupIndex != 0)
959             searchInsertData(LB_LOG_MAXBACKUPINDEX_KEY, String
960                             .valueOf(data.logger.lbLog.maxBackupIndex), datas, startpos,
961                             endpos += 1);
962         if (data.logger.lbLog.rotationTiming != null
963                         && data.logger.lbLog.rotationTiming.length() != 0)
964             searchInsertData(LB_LOG_ROTATE_TIMING_KEY, "\""
965                             + data.logger.lbLog.rotationTiming + "\"", datas, startpos,
966                             endpos += 1);
967         if (data.logger.lbLog.rotationTimingValue != null
968                         && data.logger.lbLog.rotationTimingValue.length() != 0)
969             searchInsertData(LB_LOG_ROTATE_TIMING_KEY, "\""
970                             + data.logger.lbLog.rotationTimingValue + "\"", datas,
971                             startpos, endpos += 1);
972         if (data.logger.lbLog.maxFileSize != null
973                         && data.logger.lbLog.maxFileSize.length() != 0)
974             searchInsertData(LB_LOG_MAXFILESIZE_KEY, "\"" + data.logger.lbLog.maxFileSize
975                             + "\"", datas, startpos, endpos += 1);
976         LogData.LogLevel level = data.logger.lbLog.logLevel
977                         .get(LogData.LogCategory.L7VSD_NETWORK);
978         if (level != null) {
979             String buf = convLogLevelToLogString(level);
980             if (buf.length() != 0) {
981                 searchInsertData(LB_LOGCATEGORY_NETWORK_KEY, buf, datas, startpos, endpos += 1);
982             }
983         }
984         level = data.logger.lbLog.logLevel
985                         .get(LogData.LogCategory.L7VSD_NETWORK_BANDWIDTH);
986         if (level != null) {
987             String buf = convLogLevelToLogString(level);
988             if (buf.length() != 0) {
989                 searchInsertData(LB_LOGCATEGORY_NETWORK_BANDWIDTH_KEY, buf, datas, startpos,
990                             endpos += 1);
991             }
992         }
993         level = data.logger.lbLog.logLevel
994                         .get(LogData.LogCategory.L7VSD_NETWORK_NUM_CONNECTION);
995         if (level != null) {
996             String buf = convLogLevelToLogString(level);
997             if (buf.length() != 0) {
998                 searchInsertData(LB_LOGCATEGORY_NETWORK_NUM_CONNECTION_KEY, buf, datas,
999                             startpos, endpos += 1);
1000             }
1001         }
1002         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_NETWORK_QOS);
1003         if (level != null) {
1004             String buf = convLogLevelToLogString(level);
1005             if (buf.length() != 0) {
1006                 searchInsertData(LB_LOGCATEGORY_NETWORK_QOS_KEY, buf, datas, startpos,
1007                             endpos += 1);
1008             }
1009         }
1010         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_VIRTUAL_SERVICE);
1011         if (level != null) {
1012             String buf = convLogLevelToLogString(level);
1013             if (buf.length() != 0) {
1014                 searchInsertData(LB_LOGCATEGORY_VIRTUALSERVICE_KEY, buf, datas, startpos,
1015                             endpos += 1);
1016             }
1017         }
1018         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_REAL_SERVER);
1019         if (level != null) {
1020             String buf = convLogLevelToLogString(level);
1021             if (buf.length() != 0) {
1022                 searchInsertData(LB_LOGCATEOGRY_REALSERVER_KEY, buf, datas, startpos,
1023                             endpos += 1);
1024             }
1025         }
1026         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SORRY_SERVER);
1027         if (level != null) {
1028             String buf = convLogLevelToLogString(level);
1029             if (buf.length() != 0) {
1030                 searchInsertData(LB_LOGCATEOGRY_SORRYSERVER_KEY, buf, datas, startpos,
1031                             endpos += 1);
1032             }
1033         }
1034         level = data.logger.lbLog.logLevel
1035                         .get(LogData.LogCategory.L7VSD_REAL_SERVER_BALANCING);
1036         if (level != null) {
1037             String buf = convLogLevelToLogString(level);
1038             if (buf.length() != 0) {
1039                 searchInsertData(LB_LOGCATEOGRY_REALSERVER_BALANCING_KEY, buf, datas,
1040                             startpos, endpos += 1);
1041             }
1042         }
1043         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_REPLICATION);
1044         if (level != null) {
1045             String buf = convLogLevelToLogString(level);
1046             if (buf.length() != 0) {
1047                 searchInsertData(LB_LOGCATEOGRY_REPLICATION_KEY, buf, datas, startpos,
1048                             endpos += 1);
1049             }
1050         }
1051         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_START_STOP);
1052         if (level != null) {
1053             String buf = convLogLevelToLogString(level);
1054             if (buf.length() != 0) {
1055                 searchInsertData(LB_LOGCATEOGRY_STARTSTOP_KEY, buf, datas, startpos,
1056                             endpos += 1);
1057             }
1058         }
1059         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SYSTEM);
1060         if (level != null) {
1061             String buf = convLogLevelToLogString(level);
1062             if (buf.length() != 0) {
1063                 searchInsertData(LB_LOGCATEOGRY_SYSTEM_KEY, buf, datas, startpos, endpos += 1);
1064             }
1065         }
1066         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SYSTEM_MEMORY);
1067         if (level != null) {
1068             String buf = convLogLevelToLogString(level);
1069             if (buf.length() != 0) {
1070                 searchInsertData(LB_LOGCATEOGRY_SYSTEMMEMORY_KEY, buf, datas, startpos,
1071                             endpos += 1);
1072             }
1073         }
1074         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SYSTEM_SOCKET);
1075         if (level != null) {
1076             String buf = convLogLevelToLogString(level);
1077             if (buf.length() != 0) {
1078                 searchInsertData(LB_LOGCATEOGRY_SYSTEMSOCKET_KEY, buf, datas, startpos,
1079                             endpos += 1);
1080             }
1081         }
1082         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SYSTEM_SIGNAL);
1083         if (level != null) {
1084             String buf = convLogLevelToLogString(level);
1085             if (buf.length() != 0) {
1086                 searchInsertData(LB_LOGCATEOGRY_SYSTEMSIGNAL_KEY, buf, datas, startpos,
1087                             endpos += 1);
1088             }
1089         }
1090         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_ENVIRONMENT);
1091         if (level != null) {
1092             String buf = convLogLevelToLogString(level);
1093             if (buf.length() != 0) {
1094                 searchInsertData(LB_LOGCATEOGRY_ENVIROMENT_KEY, buf, datas, startpos,
1095                             endpos += 1);
1096             }
1097         }
1098         level = data.logger.lbLog.logLevel
1099                         .get(LogData.LogCategory.L7VSD_ENVIRONMENT_PARAMETER);
1100         if (level != null) {
1101             String buf = convLogLevelToLogString(level);
1102             if (buf.length() != 0) {
1103                 searchInsertData(LB_LOGCATEOGRY_ENVIROMENTPARAMTER_KEY, buf, datas, startpos,
1104                             endpos += 1);
1105             }
1106         }
1107         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_LOGGER);
1108         if (level != null) {
1109             String buf = convLogLevelToLogString(level);
1110             if (buf.length() != 0) {
1111                 searchInsertData(LB_LOGCATEGORY_LOGGER_KEY, buf, datas, startpos, endpos += 1);
1112             }
1113         }
1114         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_PARAMETER);
1115         if (level != null) {
1116             String buf = convLogLevelToLogString(level);
1117             if (buf.length() != 0) {
1118                 searchInsertData(LB_LOGCATEGORY_PARAMTER, buf, datas, startpos, endpos += 1);
1119             }
1120         }
1121         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_SCHEDULE);
1122         if (level != null) {
1123             String buf = convLogLevelToLogString(level);
1124             if (buf.length() != 0) {
1125                 searchInsertData(LB_LOGCATEGORY_SCHEDULE_KEY, buf, datas, startpos,
1126                             endpos += 1);
1127             }
1128         }
1129         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_EVENT);
1130         if (level != null) {
1131             String buf = convLogLevelToLogString(level);
1132             if (buf.length() != 0) {
1133                 searchInsertData(LB_LOGCATEGORY_EVENT_KEY, buf, datas, startpos,
1134                             endpos += 1);
1135             }
1136         }
1137         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_PROGRAM);
1138         if (level != null) {
1139             String buf = convLogLevelToLogString(level);
1140             if (buf.length() != 0) {
1141                 searchInsertData(LB_LOGCATEGORY_PROGRAM_KEY, buf, datas, startpos, endpos += 1);
1142             }
1143         }
1144         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_PROTOCOL);
1145         if (level != null) {
1146             String buf = convLogLevelToLogString(level);
1147             if (buf.length() != 0) {
1148                 searchInsertData(LB_LOGCATEGORY_PROTOCOL_KEY, buf, datas, startpos,
1149                             endpos += 1);
1150             }
1151         }
1152         level = data.logger.lbLog.logLevel.get(LogData.LogCategory.L7VSD_MODULE);
1153         if (level != null) {
1154             String buf = convLogLevelToLogString(level);
1155             if (buf.length() != 0) {
1156                 searchInsertData(LB_LOGCATEGORY_MODULE_KEY, buf, datas, startpos, endpos += 1);
1157             }
1158         }
1159         if (data.logger.admLog.fileName != null
1160                         && data.logger.admLog.fileName.length() != 0)
1161             searchInsertData(ADM_LOG_FILENAME_KEY, "\"" + data.logger.admLog.fileName
1162                             + "\"", datas, startpos, endpos += 1);
1163         if (data.logger.admLog.rotation != null
1164                         && data.logger.admLog.rotation.length() != 0)
1165             searchInsertData(ADM_LOG_ROTATION_KEY, "\"" + data.logger.admLog.rotation
1166                             + "\"", datas, startpos, endpos += 1);
1167         if (data.logger.admLog.maxBackupIndex != 0)
1168             searchInsertData(ADM_LOG_MAXBACKUPINDEX_KEY, String
1169                             .valueOf(data.logger.admLog.maxBackupIndex), datas, startpos,
1170                             endpos += 1);
1171         if (data.logger.admLog.rotationTiming != null
1172                         && data.logger.admLog.rotationTiming.length() != 0)
1173             searchInsertData(ADM_LOG_ROTATE_TIMING_KEY, "\""
1174                             + data.logger.admLog.rotationTiming + "\"", datas, startpos,
1175                             endpos += 1);
1176         if (data.logger.admLog.rotationTimingValue != null
1177                         && data.logger.admLog.rotationTimingValue.length() != 0)
1178             searchInsertData(ADM_LOG_ROTATE_TIMING_VALUE_KEY, "\""
1179                             + data.logger.admLog.rotationTimingValue + "\"", datas,
1180                             startpos, endpos += 1);
1181         if (data.logger.admLog.maxFileSize != null
1182                         && data.logger.admLog.maxFileSize.length() != 0)
1183             searchInsertData(ADM_LOG_MAXFILESIZE_KEY, "\""
1184                             + data.logger.admLog.maxFileSize + "\"", datas, startpos,
1185                             endpos += 1);
1186         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_PARSE);
1187         if (level != null) {
1188             String buf = convLogLevelToLogString(level);
1189             if (buf.length() != 0) {
1190                 searchInsertData(ADM_LOGCATEGORY_PARSE_KEY, buf, datas, startpos, endpos += 1);
1191             }
1192         }
1193         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_OPERATE);
1194         if (level != null) {
1195             String buf = convLogLevelToLogString(level);
1196             if (buf.length() != 0) {
1197                 searchInsertData(ADM_LOGCATEGORY_OPERATE_KEY, buf, datas, startpos,
1198                             endpos += 1);
1199             }
1200         }
1201         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_COMMUNICATE);
1202         if (level != null) {
1203             String buf = convLogLevelToLogString(level);
1204             if (buf.length() != 0) {
1205                 searchInsertData(ADM_LOGCATEGORY_COMMUNICATE_KEY, buf, datas, startpos,
1206                             endpos += 1);
1207             }
1208         }
1209         level = data.logger.admLog.logLevel
1210                         .get(LogData.LogCategory.L7VSADM_CONFIG_RESULT);
1211         if (level != null) {
1212             String buf = convLogLevelToLogString(level);
1213             if (buf.length() != 0) {
1214                 searchInsertData(ADM_LOGCATEGORY_CONFIG_RESULT_KEY, buf, datas, startpos,
1215                             endpos += 1);
1216             }
1217         }
1218         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_COMMON);
1219         if (level != null) {
1220             String buf = convLogLevelToLogString(level);
1221             if (buf.length() != 0) {
1222                 searchInsertData(ADM_LOGCATEOGRY_COMMON, buf, datas, startpos, endpos += 1);
1223             }
1224         }
1225         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_LOGGER);
1226         if (level != null) {
1227             String buf = convLogLevelToLogString(level);
1228             if (buf.length() != 0) {
1229                 searchInsertData(ADM_LOGCATEGORY_LOGGER, buf, datas, startpos, endpos += 1);
1230             }
1231         }
1232         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_PARAMETER);
1233         if (level != null) {
1234             String buf = convLogLevelToLogString(level);
1235             if (buf.length() != 0) {
1236                 searchInsertData(ADM_LOGCATEGORY_PARAMETER, buf, datas, startpos, endpos += 1);
1237             }
1238         }
1239         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_PROTOCOL);
1240         if (level != null) {
1241             String buf = convLogLevelToLogString(level);
1242             if (buf.length() != 0) {
1243                 searchInsertData(ADM_LOGCATEOGRY_PROTOCOL, buf, datas, startpos, endpos += 1);
1244             }
1245         }
1246         level = data.logger.admLog.logLevel.get(LogData.LogCategory.L7VSADM_MODULE);
1247         if (level != null) {
1248             String buf = convLogLevelToLogString(level);
1249             if (buf.length() != 0) {
1250                 searchInsertData(ADM_LOGCATEOGRY_MODULE, buf, datas, startpos, endpos += 1);
1251             }
1252         }
1253         if (data.logger.snmpLog.fileName != null
1254                         && data.logger.snmpLog.fileName.length() != 0)
1255             searchInsertData(SNMP_LOG_FILENAME_KEY, "\"" + data.logger.snmpLog.fileName
1256                             + "\"", datas, startpos, endpos += 1);
1257         if (data.logger.snmpLog.rotation != null
1258                         && data.logger.snmpLog.rotation.length() != 0)
1259             searchInsertData(SNMP_LOG_ROTATION_KEY, "\"" + data.logger.snmpLog.rotation
1260                             + "\"", datas, startpos, endpos += 1);
1261         if (data.logger.snmpLog.maxBackupIndex != 0)
1262             searchInsertData(SNMP_LOG_MAXBACKUPINDEX_KEY, String
1263                             .valueOf(data.logger.snmpLog.maxBackupIndex), datas,
1264                             startpos, endpos += 1);
1265         if (data.logger.snmpLog.rotationTiming != null
1266                         && data.logger.snmpLog.rotationTiming.length() != 0)
1267             searchInsertData(SNMP_LOG_ROTATE_TIMING_KEY, "\""
1268                             + data.logger.snmpLog.rotationTiming + "\"", datas,
1269                             startpos, endpos += 1);
1270         if (data.logger.snmpLog.rotationTimingValue != null
1271                         && data.logger.snmpLog.rotationTimingValue.length() != 0)
1272             searchInsertData(SNMP_LOG_ROTATE_TIMING_VALUE_KEY, "\""
1273                             + data.logger.snmpLog.rotationTimingValue + "\"", datas,
1274                             startpos, endpos += 1);
1275         if (data.logger.snmpLog.maxFileSize != null
1276                         && data.logger.snmpLog.maxFileSize.length() != 0)
1277             searchInsertData(SNMP_MAX_FILESIZE_KEY, "\"" + data.logger.snmpLog.maxFileSize
1278                             + "\"", datas, startpos, endpos += 1);
1279         level = data.logger.snmpLog.logLevel
1280                         .get(LogData.LogCategory.SNMPAGENT_START_STOP);
1281         if (level != null) {
1282             String buf = convLogLevelToLogString(level);
1283             if (buf.length() != 0) {
1284                 searchInsertData(SNMP_LOGCATEOGRY_STARTSTOP_KEY, buf, datas, startpos,
1285                             endpos += 1);
1286             }
1287         }
1288         level = data.logger.snmpLog.logLevel
1289                         .get(LogData.LogCategory.SNMPAGENT_MANAGER_RECEIVE);
1290         if (level != null) {
1291             String buf = convLogLevelToLogString(level);
1292             if (buf.length() != 0) {
1293                 searchInsertData(SNMP_LOGCATEGORY_MANAGER_RECEIVE_KEY, buf, datas, startpos,
1294                             endpos += 1);
1295             }
1296         }
1297         level = data.logger.snmpLog.logLevel
1298                         .get(LogData.LogCategory.SNMPAGENT_MANAGER_SEND);
1299         if (level != null) {
1300             String buf = convLogLevelToLogString(level);
1301             if (buf.length() != 0) {
1302                 searchInsertData(SNMP_LOGCATEGORY_MANAGER_SEND_KEY, buf, datas, startpos,
1303                             endpos += 1);
1304             }
1305         }
1306         level = data.logger.snmpLog.logLevel
1307                         .get(LogData.LogCategory.SNMPAGENT_L7VSD_RECEIVE);
1308         if (level != null) {
1309             String buf = convLogLevelToLogString(level);
1310             if (buf.length() != 0) {
1311                 searchInsertData(SNMP_LOGCATEGORY_L7VSD_RECEIVE_KEY, buf, datas, startpos,
1312                             endpos += 1);
1313             }
1314         }
1315         level = data.logger.snmpLog.logLevel
1316                         .get(LogData.LogCategory.SNMPAGENT_L7VSD_SEND);
1317         if (level != null) {
1318             String buf = convLogLevelToLogString(level);
1319             if (buf.length() != 0) {
1320                 searchInsertData(SNMP_LOGCATEGORY_L7VSD_SEND_KEY, buf, datas, startpos,
1321                             endpos += 1);
1322             }
1323         }
1324         level = data.logger.snmpLog.logLevel.get(LogData.LogCategory.SNMPAGENT_LOGGER);
1325         if (level != null) {
1326             String buf = convLogLevelToLogString(level);
1327             if (buf.length() != 0) {
1328                 searchInsertData(SNMP_LOGCATEGORY_LOGGER, buf, datas, startpos, endpos += 1);
1329             }
1330         }
1331         level = data.logger.snmpLog.logLevel.get(LogData.LogCategory.SNMPAGENT_PARAMETER);
1332         if (level != null) {
1333             String buf = convLogLevelToLogString(level);
1334             if (buf.length() != 0) {
1335                 searchInsertData(SNMP_LOGCATEGORY_PARAMETER, buf, datas, startpos, endpos += 1);
1336             }
1337         }
1338
1339         //
1340         //[l7vsadm]
1341         startpos = 0;
1342         endpos = 0;
1343         for (int i = 0; i < datas.size(); ++i) {
1344             String buffer = datas.get(i).trim();
1345             if (buffer.length() == 0)
1346                 continue;
1347             if (buffer.charAt(0) == '#')
1348                 continue;
1349             int cmntpos = buffer.indexOf("#");
1350             if (cmntpos != -1)
1351                 buffer = buffer.substring(0, cmntpos).trim();
1352             if (buffer.charAt(0) == '[' && buffer.charAt(buffer.length()-1) == ']') {
1353                 if (buffer.indexOf("l7vsadm") != -1 || buffer.indexOf("L7VSADM") != -1) {
1354                     startpos = i + 1;
1355                 } else {
1356                     if (startpos != 0) {
1357                         endpos = i;
1358                         break;
1359                     }
1360                 }
1361             }
1362         }
1363         if( endpos == 0 ) endpos = datas.size();
1364         if (data.admConInterval != 0)
1365             searchInsertData(ADM_CMD_INTERVAL_KEY, String.valueOf(data.admCmdInterval),
1366                             datas, startpos, endpos += 1);
1367         if (data.admCmdCount != 0)
1368             searchInsertData(ADM_CMD_COUNT_KEY, String.valueOf(data.admCmdCount), datas,
1369                             startpos, endpos += 1);
1370         if (data.admConInterval != 0)
1371             searchInsertData(ADM_CON_INTERVAL_KEY, String.valueOf(data.admConInterval),
1372                             datas, startpos, endpos += 1);
1373         if (data.admConCount != 0)
1374             searchInsertData(ADM_CON_COUNT_KEY, String.valueOf(data.admConCount), datas,
1375                             startpos, endpos += 1);
1376
1377         //
1378         //[replication]
1379         startpos = 0;
1380         endpos = 0;
1381         for (int i = 0; i < datas.size(); ++i) {
1382             String buffer = datas.get(i).trim();
1383             if (buffer.length() == 0)
1384                 continue;
1385             if (buffer.charAt(0) == '#')
1386                 continue;
1387             int cmntpos = buffer.indexOf("#");
1388             if (cmntpos != -1)
1389                 buffer = buffer.substring(0, cmntpos).trim();
1390             if (buffer.charAt(0) == '[' && buffer.charAt(buffer.length()-1) == ']') {
1391                 if (buffer.indexOf("replication") != -1
1392                                 || buffer.indexOf("REPLICATION") != -1) {
1393                     startpos = i + 1;
1394                 } else {
1395                     if (startpos != 0) {
1396                         endpos = i;
1397                         break;
1398                     }
1399                 }
1400             }
1401         }
1402         if( endpos == 0 ) endpos = datas.size();
1403         if (data.replicationOtherNode.host != null
1404                         && data.replicationOtherNode.host.length() != 0)
1405             searchInsertData(REPLICATION_IPADDR_KEY, "\"" + data.replicationOtherNode.host
1406                             + "\"", datas, startpos, endpos += 1);
1407         if (data.replicationOtherNode.port != null
1408                         && data.replicationOtherNode.port.length() != 0)
1409             searchInsertData(REPLICATION_SERVICENAME_KEY, "\""
1410                             + data.replicationOtherNode.port + "\"", datas, startpos,
1411                             endpos += 1);
1412         if (data.replicationNic != null && data.replicationNic.length() != 0)
1413             searchInsertData(REPLICATION_NIC_KEY, "\"" + data.replicationNic + "\"",
1414                             datas, startpos, endpos += 1);
1415         if (data.replicationInterval != 0)
1416             searchInsertData(REPLICATION_INTERVAL_KEY, String
1417                             .valueOf(data.replicationInterval), datas, startpos,
1418                             endpos += 1);
1419         if (data.component != null) {
1420             int cmpno = 0;
1421             for (java.util.Iterator<java.util.Map.Entry<String, Integer>> itr = data.component
1422                             .entrySet().iterator(); itr.hasNext();) {
1423                 java.util.Map.Entry<String, Integer> entry = itr.next();
1424                 StringBuffer compIdKey = new StringBuffer();
1425                 StringBuffer compSizeKey = new StringBuffer();
1426                 compIdKey.append(REPLICATION_COMPONENT_ID_BASE_KEY);
1427                 compSizeKey.append(REPLICATION_COMPONENT_SIZE_BASE_KEY);
1428                 if (cmpno < 10) {
1429                     compIdKey.append("0");
1430                     compSizeKey.append("0");
1431                 }
1432                 compIdKey.append(cmpno);
1433                 compSizeKey.append(cmpno);
1434                 searchInsertData(compIdKey.toString(), "\"" + entry.getKey() + "\"",
1435                                 datas, startpos, endpos += 1);
1436                 searchInsertData(compSizeKey.toString(), String.valueOf(entry.getValue()),
1437                                 datas, startpos, endpos += 1);
1438                 ++cmpno;
1439             }
1440         }
1441
1442         //
1443         //[snmpagent]
1444         //
1445         startpos = 0;
1446         endpos = 0;
1447         for (int i = 0; i < datas.size(); ++i) {
1448             String buffer = datas.get(i).trim();
1449             if (buffer.length() == 0)
1450                 continue;
1451             if (buffer.charAt(0) == '#')
1452                 continue;
1453             int cmntpos = buffer.indexOf("#");
1454             if (cmntpos != -1)
1455                 buffer = buffer.substring(0, cmntpos).trim();
1456             if (buffer.charAt(0) == '[' || buffer.charAt(buffer.length()-1) == ']') {
1457                 if (buffer.indexOf("snmpagent") != -1
1458                                 || buffer.indexOf("SNMPAGENT") != -1) {
1459                     startpos = i + 1;
1460                 } else {
1461                     if (startpos != 0) {
1462                         endpos = i;
1463                         break;
1464                     }
1465                 }
1466             }
1467         }
1468         if( endpos == 0 ) endpos = datas.size();
1469         if (data.snmpNIC != null && data.snmpNIC.length() != 0)
1470             searchInsertData(SNMPAGENT_NIC_KEY, "\"" + data.snmpNIC + "\"", datas,
1471                             startpos, endpos += 1);
1472         if (data.snmpIpAddr != null && data.snmpIpAddr.length() != 0)
1473             searchInsertData(SNMPAGENT_IPADDR_KEY, "\"" + data.snmpIpAddr + "\"", datas,
1474                             startpos, endpos += 1);
1475         if (data.snmpPort != null && data.snmpPort.length() != 0)
1476             searchInsertData(SNMPAGENT_PORT_KEY, "\"" + data.snmpPort + "\"", datas,
1477                             startpos, endpos += 1);
1478         if (data.snmpInterval != 0)
1479             searchInsertData(SNMPAGENT_INTERVAL_KEY, String.valueOf(data.snmpInterval),
1480                             datas, startpos, endpos);
1481
1482         try {
1483             java.io.File file = new java.io.File(FILENAME);
1484             if (file.exists()) {
1485                 java.util.Date date = new java.util.Date();
1486                 java.io.File backfile = new java.io.File(FILENAME + ".back_"
1487                                 + String.valueOf(date.getTime()));
1488                 file.renameTo(backfile);
1489                 file = new java.io.File(FILENAME);
1490             }
1491             java.io.FileWriter writer = new java.io.FileWriter(file);
1492             for (java.util.Iterator<String> itr = datas.iterator(); itr.hasNext();) {
1493                 StringBuffer buf = new StringBuffer(itr.next());
1494                 buf.append('\n');
1495                 writer.write(buf.toString());
1496             }
1497             writer.flush();
1498         } catch (Exception e) {
1499             org.ultramonkey.l7.model.FileNotWriteException ex = new org.ultramonkey.l7.model.FileNotWriteException();
1500             ex.setErrMessage("Cannot write file : " + FILENAME);
1501             throw ex;
1502         }
1503
1504     }
1505
1506     /**
1507      * 
1508      * <p> getConfData method</p>
1509      *
1510      * @return l7vs.cf data
1511      */
1512     public synchronized L7vsConfData getConfData()
1513                     throws org.ultramonkey.l7.model.FileNotReadException {
1514         return loadFromFile();
1515     }
1516
1517     /**
1518      * 
1519      * <p> setConfData method</p>
1520      *
1521      */
1522     public synchronized void setConfData(L7vsConfData cf)
1523                     throws org.ultramonkey.l7.model.FileNotWriteException {
1524         if (cf == null) {
1525             org.ultramonkey.l7.model.FileNotWriteException exception = new org.ultramonkey.l7.model.FileNotWriteException();
1526             exception.setErrMessage("L7vConfData class is null!");
1527             exception.setErrNo(0);
1528             throw exception;
1529         }
1530         saveToFile(cf);
1531     }
1532
1533 }