1    package com.instantbank.collections.security.web;
2    
3    import java.io.ByteArrayInputStream;
4    import java.io.IOException;
5    import java.io.Serializable;
6    import java.util.Vector;
7    import oracle.xml.parser.v2.DOMParser;
8    import oracle.xml.parser.v2.XMLDocument;
9    import oracle.xml.parser.v2.XMLNode;
10   import oracle.xml.parser.v2.XMLParseException;
11   import oracle.xml.parser.v2.XSLException;
12   import org.w3c.dom.Element;
13   import org.w3c.dom.NodeList;
14   import org.xml.sax.SAXException;
15   import com.instantbank.collections.util.StringFormat;
16   
17   public class SecurityReportTransformer
18       implements Serializable {
19     private Vector groupName;
20     private int nlLength;
21     private NodeList nlParents;
22     private Vector userNumber;
23     private Vector userName;
24     private Vector userStatus;
25     private XMLDocument xmlGroups;
26   
27   
28     public String getUserArray() {
29       String Body = null;
30       String Asignament = null;
31       char Ch = '"';
32       String elementGroupName = new String();
33       String elementUserNumber = new String();
34       String elementUserName = new String();
35       String elementUserStatus = new String();
36       String Head = null;
37       int j = 0;
38       int l = 0;
39   
40       l = userNumber.size();
41       Head = "numberOfUsers = " + l + "; \n";
42       Body = "";
43       for(int i = 0; i < userNumber.size(); i++) {
44         elementGroupName = StringFormat.toSafeJavaString((String)groupName.elementAt(i));
45         elementUserNumber = StringFormat.toSafeJavaString((String)userNumber.elementAt(i));
46         elementUserName = StringFormat.toSafeJavaString((String)userName.elementAt(i));
47         if(userStatus.elementAt(i).equals("1")) {
48           elementUserStatus = "Active";
49         }
50         else if(userStatus.elementAt(i).equals("2")) {
51           elementUserStatus = "Inactive";
52         }
53         else if(userStatus.elementAt(i).equals("3")) {
54           elementUserStatus = "Reset";
55         }
56         Body = Body +
57           "usersArray[" + i + "] = new user(" + Ch + elementGroupName + Ch +
58           "," + Ch + elementUserNumber + Ch + "," + Ch + elementUserName + Ch +
59           "," + Ch + elementUserStatus + Ch + ");\n";
60       }
61       return (Head + Body);
62     }
63   
64   
65     public XMLDocument parseInfo(String data) throws XMLParseException, XSLException, SAXException, IOException {
66       DOMParser docParser = new DOMParser();
67       ByteArrayInputStream stream;
68       XMLDocument xmlDoc;
69   
70       xmlDoc = null;
71       stream = new ByteArrayInputStream(data.getBytes());
72       docParser.setValidationMode(false);
73       docParser.parse(stream);
74       xmlDoc = docParser.getDocument();
75       return xmlDoc;
76     }
77   
78   
79     public void setData(String data) throws XMLParseException, XSLException, SAXException, IOException {
80       NodeList nlUsers;
81       XMLNode node;
82       XMLNode nodeUsers;
83       Element parElement;
84   
85       xmlGroups = parseInfo(data);
86       parElement = xmlGroups.getDocumentElement();
87       nlParents = parElement.getChildNodes();
88       nlLength = nlParents.getLength();
89       groupName = new Vector();
90       userNumber = new Vector();
91       userName = new Vector();
92       userStatus = new Vector();
93       for(int i = 0; i < nlLength; i++) {
94         node = (XMLNode)nlParents.item(i);
95         nlUsers = node.selectNodes("./ChildUsers/User");
96         for(int j = 0; j < nlUsers.getLength(); j++) {
97           groupName.addElement(node.valueOf("./name"));
98           nodeUsers = (XMLNode)nlUsers.item(j);
99           userNumber.addElement(nodeUsers.valueOf("./userid"));
100          userName.addElement(nodeUsers.valueOf("./name"));
101          userStatus.addElement(nodeUsers.valueOf("./status"));
102        }
103        nlUsers = node.selectNodes("./ChildGroups");
104        if(nlUsers.getLength() > 0) {
105          setChildren(node);
106        }
107      }
108    }
109  
110  
111    public void setChildren(XMLNode parent) throws XSLException {
112      XMLNode childNode;
113      NodeList nlChild;
114      int nlChildLen;
115      NodeList nlChildren;
116      NodeList nlUsers;
117      XMLNode nodeUsers;
118  
119      nlChildren = parent.selectNodes("./ChildGroups/Group");
120      nlChildLen = nlChildren.getLength();
121      for(int j = 0; j < nlChildLen; j++) {
122        childNode = (XMLNode)nlChildren.item(j);
123        nlUsers = childNode.selectNodes("./ChildUsers/User");
124        for(int k = 0; k < nlUsers.getLength(); k++) {
125          groupName.addElement(childNode.valueOf("./name"));
126          nodeUsers = (XMLNode)nlUsers.item(k);
127          userNumber.addElement(nodeUsers.valueOf("./userid"));
128          userName.addElement(nodeUsers.valueOf("./name"));
129          userStatus.addElement(nodeUsers.valueOf("./status"));
130        }
131        nlChild = childNode.selectNodes("./ChildGroups");
132        if(nlChild.getLength() > 0) {
133          setChildren(childNode);
134        }
135      }
136    }
137  }
138