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 oracle.xml.parser.v2.DOMParser;
7    import oracle.xml.parser.v2.XMLDocument;
8    import oracle.xml.parser.v2.XMLNode;
9    import oracle.xml.parser.v2.XMLParseException;
10   import oracle.xml.parser.v2.XSLException;
11   import org.w3c.dom.Element;
12   import org.w3c.dom.NodeList;
13   import org.xml.sax.SAXException;
14   import com.instantbank.collections.util.StringFormat;
15   
16   public class SecurityProfilesTransformer
17       implements Serializable {
18   
19     private String[] Childid = null;
20     private String[] Childname;
21     private String coProfileId;
22     private String coAddComment;
23     private String coAddAccountToQueue;
24     private String coCancelLetter;
25     private String coChangeReviewTime;
26     private String coClearAddedAccount;
27     private String coChangeDemographics;
28     private String coTransferQueue;
29     private String coChangeComment;
30     private String coOrderLetter;
31     private String coActionCodeLevel;
32     private String coResultCodeLevel;
33     private String coSupervisorQueueId;
34     private String coRecordPromise;
35     private String coRestoreAccount;
36     private String coScheduleRepresentation;
37     private String coSecurityAdministrator;
38     private String coStatementReprint;
39     private String coSystemAdministrator;
40     private String coAccountTransfer;
41     private String coPayoffQuote;
42     private String coSkipAccount;
43     private String coSupervisor;
44     private NodeList nlCategory;
45     private NodeList nlChildId;
46     private int nlChildLen;
47     private NodeList nlChildName;
48     private int nlLength;
49     private NodeList nlName;
50     private NodeList nlQueues;
51     private String[] Parid;
52     private String[] Parname;
53     private String ParName;
54     private String prData;
55     private XMLDocument xmlProfiles;
56     private XMLDocument xmlQueues;
57   
58   
59     public String getAccessLevel(String Type, String name) {
60       String genericVal = new String();
61   
62       if(name.equals("orderLetter")) {
63         genericVal = coOrderLetter;
64       }
65       else if(name.equals("actionCodeLevel")) {
66         genericVal = coActionCodeLevel;
67       }
68       else if(name.equals("resultCodeLevel")) {
69         genericVal = coResultCodeLevel;
70       }
71   
72       return genericVal;
73     }
74   
75   
76     public String getQueueOptions() {
77   
78       String Body = null;
79       char Ch = '"';
80       String Head = null;
81       int j = 0;
82       int l = 0;
83       int queues;
84   
85       if(Childid == null) {
86         queues = 0;
87       }
88       else {
89         queues = Childid.length;
90       }
91       l = queues + 1;
92       Head = "numberOfQueues = " + l + "; \n";
93       Body = "QueuesArray[0] = new Queue(" + Ch + Ch + "," + Ch + Ch + "," + Ch + Ch + "," + Ch + Ch + ");\n";
94       ;
95   
96       for(int i = 0; i < queues; i++) {
97         Childid[i] = StringFormat.toSafeJavaString(Childid[i]);
98         Childname[i] = StringFormat.toSafeJavaString(Childname[i]);
99         Parid[i] = StringFormat.toSafeJavaString(Parid[i]);
100        Parname[i] = StringFormat.toSafeJavaString(Parname[i]);
101        j = i + 1;
102        Body = Body +
103          "QueuesArray[" + j + "] = new Queue(" + Ch + Childid[i] + Ch +
104          "," + Ch + Childname[i] + Ch + "," + Ch + Parid[i] + Ch + "," + Ch + Parname[i] + Ch + ");\n";
105  
106      }
107      return (Head + Body);
108    }
109  
110  
111    public String getRoleChecked(String Type, String name) {
112      String genericVal = new String();
113  
114      if(name.equals("addComment")) {
115        genericVal = coAddComment;
116      }
117      else if(name.equals("addAccountToQueue")) {
118        genericVal = coAddAccountToQueue;
119      }
120      else if(name.equals("cancelLetter")) {
121        genericVal = coCancelLetter;
122      }
123      else if(name.equals("changeReviewTime")) {
124        genericVal = coChangeReviewTime;
125      }
126      else if(name.equals("clearAddedAccount")) {
127        genericVal = coClearAddedAccount;
128      }
129      else if(name.equals("changeDemographics")) {
130        genericVal = coChangeDemographics;
131      }
132      else if(name.equals("transferQueue")) {
133        genericVal = coTransferQueue;
134      }
135      else if(name.equals("changeComment")) {
136        genericVal = coChangeComment;
137      }
138      else if(name.equals("recordPromise")) {
139        genericVal = coRecordPromise;
140      }
141      else if(name.equals("restoreAccount")) {
142        genericVal = coRestoreAccount;
143      }
144      else if(name.equals("scheduleRepresentation")) {
145        genericVal = coScheduleRepresentation;
146      }
147      else if(name.equals("securityAdministrator")) {
148        genericVal = coSecurityAdministrator;
149      }
150      else if(name.equals("statementReprint")) {
151        genericVal = coStatementReprint;
152      }
153      else if(name.equals("systemAdministrator")) {
154        genericVal = coSystemAdministrator;
155      }
156      else if(name.equals("accountTransfer")) {
157        genericVal = coAccountTransfer;
158      }
159      else if(name.equals("payoffQuote")) {
160        genericVal = coPayoffQuote;
161      }
162      else if(name.equals("skipAccount")) {
163        genericVal = coSkipAccount;
164      }
165      else if(name.equals("supervisor")) {
166        genericVal = coSupervisor;
167      }
168  
169      if(genericVal.equals("0")) {
170        return "false";
171      }
172      else {
173        return "true";
174      }
175    }
176  
177  
178    public String getSupervisorQueue(String Type) {
179      String genericVal = new String();
180  
181      if(coSupervisorQueueId.equals("_")) {
182        genericVal = "";
183      }
184      else {
185        genericVal = coSupervisorQueueId;
186      }
187  
188      return genericVal;
189    }
190  
191  
192    public XMLDocument parseInfo(String data) throws XMLParseException, XSLException, SAXException, IOException {
193      DOMParser docParser = new DOMParser();
194      ByteArrayInputStream stream;
195      XMLDocument xmlDoc;
196  
197      xmlDoc = null;
198      prData = prData + data;
199      stream = new ByteArrayInputStream(data.getBytes());
200      docParser.setValidationMode(false);
201      docParser.parse(stream);
202      xmlDoc = docParser.getDocument();
203      return xmlDoc;
204    }
205  
206  
207    public void setProfiles(String data) throws XMLParseException, XSLException, SAXException, IOException {
208      xmlProfiles = parseInfo(data);
209      coProfileId = xmlProfiles.valueOf("/Profiles/Collections/profileid");
210      coAddComment = xmlProfiles.valueOf("/Profiles/Collections/addcomment");
211      coAddAccountToQueue = xmlProfiles.valueOf("/Profiles/Collections/addaccounttoqueue");
212      coCancelLetter = xmlProfiles.valueOf("/Profiles/Collections/cancelletter");
213      coChangeReviewTime = xmlProfiles.valueOf("/Profiles/Collections/changereviewtime");
214      coClearAddedAccount = xmlProfiles.valueOf("/Profiles/Collections/clearaddedaccount");
215      coChangeDemographics = xmlProfiles.valueOf("/Profiles/Collections/changedemographics");
216      coTransferQueue = xmlProfiles.valueOf("/Profiles/Collections/transferqueue");
217      coChangeComment = xmlProfiles.valueOf("/Profiles/Collections/changecomment");
218      coOrderLetter = xmlProfiles.valueOf("/Profiles/Collections/orderletter");
219      coActionCodeLevel = xmlProfiles.valueOf("/Profiles/Collections/actioncodelevel");
220      coResultCodeLevel = xmlProfiles.valueOf("/Profiles/Collections/resultcodelevel");
221      coSupervisorQueueId = xmlProfiles.valueOf("/Profiles/Collections/supervisorqueueid");
222      coRecordPromise = xmlProfiles.valueOf("/Profiles/Collections/recordpromise");
223      coRestoreAccount = xmlProfiles.valueOf("/Profiles/Collections/restoreaccounttoqueue");
224      coScheduleRepresentation = xmlProfiles.valueOf("/Profiles/Collections/schedulerepresentation");
225      coSecurityAdministrator = xmlProfiles.valueOf("/Profiles/Collections/securityadministrator");
226      coStatementReprint = xmlProfiles.valueOf("/Profiles/Collections/statementreprint");
227      coSystemAdministrator = xmlProfiles.valueOf("/Profiles/Collections/systemadministrator");
228      coAccountTransfer = xmlProfiles.valueOf("/Profiles/Collections/accounttransfer");
229      coPayoffQuote = xmlProfiles.valueOf("/Profiles/Collections/payoffquote");
230      coSkipAccount = xmlProfiles.valueOf("/Profiles/Collections/skipaccount");
231      coSupervisor = xmlProfiles.valueOf("/Profiles/Collections/supervisor");
232    }
233  
234  
235    public void setQueues(String data, String type) throws XMLParseException, XSLException, SAXException, IOException {
236      XMLNode node;
237      XMLNode nodeChild;
238      Element ParElement;
239  
240      try {
241        xmlQueues = parseInfo(data);
242        ParElement = xmlQueues.getDocumentElement();
243        nlQueues = ParElement.getChildNodes();
244        nlLength = nlQueues.getLength();
245        ParName = new String();
246        for(int i = 0; i < nlLength; i++) {
247          node = (XMLNode)nlQueues.item(i);
248          ParName = node.valueOf("./name");
249          if(type.equals(node.valueOf("./category"))) {
250            nlChildId = node.selectNodes("./ChildQueues/Queue/id/text()");
251            nlChildName = node.selectNodes("./ChildQueues/Queue/name/text()");
252            nlChildLen = nlChildId.getLength();
253  
254            if(!(Childid == null)) {
255              Childid = null;
256              Childname = null;
257              Parid = null;
258              Parname = null;
259            }
260  
261            Childid = new String[nlChildLen];
262            Childname = new String[nlChildLen];
263            Parid = new String[nlChildLen];
264            Parname = new String[nlChildLen];
265  
266            for(int j = 0; j < nlChildLen; j++) {
267              Childid[j] = nlChildId.item(j).getNodeValue();
268  
269              Childname[j] = nlChildName.item(j).getNodeValue();
270              Parid[j] = "0";
271              Parname[j] = ParName;
272            }
273          }
274        }
275      }
276      catch(Exception e) {
277        System.out.println("debug --> Security Profiles Exception: " + e.toString());
278        e.printStackTrace(System.out);
279      }
280    }
281  }
282