package gov.va.ds4p.cas.providers; import gov.va.ds4p.policy.reference.ApplicableObligationPolicies; import gov.va.ds4p.policy.reference.ApplicableRefrainPolicies; import gov.va.ds4p.policy.reference.ApplicableSensitivityCodes; import gov.va.ds4p.policy.reference.ApplicableUSLaws; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintStream; import java.io.StringReader; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; public class VocabularyProvider { private String senseFile = "/vocabulary/SensitivityCodes.xml"; private String obFile = "/vocabulary/ObligationPolicies.xml"; private String refrainFile = "/vocabulary/RefrainPolicies.xml"; private String lawFile = "/vocabulary/USPrivacyLawReferences.xml"; private ApplicableObligationPolicies documentHandlingObligations; private ApplicableRefrainPolicies refrainObligations; private ApplicableSensitivityCodes dataSegmentationObligations; private ApplicableUSLaws privacyLawObligations; public VocabularyProvider() { ProcessVocabulary(this.senseFile, "sensitivities"); ProcessVocabulary(this.obFile, "obligations"); ProcessVocabulary(this.refrainFile, "refrainpolicies"); ProcessVocabulary(this.lawFile, "privacylaw"); } private void ProcessVocabulary(String fname, String vType) { try { BufferedReader r = new BufferedReader(new InputStreamReader( getClass().getResourceAsStream(fname))); ByteArrayOutputStream aout = new ByteArrayOutputStream(); BufferedWriter wtr = new BufferedWriter( new OutputStreamWriter(aout)); int result = r.read(); while (result != -1) { byte b = (byte) result; aout.write(b); result = r.read(); } String res = aout.toString(); aout.close(); r.close(); if (vType.equals("sensitivities")) { createSensitivityObjectsFromXML(res); } else if (vType.equals("obligations")) { createObligationObjectsFromXML(res); } else if (vType.equals("refrainpolicies")) { createRefrainPolicyObjectsFromXML(res); } else if (vType.equals("privacylaw")) { createUSPrivacyLawObjectsFromXML(res); } } catch (Exception ex) { ex.printStackTrace(); System.out.println("ERROR: VOCABULARYPROVIDER: " + ex.getMessage()); } } private void createSensitivityObjectsFromXML(String c32) { try { JAXBContext context = JAXBContext .newInstance(new Class[] { ApplicableSensitivityCodes.class }); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(c32); Object o = unmarshaller.unmarshal(sr); setDataSegmentationObligations((ApplicableSensitivityCodes) o); } catch (Exception e) { e.printStackTrace(); } } private void createObligationObjectsFromXML(String c32) { try { JAXBContext context = JAXBContext .newInstance(new Class[] { ApplicableObligationPolicies.class }); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(c32); Object o = unmarshaller.unmarshal(sr); setDocumentHandlingObligations((ApplicableObligationPolicies) o); } catch (Exception e) { e.printStackTrace(); } } private void createRefrainPolicyObjectsFromXML(String c32) { try { JAXBContext context = JAXBContext .newInstance(new Class[] { ApplicableRefrainPolicies.class }); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(c32); Object o = unmarshaller.unmarshal(sr); setRefrainObligations((ApplicableRefrainPolicies) o); } catch (Exception e) { e.printStackTrace(); } } private void createUSPrivacyLawObjectsFromXML(String c32) { try { JAXBContext context = JAXBContext .newInstance(new Class[] { ApplicableUSLaws.class }); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(c32); Object o = unmarshaller.unmarshal(sr); setPrivacyLawObligations((ApplicableUSLaws) o); } catch (Exception e) { e.printStackTrace(); } } public ApplicableObligationPolicies getDocumentHandlingObligations() { return this.documentHandlingObligations; } public void setDocumentHandlingObligations( ApplicableObligationPolicies documentHandlingObligations) { this.documentHandlingObligations = documentHandlingObligations; } public ApplicableRefrainPolicies getRefrainObligations() { return this.refrainObligations; } public void setRefrainObligations( ApplicableRefrainPolicies refrainObligations) { this.refrainObligations = refrainObligations; } public ApplicableSensitivityCodes getDataSegmentationObligations() { return this.dataSegmentationObligations; } public void setDataSegmentationObligations( ApplicableSensitivityCodes dataSegmentationObligations) { this.dataSegmentationObligations = dataSegmentationObligations; } public ApplicableUSLaws getPrivacyLawObligations() { return this.privacyLawObligations; } public void setPrivacyLawObligations(ApplicableUSLaws privacyLawObligations) { this.privacyLawObligations = privacyLawObligations; } }