1    package com.instantbank.collections.commonQueuing.web;
2    
3    import java.io.ByteArrayInputStream;
4    import oracle.xml.parser.v2.DOMParser;
5    import oracle.xml.parser.v2.XMLDocument;
6    import oracle.xml.parser.v2.XMLNode;
7    import oracle.xml.parser.v2.XSLException;
8    import org.w3c.dom.Element;
9    import org.w3c.dom.NodeList;
10   import com.instantbank.collections.util.StringFormat;
11   
12   /**
13    * A Bean class.
14    * <P>
15    *
16    * @author Henry Alvarado
17    */
18   public class WorkLoadReviewTransformer {
19     private String groupsUserArray;
20     private int vectorPosition = 0;
21   
22   
23     public WorkLoadReviewTransformer() { }
24   
25   
26     public String getQueuesArray(String data) {
27       int i;
28       ByteArrayInputStream inputStream = null;
29       XMLDocument inxml;
30       XMLNode node;
31       NodeList nodeList;
32       Element root;
33       NodeList userList;
34       XMLNode userNode;
35       String vectorQueue = "";
36       DOMParser xmlParser = new DOMParser();
37   
38       try {
39         inputStream = new ByteArrayInputStream(data.getBytes());
40         xmlParser.setValidationMode(false);
41         xmlParser.parse(inputStream);
42         inxml = xmlParser.getDocument();
43         root = inxml.getDocumentElement();
44         nodeList = root.getChildNodes();
45   
46         for(i = 0; i < nodeList.getLength(); i++) {
47           node = (XMLNode)nodeList.item(i);
48           userList = node.selectNodes("./UserList/User");
49           for(int j = 0; j < userList.getLength(); j++) {
50             userNode = (XMLNode)userList.item(j);
51             vectorQueue += "userVector[" + j + "]= new QueueStatistics(" + "'" + userNode.valueOf("./userid") + "','" + userNode.valueOf("./totalaccounts") + "','" + userNode.valueOf("./totalworked") + "','" + userNode.valueOf("./transferin") + "','" + userNode.valueOf("./transferout") + "','" + userNode.valueOf("./totalremaining") + "','" + userNode.valueOf("./custcontacts") + "','" + userNode.valueOf("./attempcontact") + "','" + userNode.valueOf("./indirectcontact") + "','" + userNode.valueOf("./custpromises") + "'" + ");\n";
52           }
53           vectorQueue += "queueVector[" + i + "]= new QueueItem(" + node.valueOf("./id") + ",";
54           vectorQueue += "'" + StringFormat.toSafeJavaString(node.valueOf("./name")) + "',userVector);\n";
55           vectorQueue += "userVector.length=0;\n";
56         }
57         vectorQueue += "numQueues=" + i + "; \n";
58   
59       }
60       catch(Exception e) {
61         vectorQueue += "/* Error: " + e.getMessage() + " */\n";
62         vectorQueue += "numQueues=0;\n";
63       }
64       finally {
65         return vectorQueue;
66       }
67     }
68   
69   
70     public String getGroupsUsersArray(String data) {
71       DOMParser docParser = new DOMParser();
72       XMLDocument inxml;
73       int nlLength;
74       XMLNode node;
75       NodeList nodeList;
76       NodeList nodeListGroup;
77       NodeList nodeListUser;
78       XMLNode root;
79       ByteArrayInputStream stream = null;
80       String userId;
81       String xmlString = "";
82   
83       vectorPosition = 0;
84       groupsUserArray = "";
85       try {
86         stream = new ByteArrayInputStream(data.getBytes());
87         docParser.setValidationMode(false);
88         docParser.parse(stream);
89         inxml = docParser.getDocument();
90         root = (XMLNode)inxml.getDocumentElement();
91   
92         userId = root.valueOf("./Supervisor/id");
93         groupsUserArray += "groupsUsers[" + (vectorPosition++) + "] = new GroupUser(";
94         groupsUserArray += "'" + userId + "',";
95         groupsUserArray += "'0','" + StringFormat.toSafeJavaString(root.valueOf("./Supervisor/name")) + "',true,";
96         groupsUserArray += root.valueOf("./Supervisor/Summary/accounts") + ",";
97         groupsUserArray += root.valueOf("./Supervisor/Summary/worked") + ",";
98         groupsUserArray += root.valueOf("./Supervisor/Summary/transferredin") + ",";
99         groupsUserArray += root.valueOf("./Supervisor/Summary/transferredout") + ",";
100        groupsUserArray += root.valueOf("./Supervisor/Summary/remaining") + ",";
101        groupsUserArray += root.valueOf("./Supervisor/Summary/contacts") + ",";
102        groupsUserArray += root.valueOf("./Supervisor/Summary/indirectcontacts") + ",";
103        groupsUserArray += root.valueOf("./Supervisor/Summary/attemptedcontacts") + ",";
104        groupsUserArray += root.valueOf("./Supervisor/Summary/promises") + ",";
105        groupsUserArray += root.valueOf("./Supervisor/Summary/amountpromises") + ");\n";
106  
107        nodeList = root.selectNodes("./Group");
108        nlLength = nodeList.getLength();
109        for(int i = 0; i < nlLength; i++) {
110          node = (XMLNode)nodeList.item(i);
111          groupsUserArray += "groupsUsers[" + (vectorPosition++) + "] = new GroupUser('" + node.valueOf("./id") + "','0','" + StringFormat.toSafeJavaString(node.valueOf("./name")) + "',false,";
112          groupsUserArray += node.valueOf("./Summary/accounts") + ",";
113          groupsUserArray += node.valueOf("./Summary/worked") + ",";
114          groupsUserArray += node.valueOf("./Summary/transferredin") + ",";
115          groupsUserArray += node.valueOf("./Summary/transferredout") + ",";
116          groupsUserArray += node.valueOf("./Summary/remaining") + ",";
117          groupsUserArray += node.valueOf("./Summary/contacts") + ",";
118          groupsUserArray += node.valueOf("./Summary/indirectcontacts") + ",";
119          groupsUserArray += node.valueOf("./Summary/attemptedcontacts") + ",";
120          groupsUserArray += node.valueOf("./Summary/promises") + ",";
121          groupsUserArray += node.valueOf("./Summary/amountpromises") + ");\n";
122          nodeListUser = node.selectNodes("./ChildUsers");
123          if(nodeListUser.getLength() > 0) {
124            setChildrenUser(node, 0, 0);
125          }
126          nodeListGroup = node.selectNodes("./ChildGroups");
127          if(nodeListGroup.getLength() > 0) {
128            setChildrenGroupd(node, 0, 0);
129          }
130        }
131        groupsUserArray += "numUsers = " + vectorPosition + ";\n";
132      }
133      catch(Exception e) {
134      }
135      return groupsUserArray;
136    }
137  
138  
139    private void setChildrenUser(XMLNode parent, int position, int hierarchy) throws XSLException {
140      XMLNode childNode;
141      NodeList nlChild;
142      int nlChildLen;
143      NodeList nlChildren;
144  
145      nlChildren = parent.selectNodes("./ChildUsers/User");
146      nlChildLen = nlChildren.getLength();
147      int k = 0;
148      hierarchy = hierarchy + 1;
149      for(k = 0; k < nlChildLen; k++) {
150        childNode = (XMLNode)nlChildren.item(k);
151        groupsUserArray += "groupsUsers[" + vectorPosition + "] = new GroupUser('" + childNode.valueOf("./id") + "','" + hierarchy + "','" + StringFormat.toSafeJavaString(childNode.valueOf("./name")) + "',true,";
152        groupsUserArray += childNode.valueOf("./Summary/accounts") + ",";
153        groupsUserArray += childNode.valueOf("./Summary/worked") + ",";
154        groupsUserArray += childNode.valueOf("./Summary/transferredin") + ",";
155        groupsUserArray += childNode.valueOf("./Summary/transferredout") + ",";
156        groupsUserArray += childNode.valueOf("./Summary/remaining") + ",";
157        groupsUserArray += childNode.valueOf("./Summary/contacts") + ",";
158        groupsUserArray += childNode.valueOf("./Summary/indirectcontacts") + ",";
159        groupsUserArray += childNode.valueOf("./Summary/attemptedcontacts") + ",";
160        groupsUserArray += childNode.valueOf("./Summary/promises") + ",";
161        groupsUserArray += childNode.valueOf("./Summary/amountpromises") + ");\n";
162        vectorPosition++;
163      }
164    }
165  
166  
167    private void setChildrenGroupd(XMLNode parent, int position, int hierarchy) throws XSLException {
168      XMLNode childNode;
169      NodeList nlChildren;
170      NodeList nlChild;
171      int nlChildLen;
172      NodeList nlChildUser;
173  
174      nlChildren = parent.selectNodes("./ChildGroups/Group");
175      nlChildLen = nlChildren.getLength();
176      int k = 0;
177      hierarchy = hierarchy + 1;
178      for(k = 0; k < nlChildLen; k++) {
179        childNode = (XMLNode)nlChildren.item(k);
180        groupsUserArray += "groupsUsers[" + vectorPosition + "] = new GroupUser('" + childNode.valueOf("./id") + "','" + hierarchy + "','" + StringFormat.toSafeJavaString(childNode.valueOf("./name")) + "',false,";
181        groupsUserArray += childNode.valueOf("./Summary/accounts") + ",";
182        groupsUserArray += childNode.valueOf("./Summary/worked") + ",";
183        groupsUserArray += childNode.valueOf("./Summary/transferredin") + ",";
184        groupsUserArray += childNode.valueOf("./Summary/transferredout") + ",";
185        groupsUserArray += childNode.valueOf("./Summary/remaining") + ",";
186        groupsUserArray += childNode.valueOf("./Summary/contacts") + ",";
187        groupsUserArray += childNode.valueOf("./Summary/indirectcontacts") + ",";
188        groupsUserArray += childNode.valueOf("./Summary/attemptedcontacts") + ",";
189        groupsUserArray += childNode.valueOf("./Summary/promises") + ",";
190        groupsUserArray += childNode.valueOf("./Summary/amountpromises") + ");\n";
191        vectorPosition++;
192        nlChildUser = childNode.selectNodes("./ChildUsers");
193        if(nlChildUser.getLength() > 0) {
194          setChildrenUser(childNode, 0, hierarchy);
195        }
196        nlChild = childNode.selectNodes("./ChildGroups");
197        if(nlChild.getLength() > 0) {
198          setChildrenGroupd(childNode, 0, hierarchy);
199        }
200      }
201    }
202  
203  
204    private void jbInit() throws Exception { }
205  }
206  
207