~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to local/in/dhis-web-ga/WEB-INF/src/org/hisp/gtool/action/DataValidationAction.java

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hisp.gtool.action;
 
2
 
 
3
import java.io.File;
 
4
import java.sql.Connection;
 
5
import java.sql.PreparedStatement;
 
6
import java.sql.ResultSet;
 
7
import java.sql.Statement;
 
8
import java.util.ArrayList;
 
9
import java.util.Hashtable;
 
10
import java.util.List;
 
11
 
 
12
import javax.xml.parsers.DocumentBuilder;
 
13
import javax.xml.parsers.DocumentBuilderFactory;
 
14
import javax.xml.transform.Result;
 
15
import javax.xml.transform.Source;
 
16
import javax.xml.transform.Transformer;
 
17
import javax.xml.transform.TransformerConfigurationException;
 
18
import javax.xml.transform.TransformerException;
 
19
import javax.xml.transform.TransformerFactory;
 
20
import javax.xml.transform.dom.DOMSource;
 
21
import javax.xml.transform.stream.StreamResult;
 
22
 
 
23
import org.w3c.dom.Document;
 
24
import org.w3c.dom.Element;
 
25
import org.w3c.dom.Node;
 
26
import org.w3c.dom.NodeList;
 
27
import org.xml.sax.SAXException;
 
28
import org.xml.sax.SAXParseException;
 
29
 
 
30
public class DataValidationAction {
 
31
 
 
32
        Connection con = (new DBConnection()).openConnection();
 
33
        String dataValidationXMLFileName = "C:\\Program Files\\DHIS2\\XMLFiles\\DataValidations.xml";
 
34
        
 
35
        /*
 
36
         *  To retrieve all the data validations details
 
37
         */
 
38
        public Hashtable getAllDataValidations()
 
39
    {
 
40
                Hashtable ht = new Hashtable();
 
41
                List li = null;
 
42
                String dataValidationID = "";
 
43
                
 
44
                try 
 
45
        {
 
46
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
 
47
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
 
48
            Document doc = docBuilder.parse (new File(dataValidationXMLFileName));
 
49
 
 
50
            // normalize text representation            doc.getDocumentElement ().normalize ();
 
51
            //System.out.println ("Root element of the doc is " + 
 
52
             //    doc.getDocumentElement().getNodeName());
 
53
 
 
54
 
 
55
            NodeList listOfDataValidations = doc.getElementsByTagName("data-validation");
 
56
            int totalDataValidations = listOfDataValidations.getLength();
 
57
            System.out.println("File Name : "+dataValidationXMLFileName);
 
58
            System.out.println("Total no of Rules : " + totalDataValidations);
 
59
 
 
60
            for(int s=0; s<totalDataValidations ; s++)
 
61
            {
 
62
                Node dataValidationNode = listOfDataValidations.item(s);
 
63
                li = new ArrayList();
 
64
                if(dataValidationNode.getNodeType() == Node.ELEMENT_NODE)
 
65
                {
 
66
                    Element dataValidationElement = (Element)dataValidationNode;
 
67
                    dataValidationID = dataValidationElement.getAttribute("id");
 
68
                    
 
69
                    NodeList dataValidationNameList = dataValidationElement.getElementsByTagName("name");
 
70
                    Element dataValidationNameElement = (Element)dataValidationNameList.item(0);
 
71
 
 
72
                    NodeList textDVNList = dataValidationNameElement.getChildNodes();
 
73
                    li.add(0,((Node)textDVNList.item(0)).getNodeValue().trim());
 
74
                    System.out.println("ID : "+dataValidationID);
 
75
                    System.out.println("Name : " + 
 
76
                           ((Node)textDVNList.item(0)).getNodeValue().trim());
 
77
 
 
78
                    NodeList dataValidationLeftDEIdsList = dataValidationElement.getElementsByTagName("left-deids");
 
79
                    Element dataValidationLeftDEIdsElement = (Element)dataValidationLeftDEIdsList.item(0);
 
80
 
 
81
                    NodeList textDVLdeIdsList = dataValidationLeftDEIdsElement.getChildNodes();
 
82
                    li.add(1,((Node)textDVLdeIdsList.item(0)).getNodeValue().trim());
 
83
                    String leftDENames = getDVDataElementList(((Node)textDVLdeIdsList.item(0)).getNodeValue().trim());
 
84
                    System.out.println("LeftDEIds : " + 
 
85
                           ((Node)textDVLdeIdsList.item(0)).getNodeValue().trim());
 
86
 
 
87
                    NodeList dataValidationRightDEIdsList = dataValidationElement.getElementsByTagName("right-deids");
 
88
                    Element dataValidationRightDEIdsElement = (Element)dataValidationRightDEIdsList.item(0);
 
89
 
 
90
                    NodeList textDVRdeIdsList = dataValidationRightDEIdsElement.getChildNodes();
 
91
                    li.add(2,((Node)textDVRdeIdsList.item(0)).getNodeValue().trim());
 
92
                    String rightDENames = getDVDataElementList(((Node)textDVRdeIdsList.item(0)).getNodeValue().trim());
 
93
                    System.out.println("RightDEIds : " + 
 
94
                           ((Node)textDVRdeIdsList.item(0)).getNodeValue().trim());
 
95
 
 
96
                    NodeList dataValidationOperatorList = dataValidationElement.getElementsByTagName("operator");
 
97
                    Element dataValidationOperatorElement = (Element)dataValidationOperatorList.item(0);
 
98
 
 
99
                    NodeList textDVOperatorList = dataValidationOperatorElement.getChildNodes();
 
100
                    li.add(3,((Node)textDVOperatorList.item(0)).getNodeValue().trim());
 
101
                    System.out.println("Operator : " + 
 
102
                           ((Node)textDVOperatorList.item(0)).getNodeValue().trim());                    
 
103
                
 
104
                    NodeList dataValidationTypeList = dataValidationElement.getElementsByTagName("type");
 
105
                    Element dataValidationTypeElement = (Element)dataValidationTypeList.item(0);
 
106
 
 
107
                    NodeList textDVTypeList = dataValidationTypeElement.getChildNodes();
 
108
                    li.add(4,((Node)textDVTypeList.item(0)).getNodeValue().trim());
 
109
                    System.out.println("Type : " + 
 
110
                           ((Node)textDVTypeList.item(0)).getNodeValue().trim());                    
 
111
 
 
112
                    NodeList dataValidationLeftDescList = dataValidationElement.getElementsByTagName("left-desc");
 
113
                    Element dataValidationLeftDescElement = (Element)dataValidationLeftDescList.item(0);
 
114
 
 
115
                    NodeList textDVLeftDescList = dataValidationLeftDescElement.getChildNodes();
 
116
                    li.add(5,((Node)textDVLeftDescList.item(0)).getNodeValue().trim());
 
117
                    System.out.println("LeftDescription : " + 
 
118
                           ((Node)textDVLeftDescList.item(0)).getNodeValue().trim());                    
 
119
 
 
120
                    NodeList dataValidationRightDescList = dataValidationElement.getElementsByTagName("right-desc");
 
121
                    Element dataValidationRightDescElement = (Element)dataValidationRightDescList.item(0);
 
122
 
 
123
                    NodeList textDVRightDescList = dataValidationRightDescElement.getChildNodes();
 
124
                    li.add(6,((Node)textDVRightDescList.item(0)).getNodeValue().trim());
 
125
                    System.out.println("RightDescription : " + 
 
126
                           ((Node)textDVRightDescList.item(0)).getNodeValue().trim());                    
 
127
 
 
128
                    li.add(7,leftDENames);
 
129
                    System.out.println("Left DataElements : " +leftDENames);    
 
130
                    li.add(8,rightDENames);
 
131
                    System.out.println("Right DataElements : " +rightDENames);
 
132
                    
 
133
                    NodeList dataValidationLeftPercentList = dataValidationElement.getElementsByTagName("left-percent");
 
134
                    Element dataValidationLeftPercentElement = (Element)dataValidationLeftPercentList.item(0);
 
135
 
 
136
                    NodeList textDVLeftPercentList = dataValidationLeftPercentElement.getChildNodes();
 
137
                    li.add(9,((Node)textDVLeftPercentList.item(0)).getNodeValue().trim());
 
138
                    System.out.println("LeftPercentage : " + 
 
139
                           ((Node)textDVLeftPercentList.item(0)).getNodeValue().trim());                    
 
140
 
 
141
                    NodeList dataValidationRightPercentList = dataValidationElement.getElementsByTagName("right-percent");
 
142
                    Element dataValidationRightPercentElement = (Element)dataValidationRightPercentList.item(0);
 
143
 
 
144
                    NodeList textDVRightPercentList = dataValidationRightPercentElement.getChildNodes();
 
145
                    li.add(10,((Node)textDVRightPercentList.item(0)).getNodeValue().trim());
 
146
                    System.out.println("RightPercentage : " + 
 
147
                           ((Node)textDVRightPercentList.item(0)).getNodeValue().trim());                    
 
148
 
 
149
                    ht.put(dataValidationID,li);
 
150
                                                                                
 
151
                        li=null;
 
152
                }//end of if clause
 
153
            }//end of for loop with s var
 
154
        }// try block end
 
155
        catch (SAXParseException err) 
 
156
        {
 
157
                System.out.println ("** Parsing error" + ", line " 
 
158
             + err.getLineNumber () + ", uri " + err.getSystemId ());
 
159
                System.out.println(" " + err.getMessage ());
 
160
        }
 
161
        catch (SAXException e) 
 
162
        {
 
163
                Exception x = e.getException ();
 
164
                ((x == null) ? e : x).printStackTrace ();
 
165
        }
 
166
        catch (Throwable t) 
 
167
        {
 
168
                t.printStackTrace ();
 
169
        }
 
170
        
 
171
        return ht;
 
172
    }//end of getAllDataValidations
 
173
                        
 
174
        /*
 
175
         * To get the value for leftside deids and rightside deids and finally the datavalidation status 
 
176
         */
 
177
        public List getDataValidationStatus( int selOrgUnitID,
 
178
                                                                                        String dvleftdeids,
 
179
                                                                                        String dvrightdeids,
 
180
                                                                                        String dvoperator,
 
181
                                                                                        int periodID,
 
182
                                                                                        String localLang,
 
183
                                                                                        double leftPercent,
 
184
                                                                                        double rightPercent)
 
185
        {
 
186
                
 
187
                String dvStatus="";
 
188
                int dvleftvalue = 0;
 
189
                int dvrightvalue = 0;
 
190
                
 
191
                List li = new ArrayList();
 
192
                
 
193
                Hashtable htForDVOperator = new Hashtable();
 
194
                htForDVOperator.put("Equal","=");
 
195
                htForDVOperator.put("Less","<");
 
196
                htForDVOperator.put("LessOrEqual","<=");
 
197
                htForDVOperator.put("Greater",">");
 
198
                htForDVOperator.put("GreaterOrEqual",">=");
 
199
                                
 
200
                Statement st1 = null;
 
201
                Statement st2 = null;
 
202
                ResultSet rs1 = null;           
 
203
                ResultSet rs2 = null;
 
204
                
 
205
                String displayOpt = "dataelement.name";
 
206
                if(localLang == null) displayOpt = "dataelement.alternativeName";
 
207
                                
 
208
                /*      
 
209
                    -- Aggregateddatavalue
 
210
                        String query = "SELECT SUM(value) FROM aggregateddatavalue " +
 
211
                                                        "WHERE  organisationUnitId = "+selOrgUnitID+" AND " +
 
212
                                                                        "periodId = "+periodID+" AND " +
 
213
                                                                        "dataElementId IN ("+dvleftdeids+")";
 
214
                */
 
215
                
 
216
                /*
 
217
                   String query = "SELECT value FROM datavalue " +
 
218
                                                        "WHERE  source = "+selOrgUnitID+" AND " +
 
219
                                                                        "period = "+periodID+" AND " +
 
220
                                                                        "dataElement IN ("+dvleftdeids+")";
 
221
        */
 
222
                /*
 
223
                String query = "SELECT dataelement.id,"+displayOpt+",datavalue.value " +
 
224
                                                        "FROM datavalue INNER JOIN dataelement " +
 
225
                                                                                        "ON datavalue.dataElement = dataelement.id " +
 
226
                                                        "WHERE  source = "+selOrgUnitID+" AND period = "+periodID+" AND dataElement IN ("+dvleftdeids+")";
 
227
                */
 
228
                String query = "SELECT dataelement.dataelementid,"+displayOpt+",datavalue.value " +
 
229
                                                        "FROM datavalue INNER JOIN dataelement " +
 
230
                                                        "ON datavalue.dataelementid = dataelement.dataelementid " +
 
231
                                                        "WHERE  datavalue.sourceid = "+selOrgUnitID+" AND datavalue.periodid = "+periodID+" AND datavalue.dataelementid IN ("+dvleftdeids+")";
 
232
                
 
233
                String strLeftDEID = "";
 
234
                String strLeftDENames = "";
 
235
                String strLeftDEValues = "";
 
236
                
 
237
                String strRightDEID = "";
 
238
                String strRightDENames = "";
 
239
                String strRightDEValues = "";
 
240
                
 
241
                try
 
242
                {
 
243
                        st1 = con.createStatement();
 
244
                        st2 = con.createStatement();
 
245
                        
 
246
                        rs1 = st1.executeQuery(query);                  
 
247
                        while(rs1.next())       
 
248
                        {
 
249
                                strLeftDEID += rs1.getInt(1)+",";
 
250
                                strLeftDENames += rs1.getString(2)+",";
 
251
                                strLeftDEValues += rs1.getInt(3)+",";
 
252
                                dvleftvalue += rs1.getInt(3);
 
253
                        }
 
254
                        
 
255
                        double tempdvleftvalue = dvleftvalue + (dvleftvalue * leftPercent/100);  
 
256
                        System.out.println("LeftValue: "+dvleftvalue);
 
257
                        
 
258
                        /*
 
259
                          -- Aggregateddatavalue
 
260
                          query = "SELECT SUM(value) FROM aggregateddatavalue " +
 
261
                                                "WHERE  organisationUnitId = "+selOrgUnitID+" AND " +
 
262
                                                                "periodId = "+periodID+" AND " +
 
263
                                                                "dataElementId IN ("+dvrightdeids+")"; 
 
264
                        */              
 
265
/*
 
266
                        query = "SELECT SUM(value) FROM datavalue " +
 
267
                                                "WHERE  source = "+selOrgUnitID+" AND " +
 
268
                                                                "period = "+periodID+" AND " +
 
269
                                                                "dataElement IN ("+dvrightdeids+")";            
 
270
*/
 
271
                        /*
 
272
                                query = "SELECT dataelement.id,"+displayOpt+",datavalue.value " +
 
273
                                                "FROM datavalue INNER JOIN dataelement " +
 
274
                                                                                        "ON datavalue.dataElement = dataelement.id " +
 
275
                                "WHERE  source = "+selOrgUnitID+" AND period = "+periodID+" AND dataElement IN ("+dvrightdeids+")";
 
276
 
 
277
                         */
 
278
                        
 
279
                        query = "SELECT dataelement.dataelementid,"+displayOpt+",datavalue.value " +
 
280
                                                                "FROM datavalue INNER JOIN dataelement " +
 
281
                                                                "ON datavalue.dataelementid = dataelement.dataelementid " +
 
282
                                                                "WHERE  datavalue.sourceid = "+selOrgUnitID+" AND datavalue.periodid = "+periodID+" AND datavalue.dataelementid IN ("+dvrightdeids+")";
 
283
                        
 
284
                        rs2 = st2.executeQuery(query);
 
285
                        while(rs2.next())       
 
286
                        {
 
287
                                strRightDEID += rs2.getInt(1)+",";
 
288
                                strRightDENames += rs2.getString(2)+",";
 
289
                                strRightDEValues += rs2.getInt(3)+",";
 
290
                                dvrightvalue += rs2.getInt(3);
 
291
                        }
 
292
                        
 
293
                        double tempdvrightvalue = dvrightvalue + (dvrightvalue * rightPercent/100);
 
294
                        System.out.println("OUID: "+selOrgUnitID+"Period: "+periodID+"RV: "+dvrightvalue);
 
295
                        
 
296
                        if(getDVStatusValue(tempdvleftvalue,tempdvrightvalue,dvoperator)) dvStatus = "T";
 
297
                        else dvStatus = "F";
 
298
                        li.add(0,""+dvleftvalue);
 
299
                        li.add(1,""+dvrightvalue);
 
300
                        li.add(2,dvStatus);
 
301
                        li.add(3,(String) htForDVOperator.get(dvoperator));
 
302
                        li.add(4,strLeftDEID);
 
303
                        li.add(5,strLeftDENames);
 
304
                        li.add(6,strLeftDEValues);
 
305
                        li.add(7,strRightDEID);
 
306
                        li.add(8,strRightDENames);
 
307
                        li.add(9,strRightDEValues);
 
308
                        
 
309
                } // try block end
 
310
                catch(Exception e)      { System.out.println("Some Exception : "+e.getMessage()); return null;  }
 
311
                finally
 
312
                {
 
313
                        try
 
314
                        {
 
315
                                if(rs1!=null) rs1.close();                                                              
 
316
                                if(rs2!=null) rs2.close();                              
 
317
                                
 
318
                                if(st1!=null) st1.close();
 
319
                                if(st2!=null) st2.close();
 
320
                        }
 
321
                        catch(Exception e){ System.out.println("Some Exception : "+e.getMessage()); return null;}
 
322
                }// finally block end
 
323
                
 
324
                return li;
 
325
        }//getDataValidationStatus end
 
326
        
 
327
        
 
328
        /*
 
329
         * To retrieve the data validation status value 
 
330
         */
 
331
        public boolean getDVStatusValue(double dvleftvalue,double dvrightvalue,String dvoperator)
 
332
        {                               
 
333
                if( (dvoperator.equals("Equal")) && (dvleftvalue == dvrightvalue) )  return true;
 
334
                else if( (dvoperator.equals("Less")) && (dvleftvalue < dvrightvalue) )  return true;
 
335
                else if( (dvoperator.equals("LessOrEqual") || dvoperator.equals("Correlates")) && (dvleftvalue <= dvrightvalue) )  return true;
 
336
                else if( (dvoperator.equals("Greater")) && (dvleftvalue > dvrightvalue) )  return true;
 
337
                else if( (dvoperator.equals("GreaterOrEqual")) && (dvleftvalue >= dvrightvalue) )  return true;
 
338
                
 
339
                return false;
 
340
        }// getDVStatusValue end
 
341
        
 
342
        
 
343
        /*
 
344
         * To get the names of Leftside DataElements and Rightside DataElements
 
345
         */
 
346
        public String getDVDataElementList(String deIds)
 
347
        {
 
348
                Statement st1 = null;
 
349
                ResultSet rs1 = null;
 
350
                
 
351
                //String query ="SELECT shortName FROM dataelement WHERE id IN ("+deIds+")";
 
352
                String query ="SELECT name FROM dataelement WHERE dataelementid IN ("+deIds+")";
 
353
                
 
354
                String denames = "";
 
355
                try
 
356
                {
 
357
                        st1 = con.createStatement();
 
358
                        rs1 = st1.executeQuery(query);                  
 
359
                        while(rs1.next())
 
360
                        {
 
361
                                denames += rs1.getString(1)+",";
 
362
                        }// while loop end              
 
363
                } // try block end
 
364
                catch(Exception e)      { System.out.println("Some Exception : "+e.getMessage()); return null;  }
 
365
                finally
 
366
                {
 
367
                        try
 
368
                        {
 
369
                                if(rs1!=null) rs1.close();
 
370
                                if(st1!=null) st1.close();                                              
 
371
                        }
 
372
                        catch(Exception e){ System.out.println("Some Exception : "+e.getMessage()); return null;}
 
373
                }// finally block end
 
374
        
 
375
                return denames;
 
376
        }//getDVDataElementList end
 
377
 
 
378
        /*
 
379
         * To add new validation Rule
 
380
         */
 
381
        public boolean addDataValidation(List li)
 
382
    {                           
 
383
                String dvID = (String) li.get(0);
 
384
                String dvName = (String) li.get(1);
 
385
                String leftDesc = (String) li.get(2);
 
386
                String rightDesc = (String) li.get(3); 
 
387
                String dvOperator = (String) li.get(4); 
 
388
                String dvType = (String) li.get(5);                             
 
389
                String leftSelDEs = (String) li.get(6);
 
390
                String rightSelDEs = (String) li.get(7);
 
391
                String leftPercent = (String) li.get(8);
 
392
                String rightPercent = (String) li.get(9);
 
393
                
 
394
                try 
 
395
        {                       
 
396
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();            
 
397
            Document doc = docBuilderFactory.newDocumentBuilder().parse(new File(dataValidationXMLFileName));
 
398
                                                                                    
 
399
            Element dv_ele = doc.createElement("data-validation");
 
400
            Element name_ele = doc.createElement("name");
 
401
            Element leftdeids_ele = doc.createElement("left-deids");
 
402
            Element rightdeids_ele = doc.createElement("right-deids");
 
403
            Element ope_ele = doc.createElement("operator");
 
404
            Element type_ele = doc.createElement("type");
 
405
            Element leftdesc_ele = doc.createElement("left-desc");
 
406
            Element rightdesc_ele = doc.createElement("right-desc");
 
407
            Element leftPercent_ele = doc.createElement("left-percent");
 
408
            Element rightPercent_ele = doc.createElement("right-percent");
 
409
            
 
410
            Node name_txt = doc.createTextNode(dvName);
 
411
            Node leftdeids_txt = doc.createTextNode(leftSelDEs);
 
412
            Node rightdeids_txt = doc.createTextNode(rightSelDEs);
 
413
            Node ope_txt = doc.createTextNode(dvOperator);
 
414
            Node type_txt = doc.createTextNode(dvType);
 
415
            Node leftdesc_txt = doc.createTextNode(leftDesc);
 
416
            Node rightdesc_txt = doc.createTextNode(rightDesc);
 
417
            Node leftPercent_txt = doc.createTextNode(leftPercent);
 
418
            Node rightPercent_txt = doc.createTextNode(rightPercent);
 
419
            
 
420
            name_ele.appendChild(name_txt);
 
421
            leftdeids_ele.appendChild(leftdeids_txt);
 
422
            rightdeids_ele.appendChild(rightdeids_txt);
 
423
            ope_ele.appendChild(ope_txt);
 
424
            type_ele.appendChild(type_txt);
 
425
            leftdesc_ele.appendChild(leftdesc_txt);
 
426
            rightdesc_ele.appendChild(rightdesc_txt);
 
427
            leftPercent_ele.appendChild(leftPercent_txt);
 
428
            rightPercent_ele.appendChild(rightPercent_txt);
 
429
            
 
430
            dv_ele.appendChild(name_ele);
 
431
            dv_ele.appendChild(leftdeids_ele);
 
432
            dv_ele.appendChild(rightdeids_ele);
 
433
            dv_ele.appendChild(ope_ele);
 
434
            dv_ele.appendChild(type_ele);
 
435
            dv_ele.appendChild(leftdesc_ele);
 
436
            dv_ele.appendChild(rightdesc_ele);
 
437
            dv_ele.appendChild(leftPercent_ele);
 
438
            dv_ele.appendChild(rightPercent_ele);
 
439
            
 
440
            dv_ele.setAttribute("id",dvID);
 
441
                        
 
442
            Element root_ele = doc.getDocumentElement();
 
443
            root_ele.appendChild(dv_ele);            
 
444
            try 
 
445
            {
 
446
                Source source = new DOMSource(doc);
 
447
                File file = new File(dataValidationXMLFileName);
 
448
                Result result = new StreamResult(file);
 
449
                Transformer xformer = TransformerFactory.newInstance().newTransformer();
 
450
                xformer.transform(source, result);
 
451
            } 
 
452
            catch (TransformerConfigurationException e) { System.out.println(e.getMessage()); return false; } 
 
453
            catch (TransformerException e) { System.out.println(e.getMessage()); return false; }                       
 
454
        }// try block end
 
455
        catch (SAXParseException err) 
 
456
        {
 
457
                System.out.println ("** Parsing error" + ", line " 
 
458
             + err.getLineNumber () + ", uri " + err.getSystemId ());
 
459
                System.out.println(" " + err.getMessage ());
 
460
        }
 
461
        catch (SAXException e) 
 
462
        {
 
463
                Exception x = e.getException ();
 
464
                ((x == null) ? e : x).printStackTrace ();
 
465
        }
 
466
        catch (Throwable t) 
 
467
        {
 
468
                t.printStackTrace ();
 
469
        }
 
470
        return true;
 
471
    }//end addDataValidation
 
472
 
 
473
        public boolean editDataValidation(List li)
 
474
        {
 
475
                boolean removeStatus = removeDataValidation((String) li.get(0));
 
476
                boolean addStatus = true;
 
477
                if(removeStatus) addStatus = addDataValidation(li);
 
478
                else return false;
 
479
                if(addStatus) return true;
 
480
                else return false;              
 
481
        }
 
482
        
 
483
        /*
 
484
         * To edit validation Rule based on its id
 
485
         */
 
486
        /*
 
487
        public boolean editDataValidation(List li)
 
488
    {                           
 
489
                String dvID = (String) li.get(0);
 
490
                String dvName = (String) li.get(1);
 
491
                String leftDesc = (String) li.get(2);
 
492
                String rightDesc = (String) li.get(3); 
 
493
                String dvOperator = (String) li.get(4); 
 
494
                String dvType = (String) li.get(5);                             
 
495
                String leftSelDEs = (String) li.get(6);
 
496
                String rightSelDEs = (String) li.get(7);
 
497
                
 
498
                try 
 
499
        {                       
 
500
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();            
 
501
            Document doc = docBuilderFactory.newDocumentBuilder().parse(new File(dataValidationXMLFileName));
 
502
                                                                                    
 
503
            Element dv_ele = doc.createElement("data-validation");
 
504
            Element name_ele = doc.createElement("name");
 
505
            Element leftdeids_ele = doc.createElement("left-deids");
 
506
            Element rightdeids_ele = doc.createElement("right-deids");
 
507
            Element ope_ele = doc.createElement("operator");
 
508
            Element type_ele = doc.createElement("type");
 
509
            Element leftdesc_ele = doc.createElement("left-desc");
 
510
            Element rightdesc_ele = doc.createElement("right-desc");
 
511
            
 
512
            Node name_txt = doc.createTextNode(dvName);
 
513
            Node leftdeids_txt = doc.createTextNode(leftSelDEs);
 
514
            Node rightdeids_txt = doc.createTextNode(rightSelDEs);
 
515
            Node ope_txt = doc.createTextNode(dvOperator);
 
516
            Node type_txt = doc.createTextNode(dvType);
 
517
            Node leftdesc_txt = doc.createTextNode(leftDesc);
 
518
            Node rightdesc_txt = doc.createTextNode(rightDesc);
 
519
            
 
520
            name_ele.appendChild(name_txt);
 
521
            leftdeids_ele.appendChild(leftdeids_txt);
 
522
            rightdeids_ele.appendChild(rightdeids_txt);
 
523
            ope_ele.appendChild(ope_txt);
 
524
            type_ele.appendChild(type_txt);
 
525
            leftdesc_ele.appendChild(leftdesc_txt);
 
526
            rightdesc_ele.appendChild(rightdesc_txt);
 
527
            
 
528
            dv_ele.appendChild(name_ele);
 
529
            dv_ele.appendChild(leftdeids_ele);
 
530
            dv_ele.appendChild(rightdeids_ele);
 
531
            dv_ele.appendChild(ope_ele);
 
532
            dv_ele.appendChild(type_ele);
 
533
            dv_ele.appendChild(leftdesc_ele);
 
534
            dv_ele.appendChild(rightdesc_ele);
 
535
            
 
536
            dv_ele.setAttribute("id",dvID);
 
537
                        
 
538
            Element root_ele = doc.getDocumentElement();
 
539
            //root_ele.appendChild(dv_ele);
 
540
            
 
541
            NodeList nl=root_ele.getElementsByTagName("data-validation");
 
542
            for (int i=0;i<nl.getLength();i++)
 
543
            {
 
544
                Element existing_dv =(Element) nl.item(i);
 
545
                if (existing_dv.getAttribute("id").equals(dvID))
 
546
                        root_ele.replaceChild(dv_ele, existing_dv);            
 
547
            }// for end
 
548
 
 
549
            try 
 
550
            {
 
551
                Source source = new DOMSource(doc);
 
552
                File file = new File(dataValidationXMLFileName);
 
553
                Result result = new StreamResult(file);
 
554
                Transformer xformer = TransformerFactory.newInstance().newTransformer();
 
555
                xformer.transform(source, result);
 
556
            } 
 
557
            catch (TransformerConfigurationException e) { System.out.println(e.getMessage()); return false; } 
 
558
            catch (TransformerException e) { System.out.println(e.getMessage()); return false; }                       
 
559
        }// try block end
 
560
        catch (SAXParseException err) 
 
561
        {
 
562
                System.out.println ("** Parsing error" + ", line " 
 
563
             + err.getLineNumber () + ", uri " + err.getSystemId ());
 
564
                System.out.println(" " + err.getMessage ());
 
565
        }
 
566
        catch (SAXException e) 
 
567
        {
 
568
                Exception x = e.getException ();
 
569
                ((x == null) ? e : x).printStackTrace ();
 
570
        }
 
571
        catch (Throwable t) 
 
572
        {
 
573
                t.printStackTrace ();
 
574
        }
 
575
        return true;
 
576
    }//end editDataValidation
 
577
*/
 
578
        
 
579
        /*
 
580
         * To Remove the Validation based on validation id
 
581
         */
 
582
        public boolean removeDataValidation(String dvID)
 
583
        {                                               
 
584
                int i=0;                
 
585
                try 
 
586
        {                       
 
587
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
 
588
            Document doc = docBuilderFactory.newDocumentBuilder().parse(new File(dataValidationXMLFileName));                                                           
 
589
        
 
590
            Element root_ele = doc.getDocumentElement();
 
591
            NodeList nl = root_ele.getElementsByTagName("data-validation");
 
592
            for(i=0; i<nl.getLength();i++)
 
593
            {
 
594
                Element dv_ele = (Element) nl.item(i);
 
595
                if(dv_ele.getAttribute("id").equals(dvID))
 
596
                {
 
597
                        root_ele.removeChild(dv_ele);
 
598
                        i=-1;
 
599
                        break;
 
600
                }
 
601
            }
 
602
            if(i != -1) { System.out.println("Validation Not Found with that id"); return false;} 
 
603
            try 
 
604
            {
 
605
                // Prepare the DOM document for writing
 
606
                Source source = new DOMSource(doc);        
 
607
                // Prepare the output file
 
608
                File file = new File(dataValidationXMLFileName);
 
609
                Result result = new StreamResult(file);        
 
610
                // Write the DOM document to the file
 
611
                Transformer xformer = TransformerFactory.newInstance().newTransformer();
 
612
                xformer.transform(source, result);
 
613
            } 
 
614
            catch (TransformerConfigurationException e) { System.out.println(e.getMessage());  return false;} 
 
615
            catch (TransformerException e) {System.out.println(e.getMessage()); return false;}                                            
 
616
        }// try block end
 
617
        catch (SAXParseException err) 
 
618
        {
 
619
                System.out.println ("** Parsing error" + ", line " 
 
620
             + err.getLineNumber () + ", uri " + err.getSystemId ());
 
621
                System.out.println(" " + err.getMessage ());
 
622
                return false;
 
623
        }
 
624
        catch (SAXException e) 
 
625
        {
 
626
                Exception x = e.getException ();
 
627
                ((x == null) ? e : x).printStackTrace ();
 
628
                return false;
 
629
        }
 
630
        catch (Throwable t) 
 
631
        {
 
632
                t.printStackTrace ();
 
633
                return false;
 
634
        }
 
635
        System.out.println("Successfully Removed");
 
636
        return true;
 
637
        } //removeDataValidation
 
638
        
 
639
        /*
 
640
         * Returns the status
 
641
         */
 
642
        public int correctDVDataValues(int oUID,int dEID, int pID, int dValue)
 
643
        {
 
644
                PreparedStatement ps = null;
 
645
                                
 
646
                //String query ="UPDATE datavalue SET value=? WHERE source="+oUID+" AND dataElement="+dEID+" AND period="+pID;
 
647
                String query ="UPDATE datavalue SET value=? WHERE sourceid="+oUID+" AND dataelementid="+dEID+" AND periodid="+pID;
 
648
                int result = 1;
 
649
                try
 
650
                {
 
651
                        ps = con.prepareStatement(query);
 
652
                        ps.setInt(1,dValue);
 
653
                        result = ps.executeUpdate();    
 
654
                        System.out.println(oUID+"  "+dEID+"  "+pID+"  "+dValue+"  "+result);
 
655
                } // try block end
 
656
                catch(Exception e)      { System.out.println("Some Exception : "+e.getMessage()); return -1;    }
 
657
                finally
 
658
                {
 
659
                        try
 
660
                        {
 
661
                                if(ps!=null) ps.close();                                                
 
662
                        }
 
663
                        catch(Exception e){ System.out.println("Some Exception : "+e.getMessage()); return -1;}
 
664
                }// finally block end
 
665
                return result;  
 
666
        }//correctDVDataValues
 
667
}// class end