Java tutorial
/* * Unless explicitly acquired and licensed from Licensor under another license, the contents of * this file are subject to the Reciprocal Public License ("RPL") Version 1.5, or subsequent * versions as allowed by the RPL, and You may not copy or use this file in either source code * or executable form, except in compliance with the terms and conditions of the RPL * * All software distributed under the RPL is provided strictly on an "AS IS" basis, WITHOUT * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND LICENSOR HEREBY DISCLAIMS ALL SUCH * WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the RPL for specific language * governing rights and limitations under the RPL. * * http://opensource.org/licenses/RPL-1.5 * * Copyright 2012-2015 Open Justice Broker Consortium */ package org.ojbc.bundles.adapters.staticmock.samplegen; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import net.sf.saxon.dom.DocumentBuilderFactoryImpl; import org.apache.commons.lang.RandomStringUtils; import org.joda.time.DateTime; import org.ojbc.util.xml.OjbcNamespaceContext; import org.ojbc.util.xml.XmlUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; public class CustodySampleGenerator extends AbstractSampleGenerator { private static final Random RANDOM = new Random(); private static final String CURRENT_DATE = DateTime.now().toString("yyyy-MM-dd"); public CustodySampleGenerator() throws ParserConfigurationException, IOException { super(); } public List<Document> generateCustodySamples(int recordCount) throws Exception { List<Document> rCustodyDocList = new ArrayList<Document>(recordCount); OjbcNamespaceContext ojbcNamespaceContext = new OjbcNamespaceContext(); for (int i = 0; i < recordCount; i++) { PersonElementWrapper iGeneratedPerson = getRandomIdentity(null); String recordId = String.valueOf(i); Document custodyDoc = buildCustodyDetailDoc(iGeneratedPerson, recordId); Element custodyDocRootElement = custodyDoc.getDocumentElement(); ojbcNamespaceContext.populateRootNamespaceDeclarations(custodyDocRootElement); rCustodyDocList.add(custodyDoc); } return rCustodyDocList; } Document buildCustodyDetailDoc(PersonElementWrapper person, String recordId) throws ParserConfigurationException { Document rCustodyDetailDoc = getNewDocument(); String personRecId = "Person_" + recordId; Element rootCustodyResultsElement = rCustodyDetailDoc .createElementNS(OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXCH_DOC, "CustodyQueryResults"); rootCustodyResultsElement.setPrefix(OjbcNamespaceContext.NS_PREFIX_CUSTODY_QUERY_RESULTS_EXCH_DOC); rCustodyDetailDoc.appendChild(rootCustodyResultsElement); Element docCreationDateElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_NC_30, "DocumentCreationDate"); Element dateTimeElement = XmlUtils.appendElement(docCreationDateElement, OjbcNamespaceContext.NS_NC_30, "DateTime"); dateTimeElement.setTextContent(CURRENT_DATE); Element documentIdElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_NC_30, "DocumentIdentification"); Element docIdValElement = XmlUtils.appendElement(documentIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String sDocId = RandomStringUtils.randomNumeric(7); docIdValElement.setTextContent(sDocId); Element sysIdElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_INTEL_31, "SystemIdentification"); Element sysIdValElement = XmlUtils.appendElement(sysIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String systemId = RandomStringUtils.randomNumeric(6); sysIdValElement.setTextContent(systemId); Element sysIdSystemNameElement = XmlUtils.appendElement(sysIdElement, OjbcNamespaceContext.NS_NC_30, "SystemName"); sysIdSystemNameElement.setTextContent("Custody Detail"); Element custodyElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "Custody"); Element bookingElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "Booking"); String bookingId = "Booking_" + recordId; XmlUtils.addAttribute(bookingElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", bookingId); Element activityDateElement = XmlUtils.appendElement(bookingElement, OjbcNamespaceContext.NS_NC_30, "ActivityDate"); Element activityDateTimeElement = XmlUtils.appendElement(activityDateElement, OjbcNamespaceContext.NS_NC_30, "DateTime"); activityDateTimeElement.setTextContent(CURRENT_DATE); Element detentionFacElement = XmlUtils.appendElement(bookingElement, OjbcNamespaceContext.NS_JXDM_51, "BookingDetentionFacility"); Element bookingFacIdElement = XmlUtils.appendElement(detentionFacElement, OjbcNamespaceContext.NS_NC_30, "FacilityIdentification"); Element facIdValElement = XmlUtils.appendElement(bookingFacIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String facIdSample = RandomStringUtils.randomNumeric(6); facIdValElement.setTextContent(facIdSample); Element bookingSubjectElement = XmlUtils.appendElement(bookingElement, OjbcNamespaceContext.NS_JXDM_51, "BookingSubject"); Element roleOfPersonElement = XmlUtils.appendElement(bookingSubjectElement, OjbcNamespaceContext.NS_NC_30, "RoleOfPerson"); XmlUtils.addAttribute(roleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", personRecId); Element bookingSubjectIdElement = XmlUtils.appendElement(bookingSubjectElement, OjbcNamespaceContext.NS_JXDM_51, "SubjectIdentification"); Element bookingSubjectIdValElement = XmlUtils.appendElement(bookingSubjectIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String bookingSubjectId = RandomStringUtils.randomAlphanumeric(8); bookingSubjectIdValElement.setTextContent(bookingSubjectId); Element detentionElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "Detention"); String detentionId = "Detention_" + recordId; XmlUtils.addAttribute(detentionElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", detentionId); Element detentionActivityDate = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_NC_30, "ActivityDate"); Element detentionDateValElement = XmlUtils.appendElement(detentionActivityDate, OjbcNamespaceContext.NS_NC_30, "Date"); detentionDateValElement.setTextContent(CURRENT_DATE); Element supervisionCustodyStatusElement = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_NC_30, "SupervisionCustodyStatus"); Element supervCustStatusDescTxtElement = XmlUtils.appendElement(supervisionCustodyStatusElement, OjbcNamespaceContext.NS_NC_30, "StatusDescriptionText"); List<String> supervCustStatusDecTxtList = Arrays.asList("Pretrial", "Post-Trial", "In-Trial"); int custStatusIndex = RANDOM.nextInt(supervCustStatusDecTxtList.size()); String custStatusSample = supervCustStatusDecTxtList.get(custStatusIndex); supervCustStatusDescTxtElement.setTextContent(custStatusSample); Element pretrialCatCodeElement = XmlUtils.appendElement(supervisionCustodyStatusElement, OjbcNamespaceContext.NS_ADAMS_CO_BOOKING_CODES_EXT, "PreTrialCategoryCode"); List<String> pretrialCatCodeList = Arrays.asList("C-SRP", "A-XYZ", "B-897"); int pretrialCatCodeIndex = RANDOM.nextInt(pretrialCatCodeList.size()); String pretrialCatCodeSample = pretrialCatCodeList.get(pretrialCatCodeIndex); pretrialCatCodeElement.setTextContent(pretrialCatCodeSample); Element supervisionAugmentElement = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_JXDM_51, "SupervisionAugmentation"); Element supervisionReleaseDateElement = XmlUtils.appendElement(supervisionAugmentElement, OjbcNamespaceContext.NS_JXDM_51, "SupervisionReleaseDate"); Element supervisionReleaseDateValElement = XmlUtils.appendElement(supervisionReleaseDateElement, OjbcNamespaceContext.NS_NC_30, "DateTime"); supervisionReleaseDateValElement.setTextContent(CURRENT_DATE); Element supervisionAreaIdElement = XmlUtils.appendElement(supervisionAugmentElement, OjbcNamespaceContext.NS_JXDM_51, "SupervisionAreaIdentification"); Element supervisionAreaIdValElement = XmlUtils.appendElement(supervisionAreaIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String supervisionAreaId = RandomStringUtils.randomNumeric(9); supervisionAreaIdValElement.setTextContent(supervisionAreaId); Element immigrationHoldElement = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "DetentiontImmigrationHoldIndicator"); boolean detentImmigHoldSample = RANDOM.nextBoolean(); String sDetentImmigHoldSample = String.valueOf(detentImmigHoldSample); immigrationHoldElement.setTextContent(sDetentImmigHoldSample); Element holdForAgencyElement = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "HoldForAgency"); Element orgNameElement = XmlUtils.appendElement(holdForAgencyElement, OjbcNamespaceContext.NS_NC_30, "OrganizationName"); List<String> holdForAgencyOrgNameList = Arrays.asList("Acme", "Chips"); int holdForAgencyIndex = RANDOM.nextInt(holdForAgencyOrgNameList.size()); String sHoldForAgencyOrgNameSample = holdForAgencyOrgNameList.get(holdForAgencyIndex); orgNameElement.setTextContent(sHoldForAgencyOrgNameSample); Element inmateWorkReleaseIndicator = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "InmateWorkReleaseIndicator"); boolean inmateWorkReleaseSample = RANDOM.nextBoolean(); String sInmateWorkReleaseSample = String.valueOf(inmateWorkReleaseSample); inmateWorkReleaseIndicator.setTextContent(sInmateWorkReleaseSample); Element inmateWorkerIndicatorElement = XmlUtils.appendElement(detentionElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "InmateWorkerIndicator"); boolean bInmateWorkerSample = RANDOM.nextBoolean(); String sInmateWorkerSample = String.valueOf(bInmateWorkerSample); inmateWorkerIndicatorElement.setTextContent(sInmateWorkerSample); Element bailBondElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "BailBond"); String bailBondId = "Bond_" + recordId; XmlUtils.addAttribute(bailBondElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", bailBondId); Element activityCatElement = XmlUtils.appendElement(bailBondElement, OjbcNamespaceContext.NS_NC_30, "ActivityCategoryText"); List<String> bailBondActivitySampleList = Arrays.asList("Traffic Violation", "Speeding", "Noise Violation"); int bailBondActivityIndex = RANDOM.nextInt(bailBondActivitySampleList.size()); String bailBondActivity = bailBondActivitySampleList.get(bailBondActivityIndex); activityCatElement.setTextContent(bailBondActivity); Element activityStatusElement = XmlUtils.appendElement(bailBondElement, OjbcNamespaceContext.NS_NC_30, "ActivityStatus"); Element activityStatusDescTxtElement = XmlUtils.appendElement(activityStatusElement, OjbcNamespaceContext.NS_NC_30, "StatusDescriptionText"); List<String> bailBondStatusList = Arrays.asList("Paid", "Unpaid", "Partial Payment"); int bailBondStatusIndex = RANDOM.nextInt(bailBondStatusList.size()); String sBailBond = bailBondStatusList.get(bailBondStatusIndex); activityStatusDescTxtElement.setTextContent(sBailBond); Element bailBondAmountElement = XmlUtils.appendElement(bailBondElement, OjbcNamespaceContext.NS_JXDM_51, "BailBondAmount"); Element bailBondAmountValElement = XmlUtils.appendElement(bailBondAmountElement, OjbcNamespaceContext.NS_NC_30, "Amount"); String sBailAmount = RandomStringUtils.randomNumeric(4); bailBondAmountValElement.setTextContent(sBailAmount); Element chargeElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "Charge"); String chargeId = "Charge_" + recordId; XmlUtils.addAttribute(chargeElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", chargeId); List<String> chargeCatList = Arrays.asList("Speeding", "Seat Belt Usage"); int chargeCatIndex = RANDOM.nextInt(chargeCatList.size()); String sChargeCatSample = chargeCatList.get(chargeCatIndex); Element chargeCatDescTxtElement = XmlUtils.appendElement(chargeElement, OjbcNamespaceContext.NS_JXDM_51, "ChargeCategoryDescriptionText"); chargeCatDescTxtElement.setTextContent(sChargeCatSample); List<String> chargeDescriptionTxtList = Arrays.asList("Intoxicated", "Speeding", "No Seatbelt"); int chargeDescRandomIndex = RANDOM.nextInt(chargeDescriptionTxtList.size()); String sChargeDesc = chargeDescriptionTxtList.get(chargeDescRandomIndex); Element chargeDescriptionTextElement = XmlUtils.appendElement(chargeElement, OjbcNamespaceContext.NS_JXDM_51, "ChargeDescriptionText"); chargeDescriptionTextElement.setTextContent(sChargeDesc); Element chargeHighestIndicatorElement = XmlUtils.appendElement(chargeElement, OjbcNamespaceContext.NS_JXDM_51, "ChargeHighestIndicator"); boolean bChargeHighestIndicatorSample = RANDOM.nextBoolean(); String sChargeHighestIndicatorSample = String.valueOf(bChargeHighestIndicatorSample); chargeHighestIndicatorElement.setTextContent(sChargeHighestIndicatorSample); Element chargeSequenceIDElement = XmlUtils.appendElement(chargeElement, OjbcNamespaceContext.NS_JXDM_51, "ChargeSequenceID"); String sChargeSeqId = RandomStringUtils.randomNumeric(7); chargeSequenceIDElement.setTextContent(sChargeSeqId); Element chargeStatuteElement = XmlUtils.appendElement(chargeElement, OjbcNamespaceContext.NS_JXDM_51, "ChargeStatute"); Element chargeStatuteCodeIdElement = XmlUtils.appendElement(chargeStatuteElement, OjbcNamespaceContext.NS_JXDM_51, "StatuteCodeSectionIdentification"); Element chargeStatuteCodeIdValElement = XmlUtils.appendElement(chargeStatuteCodeIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String sStatuteCodeId = RandomStringUtils.randomNumeric(6); chargeStatuteCodeIdValElement.setTextContent(sStatuteCodeId); // Arrest Element arrestElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "Arrest"); String arrestId = "Arrest_" + recordId; XmlUtils.addAttribute(arrestElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", arrestId); Element arrestAgencyElement = XmlUtils.appendElement(arrestElement, OjbcNamespaceContext.NS_JXDM_51, "ArrestAgency"); Element arrestOrgName = XmlUtils.appendElement(arrestAgencyElement, OjbcNamespaceContext.NS_NC_30, "OrganizationName"); List<String> arrestAgencyList = Arrays.asList("NYPD", "LAPD", "CHIPS", "Acme", "Matlock"); int arrestAgencyIndex = RANDOM.nextInt(arrestAgencyList.size()); String sArrestAgency = arrestAgencyList.get(arrestAgencyIndex); arrestOrgName.setTextContent(sArrestAgency); Element arrestLocationElement = XmlUtils.appendElement(arrestElement, OjbcNamespaceContext.NS_JXDM_51, "ArrestLocation"); String arrestLocationId = "Loc_" + recordId; XmlUtils.addAttribute(arrestLocationElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", arrestLocationId); Element nextCourtEventElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_NIEM_CYFS_31, "NextCourtEvent"); String nextCourtEventId = "Event_" + recordId; XmlUtils.addAttribute(nextCourtEventElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", nextCourtEventId); Element nextCourtActivityDateElement = XmlUtils.appendElement(nextCourtEventElement, OjbcNamespaceContext.NS_NC_30, "ActivityDate"); Element activityDateValElement = XmlUtils.appendElement(nextCourtActivityDateElement, OjbcNamespaceContext.NS_NC_30, "Date"); activityDateValElement.setTextContent(CURRENT_DATE); Element courtEventCourtElement = XmlUtils.appendElement(nextCourtEventElement, OjbcNamespaceContext.NS_JXDM_51, "CourtEventCourt"); Element courtNameElement = XmlUtils.appendElement(courtEventCourtElement, OjbcNamespaceContext.NS_JXDM_51, "CourtName"); List<String> courtNameSampleList = Arrays.asList("Matlock", "Supreme Court", "Traffic Court"); int courtSampleIndex = RANDOM.nextInt(courtNameSampleList.size()); String sCourtSample = courtNameSampleList.get(courtSampleIndex); courtNameElement.setTextContent(sCourtSample); Element personElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_NC_30, "Person"); XmlUtils.addAttribute(personElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", personRecId); DateTime personDob = person.birthdate; Element personBirthDateElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_NC_30, "PersonBirthDate"); Element personDobValElement = XmlUtils.appendElement(personBirthDateElement, OjbcNamespaceContext.NS_NC_30, "Date"); String sPersonDob = personDob.toString("yyyy-MM-dd"); personDobValElement.setTextContent(sPersonDob); Element personDigitalImgElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_NC_30, "PersonDigitalImage"); Element personImgBinElement = XmlUtils.appendElement(personDigitalImgElement, OjbcNamespaceContext.NS_NC_30, "Base64BinaryObject"); String sSampleImgBin = RandomStringUtils.randomAlphanumeric(20); personImgBinElement.setTextContent(sSampleImgBin); List<String> ethnicitySampleList = Arrays.asList("African American", "Latino", "Caucasion"); int ethnicityRandomIndex = RANDOM.nextInt(ethnicitySampleList.size()); String ethnicitySample = ethnicitySampleList.get(ethnicityRandomIndex); Element ethnicityElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_JXDM_51, "PersonEthnicityCode"); ethnicityElement.setTextContent(ethnicitySample); Element personNameElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_NC_30, "PersonName"); String sPersonFirstName = person.firstName; Element personGivenNameElement = XmlUtils.appendElement(personNameElement, OjbcNamespaceContext.NS_NC_30, "PersonGivenName"); personGivenNameElement.setTextContent(sPersonFirstName); String sPersonMiddleName = person.middleName; Element personMiddleNameElement = XmlUtils.appendElement(personNameElement, OjbcNamespaceContext.NS_NC_30, "PersonMiddleName"); personMiddleNameElement.setTextContent(sPersonMiddleName); String sPersonLastName = person.lastName; Element personSurNameElement = XmlUtils.appendElement(personNameElement, OjbcNamespaceContext.NS_NC_30, "PersonSurName"); personSurNameElement.setTextContent(sPersonLastName); List<String> raceSampleList = Arrays.asList("B", "A", "W"); int raceIndex = RANDOM.nextInt(raceSampleList.size()); String sRandomRace = raceSampleList.get(raceIndex); Element personRaceElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_JXDM_51, "PersonRaceCode"); personRaceElement.setTextContent(sRandomRace); Element personResidentTxtElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_NC_30, "PersonResidentText"); String sampleResidentTxt = person.addressStreetName; personResidentTxtElement.setTextContent(sampleResidentTxt); String sPersonSex = person.sex; Element personSexElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_JXDM_51, "PersonSexCode"); personSexElement.setTextContent(sPersonSex); String sPersonSSN = RandomStringUtils.randomNumeric(9); Element personSsnElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_NC_30, "PersonSSNIdentification"); Element personSsnValElement = XmlUtils.appendElement(personSsnElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); personSsnValElement.setTextContent(sPersonSSN); Element personAugmentElement = XmlUtils.appendElement(personElement, OjbcNamespaceContext.NS_JXDM_51, "PersonAugmentation"); Element personStateFingerIdElement = XmlUtils.appendElement(personAugmentElement, OjbcNamespaceContext.NS_JXDM_51, "PersonStateFingerprintIdentification"); Element personStateFingerIdValElement = XmlUtils.appendElement(personStateFingerIdElement, OjbcNamespaceContext.NS_NC_30, "IdentificationID"); String sPersonSid = RandomStringUtils.randomAlphanumeric(8); personStateFingerIdValElement.setTextContent(sPersonSid); Element locationElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_NC_30, "Location"); String locationId = "Loc_" + recordId; XmlUtils.addAttribute(locationElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", locationId); Element locationAddressElement = XmlUtils.appendElement(locationElement, OjbcNamespaceContext.NS_NC_30, "Address"); Element locAddressFullElement = XmlUtils.appendElement(locationAddressElement, OjbcNamespaceContext.NS_NC_30, "AddressFullText"); String locAddress = person.addressStreetName; locAddressFullElement.setTextContent(locAddress); Element activityChargeAssocElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "ActivityChargeAssociation"); Element activityBookingElement = XmlUtils.appendElement(activityChargeAssocElement, OjbcNamespaceContext.NS_NC_30, "Activity"); XmlUtils.addAttribute(activityBookingElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", bookingId); Element activityEventElement = XmlUtils.appendElement(activityChargeAssocElement, OjbcNamespaceContext.NS_NC_30, "Activity"); XmlUtils.addAttribute(activityEventElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", nextCourtEventId); Element activityDetentionElement = XmlUtils.appendElement(activityChargeAssocElement, OjbcNamespaceContext.NS_NC_30, "Activity"); XmlUtils.addAttribute(activityDetentionElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", detentionId); Element activityArrestElement = XmlUtils.appendElement(activityChargeAssocElement, OjbcNamespaceContext.NS_NC_30, "Activity"); XmlUtils.addAttribute(activityArrestElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", arrestId); Element activityChargeElement = XmlUtils.appendElement(activityChargeAssocElement, OjbcNamespaceContext.NS_JXDM_51, "Charge"); XmlUtils.addAttribute(activityChargeElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", chargeId); Element bailBondChargeAssocElement = XmlUtils.appendElement(custodyElement, OjbcNamespaceContext.NS_JXDM_51, "BailBondChargeAssociation"); Element bailBondRefElement = XmlUtils.appendElement(bailBondChargeAssocElement, OjbcNamespaceContext.NS_JXDM_51, "BailBond"); XmlUtils.addAttribute(bailBondRefElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", bailBondId); Element bailBondChargeRefElement = XmlUtils.appendElement(bailBondChargeAssocElement, OjbcNamespaceContext.NS_JXDM_51, "Charge"); XmlUtils.addAttribute(bailBondChargeRefElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", chargeId); Element sourceSysNameTxtElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "SourceSystemNameText"); sourceSysNameTxtElement.setTextContent("Custody"); Element queryResultCatTxtElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "QueryResultCategoryText"); queryResultCatTxtElement.setTextContent("Custody Detail"); Element infoOwningOrgElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_CUSTODY_QUERY_RESULTS_EXT, "InformationOwningOrganization"); List<String> orgBranchNameList = Arrays.asList("Police", "Fire Department", "Public Safety", "EMT"); int branchNameIndex = RANDOM.nextInt(orgBranchNameList.size()); String sBranchName = orgBranchNameList.get(branchNameIndex); Element orgBranchNameElement = XmlUtils.appendElement(infoOwningOrgElement, OjbcNamespaceContext.NS_NC_30, "OrganizationBranchName"); orgBranchNameElement.setTextContent(sBranchName); Element infoOwnOrgElement = XmlUtils.appendElement(infoOwningOrgElement, OjbcNamespaceContext.NS_NC_30, "OrganizationName"); List<String> orgNameList = Arrays.asList("FLPD", "RIPD", "HIPD", "MEPD"); int orgNameIndex = RANDOM.nextInt(orgNameList.size()); String sOrgSample = orgNameList.get(orgNameIndex); infoOwnOrgElement.setTextContent(sOrgSample); Element metadataElement = XmlUtils.appendElement(rootCustodyResultsElement, OjbcNamespaceContext.NS_NC_30, "Metadata"); Element lastUpdatedDateElement = XmlUtils.appendElement(metadataElement, OjbcNamespaceContext.NS_NC_30, "LastUpdatedDate"); Element lastUpdatedDateValElement = XmlUtils.appendElement(lastUpdatedDateElement, OjbcNamespaceContext.NS_NC_30, "Date"); lastUpdatedDateValElement.setTextContent(CURRENT_DATE); OjbcNamespaceContext ojbcNamespaceContext = new OjbcNamespaceContext(); ojbcNamespaceContext.populateRootNamespaceDeclarations(rootCustodyResultsElement); return rCustodyDetailDoc; } private Document getNewDocument() throws ParserConfigurationException { DocumentBuilderFactory dbf = DocumentBuilderFactoryImpl.newInstance(); DocumentBuilder docBuilder = dbf.newDocumentBuilder(); Document doc = docBuilder.newDocument(); return doc; } }