org.ojbc.bundles.adapters.staticmock.samplegen.VehicleCrashSampleGenerator.java Source code

Java tutorial

Introduction

Here is the source code for org.ojbc.bundles.adapters.staticmock.samplegen.VehicleCrashSampleGenerator.java

Source

/*
 * 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 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 VehicleCrashSampleGenerator extends AbstractSampleGenerator {

    private static final String CURRENT_DATE = DateTime.now().toString("yyyy-MM-dd");

    public VehicleCrashSampleGenerator() throws ParserConfigurationException, IOException {

        super();
    }

    public List<Document> generateVehicleCrashDetailSamples(int recordCount) throws Exception {

        List<Document> rVehicleCrashDocList = new ArrayList<Document>();

        for (int i = 0; i < recordCount; i++) {

            PersonElementWrapper iGeneratedPerson = getRandomIdentity(null);

            Document vehicleCrashDetailDoc = buildVehicleCrashDetailDoc(iGeneratedPerson);

            rVehicleCrashDocList.add(vehicleCrashDetailDoc);
        }

        return rVehicleCrashDocList;
    }

    private Document buildVehicleCrashDetailDoc(PersonElementWrapper iGeneratedPerson)
            throws ParserConfigurationException, IOException {

        PersonElementWrapper randomPerson2 = getRandomIdentity(null);

        Document rVehicleCrashDetailDoc = getNewDocument();

        Element rootVehicCrashElement = rVehicleCrashDetailDoc.createElementNS(
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXCH_DOC, "VehicleCrashQueryResults");
        rootVehicCrashElement.setPrefix(OjbcNamespaceContext.NS_PREFIX_VEHICLE_CRASH_QUERY_RESULT_EXCH_DOC);

        rVehicleCrashDetailDoc.appendChild(rootVehicCrashElement);

        Element vehicleCrashReportElement = XmlUtils.appendElement(rootVehicCrashElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "VehicleCrashReport");

        Element docCreateDateElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "DocumentCreationDate");

        Element docCreateDateValElement = XmlUtils.appendElement(docCreateDateElement,
                OjbcNamespaceContext.NS_NC_30, "Date");

        docCreateDateValElement.setTextContent(CURRENT_DATE);

        Element docIdElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_NC_30,
                "DocumentIdentification");

        Element docIdValElement = XmlUtils.appendElement(docIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String sampleDocId = RandomStringUtils.randomNumeric(9);
        docIdValElement.setTextContent(sampleDocId);

        Element docApprovedDateElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "DocumentApprovedDate");

        Element docApprovedDateValElement = XmlUtils.appendElement(docApprovedDateElement,
                OjbcNamespaceContext.NS_NC_30, "Date");
        docApprovedDateValElement.setTextContent(CURRENT_DATE);

        Element crashElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_JXDM_51,
                "Crash");

        XmlUtils.addAttribute(crashElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Crash_01");

        Element activityDateElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_NC_30,
                "ActivityDate");

        Element dateTimeElement = XmlUtils.appendElement(activityDateElement, OjbcNamespaceContext.NS_NC_30,
                "DateTime");
        dateTimeElement.setTextContent(CURRENT_DATE);

        Element activityAugmentElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_JXDM_51,
                "ActivityAugmentation");

        Element narrativeElement = XmlUtils.appendElement(activityAugmentElement, OjbcNamespaceContext.NS_JXDM_51,
                "Narrative");

        Element narrativeCommentTxtElement = XmlUtils.appendElement(narrativeElement, OjbcNamespaceContext.NS_NC_30,
                "CommentText");

        List<String> sampleNarrativeList = Arrays.asList("Pileup", "Rush Hour", "Car hit a truck");

        String sampleNarrative = (String) generateRandomValueFromList(sampleNarrativeList);

        narrativeCommentTxtElement.setTextContent(sampleNarrative);

        Element incidentAugmentElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_JXDM_51,
                "IncidentAugmentation");

        Element incidentDamagedItemElement = XmlUtils.appendElement(incidentAugmentElement,
                OjbcNamespaceContext.NS_JXDM_51, "IncidentDamagedItem");

        Element itemDescTxtElement = XmlUtils.appendElement(incidentDamagedItemElement,
                OjbcNamespaceContext.NS_NC_30, "ItemDescriptionText");

        List<String> sampleDamagedItemList = Arrays.asList("Ferrari", "School Bus", "Hummer", "Lamborghini",
                "Camaro");

        String sampleDamagedItem = (String) generateRandomValueFromList(sampleDamagedItemList);

        itemDescTxtElement.setTextContent(sampleDamagedItem);

        Element itemOwnerElement = XmlUtils.appendElement(incidentDamagedItemElement, OjbcNamespaceContext.NS_NC_30,
                "ItemOwner");

        Element itemOwnerEntOrgElement = XmlUtils.appendElement(itemOwnerElement, OjbcNamespaceContext.NS_NC_30,
                "EntityOrganization");

        XmlUtils.addAttribute(itemOwnerEntOrgElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Property_Owner_01");

        Element entityPersonElement = XmlUtils.appendElement(itemOwnerEntOrgElement, OjbcNamespaceContext.NS_NC_30,
                "EntityPerson");

        XmlUtils.addAttribute(entityPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Property_Owner_02");

        Element crashCodesElement = XmlUtils.appendElement(incidentDamagedItemElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "PropertyCategoryCode");

        List<String> sampleCrashCodeList = Arrays.asList("SB", "CA", "FER", "LMB");

        String sampleCrashCode = (String) generateRandomValueFromList(sampleCrashCodeList);

        crashCodesElement.setTextContent(sampleCrashCode);

        Element incidentReportingOfficialElement = XmlUtils.appendElement(incidentAugmentElement,
                OjbcNamespaceContext.NS_JXDM_51, "IncidentReportingOfficial");

        Element roleOfPersonElement = XmlUtils.appendElement(incidentReportingOfficialElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");

        XmlUtils.addAttribute(roleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Reporting_Official_01");

        Element badgeIdElement = XmlUtils.appendElement(incidentReportingOfficialElement,
                OjbcNamespaceContext.NS_JXDM_51, "EnforcementOfficialBadgeIdentification");

        Element badgeIdValElement = XmlUtils.appendElement(badgeIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String sampleBadgeId = RandomStringUtils.randomNumeric(8);

        badgeIdValElement.setTextContent(sampleBadgeId);

        Element incidentWitnessElement = XmlUtils.appendElement(incidentAugmentElement,
                OjbcNamespaceContext.NS_JXDM_51, "IncidentWitness");

        Element witnessRolePersonElement = XmlUtils.appendElement(incidentWitnessElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");

        XmlUtils.addAttribute(witnessRolePersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Witness_01");

        Element crashInfoSourceElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_JXDM_51,
                "CrashInformationSource");

        Element orgORIIdElement = XmlUtils.appendElement(crashInfoSourceElement, OjbcNamespaceContext.NS_JXDM_51,
                "OrganizationORIIdentification");

        Element orgOriIdValElement = XmlUtils.appendElement(orgORIIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String sampleOriId = RandomStringUtils.randomNumeric(8);

        orgOriIdValElement.setTextContent(sampleOriId);

        Element crashWorkZoneElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_JXDM_51,
                "CrashWorkZone");

        Element workersPresentElement = XmlUtils.appendElement(crashWorkZoneElement,
                OjbcNamespaceContext.NS_JXDM_51, "WorkZoneWorkersPresenceIndicationCode");

        workersPresentElement.setTextContent(getRandomBooleanString());

        Element copsAtWorkZoneCodeElement = XmlUtils.appendElement(crashWorkZoneElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "LawEnforcementPresentAtWorkZoneCode");

        copsAtWorkZoneCodeElement.setTextContent(getRandomBooleanString());

        Element nearWorkZoneElement = XmlUtils.appendElement(crashWorkZoneElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "NearWorkZoneIndicator");

        nearWorkZoneElement.setTextContent(getRandomBooleanString());

        Element workZoneWorkersPresentIndicator = XmlUtils.appendElement(crashWorkZoneElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "WorkZoneWorkersPresentIndicator");

        workZoneWorkersPresentIndicator.setTextContent(getRandomBooleanString());

        Element crashVehicleElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_JXDM_51,
                "CrashVehicle");

        Element roleOfItemElement = XmlUtils.appendElement(crashVehicleElement, OjbcNamespaceContext.NS_NC_30,
                "RoleOfItem");

        XmlUtils.addAttribute(roleOfItemElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Vehicle_01");

        Element trafficDeviceWorksElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_JXDM_51, "VehicleTrafficControlDeviceOperationalIndicator");

        trafficDeviceWorksElement.setTextContent(getRandomBooleanString());

        Element crashVehicleSpeedElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_JXDM_51, "CrashVehicleLegalSpeedRateMeasure");

        Element vehicleSpeedValElement = XmlUtils.appendElement(crashVehicleSpeedElement,
                OjbcNamespaceContext.NS_NC_30, "MeasureValueText");

        String sampleSpeed = RandomStringUtils.randomNumeric(3);

        vehicleSpeedValElement.setTextContent(sampleSpeed);

        Element crashDriverElement = XmlUtils.appendElement(crashVehicleElement, OjbcNamespaceContext.NS_JXDM_51,
                "CrashDriver");

        Element crashDriverRoleOfPersonElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");

        XmlUtils.addAttribute(crashDriverRoleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Driver_01");

        Element driverLicenseElement = XmlUtils.appendElement(crashDriverElement, OjbcNamespaceContext.NS_JXDM_51,
                "DriverLicense");

        XmlUtils.addAttribute(driverLicenseElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Driver_License_01");

        Element driverCatCodeElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DriverCategoryCode");

        String sampleDriverCatCode = RandomStringUtils.randomAlphabetic(2);

        driverCatCodeElement.setTextContent(sampleDriverCatCode);

        Element alcoholTestCatCodeElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "AlcoholTestCategoryCode");

        String sampleAlcoholCode = RandomStringUtils.randomAlphabetic(2);

        alcoholTestCatCodeElement.setTextContent(sampleAlcoholCode);

        Element drugTestCatCodeElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DrugTestCategoryCode");

        String sampleDrugTestCode = RandomStringUtils.randomNumeric(1);

        drugTestCatCodeElement.setTextContent(sampleDrugTestCode);

        Element drugTestResultCodeElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DrugTestResultCode");

        drugTestResultCodeElement.setTextContent(getRandomBooleanString());

        Element alcoholTestResultsPendingElement = XmlUtils.appendElement(crashDriverElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "AlcoholTestResultsPendingtIndicator");

        alcoholTestResultsPendingElement.setTextContent(getRandomBooleanString());

        Element crashVehicleOccupantElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_JXDM_51, "CrashVehicleOccupant");

        Element driverRoleOfPersonElement = XmlUtils.appendElement(crashVehicleOccupantElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");
        XmlUtils.addAttribute(driverRoleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Driver_01");

        Element occupantRoleOfPersonElement = XmlUtils.appendElement(crashVehicleOccupantElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");
        XmlUtils.addAttribute(occupantRoleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Occupant_01");

        Element vehicleOwnerRoleOfPersonElement = XmlUtils.appendElement(crashVehicleOccupantElement,
                OjbcNamespaceContext.NS_NC_30, "RoleOfPerson");
        XmlUtils.addAttribute(vehicleOwnerRoleOfPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Vehicle_Owner_01");

        Element hazmatElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "HazmatPlacardIndicator");
        hazmatElement.setTextContent(getRandomBooleanString());

        Element carDirectionElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "VehicleTravelDirectionCode");

        List<String> sampleDirectionList = Arrays.asList("North", "South", "East", "West");

        String sampleDirection = (String) generateRandomValueFromList(sampleDirectionList);

        carDirectionElement.setTextContent(sampleDirection);

        Element carWeightElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "GrossVehicleWeightRatingCode");

        String sampleWeight = RandomStringUtils.randomNumeric(4);

        carWeightElement.setTextContent(sampleWeight);

        Element damageElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "ExtentOfDamageCode");

        List<String> sampleDamageList = Arrays.asList("Very Bad", "Really Bad", "Light", "Totaled", "$500.75",
                "$6800.99");

        String sampleDamage = (String) generateRandomValueFromList(sampleDamageList);

        damageElement.setTextContent(sampleDamage);

        Element speedLimitElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "PostedSpeedLimitCode");

        String sampleSpeedLimit = RandomStringUtils.randomNumeric(2);

        speedLimitElement.setTextContent(sampleSpeedLimit);

        Element schoolBusElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "SchoolBusRelatedCode");
        schoolBusElement.setTextContent(getRandomBooleanString());

        Element damageOverThreshElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "TotalDamageOverThresholdtIndicator");

        damageOverThreshElement.setTextContent(getRandomBooleanString());

        Element nineSeatsElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "VehicleNineOrMoreSeatstIndicator");

        nineSeatsElement.setTextContent(getRandomBooleanString());

        Element exemptVehicleElement = XmlUtils.appendElement(crashVehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "ExemptVehicleIndicator");

        exemptVehicleElement.setTextContent(getRandomBooleanString());

        Element locationElement = XmlUtils.appendElement(crashElement, OjbcNamespaceContext.NS_NC_30, "Location");
        XmlUtils.addAttribute(locationElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Incident_Loc_01");

        Element addressElement = XmlUtils.appendElement(locationElement, OjbcNamespaceContext.NS_NC_30, "Address");
        Element cityElement = XmlUtils.appendElement(addressElement, OjbcNamespaceContext.NS_NC_30,
                "LocationCityName");

        String sampleCity = iGeneratedPerson.city;

        cityElement.setTextContent(sampleCity);

        Element hwyElement = XmlUtils.appendElement(locationElement, OjbcNamespaceContext.NS_NC_30,
                "AddressHighway");
        Element hwyFullTxtElement = XmlUtils.appendElement(hwyElement, OjbcNamespaceContext.NS_NC_30,
                "HighwayFullText");

        hwyFullTxtElement.setTextContent(iGeneratedPerson.streetAddress);

        Element loc2DElement = XmlUtils.appendElement(locationElement, OjbcNamespaceContext.NS_NC_30,
                "Location2DGeospatialCoordinate");

        Element latElement = XmlUtils.appendElement(loc2DElement, OjbcNamespaceContext.NS_NC_30,
                "GeographicCoordinateLatitude");

        Element latValElement = XmlUtils.appendElement(latElement, OjbcNamespaceContext.NS_NC_30,
                "LatitudeDegreeValue");

        String sampleLatitude = RandomStringUtils.randomNumeric(2);

        latValElement.setTextContent(sampleLatitude);

        Element longitudeElement = XmlUtils.appendElement(loc2DElement, OjbcNamespaceContext.NS_NC_30,
                "GeographicCoordinateLongitude");

        Element longValElement = XmlUtils.appendElement(longitudeElement, OjbcNamespaceContext.NS_NC_30,
                "LongitudeDegreeValue");

        String sampleLongitude = RandomStringUtils.randomNumeric(2);

        longValElement.setTextContent(sampleLongitude);

        Element intersectionElement = XmlUtils.appendElement(locationElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "NearestIntersectingStreetFullText");

        String sampleIntersection = randomPerson2.streetAddress;

        intersectionElement.setTextContent(sampleIntersection);

        Element distanceToIntersectionElement = XmlUtils.appendElement(locationElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT,
                "DistanceFromNearestIntersectionNumberText");

        String sampleDistance = RandomStringUtils.randomNumeric(2);

        distanceToIntersectionElement.setTextContent(sampleDistance);

        Element directionFromIntersectionElement = XmlUtils.appendElement(locationElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DirectionFromNearestIntersectionCode");

        String sampleIntersectionDirection = (String) generateRandomValueFromList(sampleDirectionList);

        directionFromIntersectionElement.setTextContent(sampleIntersectionDirection);

        Element intersectDistUnitsElement = XmlUtils.appendElement(locationElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DistanceFromNearestIntersectionNumberUnitCode");

        List<String> sampleUnitsForDistanceList = Arrays.asList("km", "mi", "yd", "me", "cm");

        String sampleDistanceUnit = (String) generateRandomValueFromList(sampleUnitsForDistanceList);

        intersectDistUnitsElement.setTextContent(sampleDistanceUnit);

        Element atSceneDateElement = XmlUtils.appendElement(crashElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "AtSceneDateTime");

        Element atSceneDateValElement = XmlUtils.appendElement(atSceneDateElement, OjbcNamespaceContext.NS_NC_30,
                "DateTime");

        atSceneDateValElement.setTextContent(CURRENT_DATE);

        Element offRoadElement = XmlUtils.appendElement(crashElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "OffRoadIncidentIndicator");

        offRoadElement.setTextContent(getRandomBooleanString());

        Element emergVehicle = XmlUtils.appendElement(crashElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT,
                "EmergencyVehicleRespondingToSceneIndicator");

        emergVehicle.setTextContent(getRandomBooleanString());

        Element citationElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_JXDM_51,
                "Citation");
        XmlUtils.addAttribute(citationElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Citation_01");

        Element activityIdElement = XmlUtils.appendElement(citationElement, OjbcNamespaceContext.NS_NC_30,
                "ActivityIdentification");

        Element activityIdValElement = XmlUtils.appendElement(activityIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String sampleCitationId = RandomStringUtils.randomNumeric(8);

        activityIdValElement.setTextContent(sampleCitationId);

        Element citationNumPendingElement = XmlUtils.appendElement(citationElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "CitationNumberPendingIndicator");

        citationNumPendingElement.setTextContent(getRandomBooleanString());

        Element firstVilationDescTxtElement = XmlUtils.appendElement(citationElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "FirstViolationDescriptionText");

        List<String> sampleCitationList = Arrays.asList("Speeding", "J Walking", "No Seatbelt", "Loud Music",
                "Ran Stop Sign", "Reckless Driving");

        String sampleCitation = (String) generateRandomValueFromList(sampleCitationList);

        firstVilationDescTxtElement.setTextContent(sampleCitation);

        Element secondViolationElement = XmlUtils.appendElement(citationElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "SecondViolationDescriptionText");

        String sampleCitation2 = (String) generateRandomValueFromList(sampleCitationList);

        secondViolationElement.setTextContent(sampleCitation2);

        PersonElementWrapper reportOfficalRandomPerson = getRandomIdentity(null);

        Element reportOfficialElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(reportOfficialElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Reporting_Official_01");

        Element reportOfficialNameElement = XmlUtils.appendElement(reportOfficialElement,
                OjbcNamespaceContext.NS_NC_30, "PersonName");

        Element reportOfficialFullName = XmlUtils.appendElement(reportOfficialNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonFullName");

        String sampleReportOfficialFullName = reportOfficalRandomPerson.firstName + " "
                + reportOfficalRandomPerson.lastName;

        reportOfficialFullName.setTextContent(sampleReportOfficialFullName);

        Element witnessPersonElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(witnessPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Witness_01");

        Element witnessPersonNameElement = XmlUtils.appendElement(witnessPersonElement,
                OjbcNamespaceContext.NS_NC_30, "PersonName");

        Element witnessGivenName = XmlUtils.appendElement(witnessPersonNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonGivenName");

        witnessGivenName.setTextContent(reportOfficalRandomPerson.firstName);

        Element witnessMiddleName = XmlUtils.appendElement(witnessPersonNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonMiddleName");

        witnessMiddleName.setTextContent(reportOfficalRandomPerson.middleName);

        Element witnessSurName = XmlUtils.appendElement(witnessPersonNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonSurName");

        witnessSurName.setTextContent(reportOfficalRandomPerson.lastName);

        PersonElementWrapper infoApprovPerson = getRandomIdentity(null);

        Element infoApproverPersonElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Person");

        XmlUtils.addAttribute(infoApproverPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Information_Approver_01");

        Element infoApproverPersonNameElement = XmlUtils.appendElement(infoApproverPersonElement,
                OjbcNamespaceContext.NS_NC_30, "PersonName");

        Element personFullNameElement = XmlUtils.appendElement(infoApproverPersonNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonFullName");

        String infoApprovFullName = infoApprovPerson.firstName + " " + infoApprovPerson.lastName;

        personFullNameElement.setTextContent(infoApprovFullName);

        PersonElementWrapper sampleDriverPerson = getRandomIdentity(null);

        Element driverPersonElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(driverPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Driver_01");

        Element driverDobElement = XmlUtils.appendElement(driverPersonElement, OjbcNamespaceContext.NS_NC_30,
                "PersonBirthDate");

        Element driverDobValElement = XmlUtils.appendElement(driverDobElement, OjbcNamespaceContext.NS_NC_30,
                "Date");

        driverDobValElement.setTextContent(sampleDriverPerson.birthday);

        Element driverNameElement = XmlUtils.appendElement(driverPersonElement, OjbcNamespaceContext.NS_NC_30,
                "PersonName");

        Element driverGivenNameElement = XmlUtils.appendElement(driverNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonGivenName");

        String sampleDriverFirstName = sampleDriverPerson.firstName;

        driverGivenNameElement.setTextContent(sampleDriverFirstName);

        Element driverMiddleName = XmlUtils.appendElement(driverNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonMiddleName");

        String sampleDriverMiddleName = sampleDriverPerson.middleName;

        driverMiddleName.setTextContent(sampleDriverMiddleName);

        Element driverSurNameElement = XmlUtils.appendElement(driverNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonSurName");

        String sampleDriverLastName = sampleDriverPerson.lastName;

        driverSurNameElement.setTextContent(sampleDriverLastName);

        Element driverSexCodeElement = XmlUtils.appendElement(driverPersonElement, OjbcNamespaceContext.NS_JXDM_51,
                "PersonSexCode");

        String sampleDriverSexCode = sampleDriverPerson.sex;

        driverSexCodeElement.setTextContent(sampleDriverSexCode);

        Element driverPersonCatCodeElement = XmlUtils.appendElement(driverPersonElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "PersonCategoryCode");

        String vehicleCrashCode = RandomStringUtils.randomAlphabetic(2);

        driverPersonCatCodeElement.setTextContent(vehicleCrashCode);

        PersonElementWrapper sampleVehicleOwner = getRandomIdentity(null);

        Element vehicleOwnerElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Person");

        XmlUtils.addAttribute(vehicleOwnerElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Vehicle_Owner_01");

        Element vehicleOwnerDobElement = XmlUtils.appendElement(vehicleOwnerElement, OjbcNamespaceContext.NS_NC_30,
                "PersonBirthDate");

        Element vehicleOwnerDobValElement = XmlUtils.appendElement(vehicleOwnerDobElement,
                OjbcNamespaceContext.NS_NC_30, "Date");

        vehicleOwnerDobValElement.setTextContent(sampleVehicleOwner.birthday);

        Element vehicleOwnerNameElement = XmlUtils.appendElement(vehicleOwnerElement, OjbcNamespaceContext.NS_NC_30,
                "PersonName");

        Element vehicleOwnerGivenNameElement = XmlUtils.appendElement(vehicleOwnerNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonGivenName");
        vehicleOwnerGivenNameElement.setTextContent(sampleVehicleOwner.firstName);

        Element vehicleOwnerMiddleName = XmlUtils.appendElement(vehicleOwnerNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonMiddleName");
        vehicleOwnerMiddleName.setTextContent(sampleVehicleOwner.middleName);

        Element vehicleOwnerSurNameElement = XmlUtils.appendElement(vehicleOwnerNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonSurName");
        vehicleOwnerSurNameElement.setTextContent(sampleVehicleOwner.lastName);

        Element vehicleOwnerSexCodeElement = XmlUtils.appendElement(vehicleOwnerElement,
                OjbcNamespaceContext.NS_JXDM_51, "PersonSexCode");
        vehicleOwnerSexCodeElement.setTextContent(sampleVehicleOwner.sex);

        Element vehicleOwnerCatCodeElement = XmlUtils.appendElement(vehicleOwnerElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "PersonCategoryCode");

        String sampleVehicleOwnerCatCode = RandomStringUtils.randomAlphanumeric(2);

        vehicleOwnerCatCodeElement.setTextContent(sampleVehicleOwnerCatCode);

        Element propOwner1EntOrgElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "EntityOrganization");

        XmlUtils.addAttribute(propOwner1EntOrgElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Property_Owner_01");

        Element propOwner1EntOrgNameElement = XmlUtils.appendElement(propOwner1EntOrgElement,
                OjbcNamespaceContext.NS_NC_30, "OrganizationName");

        propOwner1EntOrgNameElement.setTextContent(sampleVehicleOwner.company);

        PersonElementWrapper samplePropertyOwner = getRandomIdentity(null);

        Element propOwner2EntPersonElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "EntityPerson");

        XmlUtils.addAttribute(propOwner2EntPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Property_Owner_02");

        Element propOwnerEntPersonName = XmlUtils.appendElement(propOwner2EntPersonElement,
                OjbcNamespaceContext.NS_NC_30, "PersonName");

        Element propOwnerEntFullName = XmlUtils.appendElement(propOwnerEntPersonName, OjbcNamespaceContext.NS_NC_30,
                "PersonFullName");

        String samplePropOwnerFullName = samplePropertyOwner.firstName + "" + samplePropertyOwner.lastName;

        propOwnerEntFullName.setTextContent(samplePropOwnerFullName);

        Element occupant1EntPersonElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "EntityPerson");

        XmlUtils.addAttribute(occupant1EntPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Occupant_01");

        Element occupantDobElement = XmlUtils.appendElement(occupant1EntPersonElement,
                OjbcNamespaceContext.NS_NC_30, "PersonBirthDate");

        Element occupantDobValElement = XmlUtils.appendElement(occupantDobElement, OjbcNamespaceContext.NS_NC_30,
                "Date");

        occupantDobValElement.setTextContent(samplePropertyOwner.birthday);

        Element occupantPersonNameElement = XmlUtils.appendElement(occupant1EntPersonElement,
                OjbcNamespaceContext.NS_NC_30, "PersonName");

        Element occupantGivenNameElement = XmlUtils.appendElement(occupantPersonNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonGivenName");

        occupantGivenNameElement.setTextContent(samplePropertyOwner.firstName);

        Element occupantMiddleName = XmlUtils.appendElement(occupantPersonNameElement,
                OjbcNamespaceContext.NS_NC_30, "PersonMiddleName");

        occupantMiddleName.setTextContent(samplePropertyOwner.middleName);

        Element occupantSurName = XmlUtils.appendElement(occupantPersonNameElement, OjbcNamespaceContext.NS_NC_30,
                "PersonSurName");
        occupantSurName.setTextContent(samplePropertyOwner.lastName);

        Element occupantSexCodeElement = XmlUtils.appendElement(occupantPersonNameElement,
                OjbcNamespaceContext.NS_JXDM_51, "PersonSexCode");
        occupantSexCodeElement.setTextContent(samplePropertyOwner.sex);

        Element occupantCatCodeElement = XmlUtils.appendElement(occupantPersonNameElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "PersonCategoryCode");

        String sampleOccupantCatCode = RandomStringUtils.randomAlphanumeric(2);

        occupantCatCodeElement.setTextContent(sampleOccupantCatCode);

        PersonElementWrapper sampleDriver = getRandomIdentity(null);

        Element driverLocElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_NC_30,
                "Location");

        XmlUtils.addAttribute(driverLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Driver_Loc_01");

        Element driverLocAddressElement = XmlUtils.appendElement(driverLocElement, OjbcNamespaceContext.NS_NC_30,
                "Address");

        Element driverLocStreetElement = XmlUtils.appendElement(driverLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationStreet");

        Element driverLocStreetValElement = XmlUtils.appendElement(driverLocStreetElement,
                OjbcNamespaceContext.NS_NC_30, "StreetFullText");

        driverLocStreetValElement.setTextContent(sampleDriver.streetAddress);

        Element driverLocCityElement = XmlUtils.appendElement(driverLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationCityName");
        driverLocCityElement.setTextContent(sampleDriver.city);

        Element driverLocStateElement = XmlUtils.appendElement(driverLocAddressElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");

        driverLocStateElement.setTextContent(sampleDriver.state);

        Element driverLocZipElement = XmlUtils.appendElement(driverLocAddressElement, OjbcNamespaceContext.NS_NC_30,
                "LocationPostalCode");

        driverLocZipElement.setTextContent(sampleDriver.zipCode);

        PersonElementWrapper sampleWitness = getRandomIdentity(null);

        Element witnessLocElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_NC_30,
                "Location");

        XmlUtils.addAttribute(witnessLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Witness_Loc_01");

        Element witnessLocAddressElement = XmlUtils.appendElement(witnessLocElement, OjbcNamespaceContext.NS_NC_30,
                "Address");

        Element witnessLocStreetElement = XmlUtils.appendElement(witnessLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationStreet");

        Element witnessLocStreetValElement = XmlUtils.appendElement(witnessLocStreetElement,
                OjbcNamespaceContext.NS_NC_30, "StreetFullText");

        witnessLocStreetValElement.setTextContent(sampleWitness.streetAddress);

        Element witnessLocCityElement = XmlUtils.appendElement(witnessLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationCityName");

        witnessLocCityElement.setTextContent(sampleWitness.city);

        Element witnessLocStateElement = XmlUtils.appendElement(witnessLocAddressElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");

        witnessLocStateElement.setTextContent(sampleWitness.state);

        Element witnessLocZipElement = XmlUtils.appendElement(witnessLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationPostalCode");

        witnessLocZipElement.setTextContent(sampleWitness.zipCode);

        PersonElementWrapper propOwnerSample = getRandomIdentity(null);

        Element propOwnerLocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Location");

        XmlUtils.addAttribute(propOwnerLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Property_Owner_Loc_01");

        Element propOwnerLocAddressElement = XmlUtils.appendElement(propOwnerLocElement,
                OjbcNamespaceContext.NS_NC_30, "Address");

        Element propOwnerLocStreetElement = XmlUtils.appendElement(propOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationStreet");

        Element propOwnerLocStreetValElement = XmlUtils.appendElement(propOwnerLocStreetElement,
                OjbcNamespaceContext.NS_NC_30, "StreetFullText");
        propOwnerLocStreetValElement.setTextContent(propOwnerSample.streetAddress);

        Element propOwnerLocCityElement = XmlUtils.appendElement(propOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationCityName");
        propOwnerLocCityElement.setTextContent(propOwnerSample.city);

        Element propOwnerLocStateElement = XmlUtils.appendElement(propOwnerLocAddressElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");
        propOwnerLocStateElement.setTextContent(propOwnerSample.state);

        Element propOwnerLocZipElement = XmlUtils.appendElement(propOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationPostalCode");
        propOwnerLocZipElement.setTextContent(propOwnerSample.zipCode);

        PersonElementWrapper vehicOwnerSample = getRandomIdentity(null);

        Element vehicleOwnerLocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "Location");

        XmlUtils.addAttribute(vehicleOwnerLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Vehicle_Owner_Loc_01");

        Element vehicleOwnerLocAddressElement = XmlUtils.appendElement(vehicleOwnerLocElement,
                OjbcNamespaceContext.NS_NC_30, "Address");

        Element vehicleOwnerLocStreetElement = XmlUtils.appendElement(vehicleOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationStreet");

        Element vehicleOwnerLocStreetValElement = XmlUtils.appendElement(vehicleOwnerLocStreetElement,
                OjbcNamespaceContext.NS_NC_30, "StreetFullText");
        vehicleOwnerLocStreetValElement.setTextContent(vehicOwnerSample.addressStreetNumber);

        Element vehicleOwnerLocCityElement = XmlUtils.appendElement(vehicleOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationCityName");
        vehicleOwnerLocCityElement.setTextContent(vehicOwnerSample.city);

        Element vehicleOwnerLocStateElement = XmlUtils.appendElement(vehicleOwnerLocAddressElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");
        vehicleOwnerLocStateElement.setTextContent(vehicOwnerSample.state);

        Element vehicleOwnerLocZipElement = XmlUtils.appendElement(vehicleOwnerLocAddressElement,
                OjbcNamespaceContext.NS_NC_30, "LocationPostalCode");
        vehicleOwnerLocZipElement.setTextContent(vehicOwnerSample.zipCode);

        Element vehicleElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_NC_30,
                "Vehicle");

        XmlUtils.addAttribute(vehicleElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Vehicle_01");

        Element vehicleColorElement = XmlUtils.appendElement(vehicleElement, OjbcNamespaceContext.NS_JXDM_51,
                "ConveyanceColorPrimaryCode");

        List<String> sampleColorList = Arrays.asList("BLO", "BLK", "BLU", "RED", "PUR");

        String sampleColor = (String) generateRandomValueFromList(sampleColorList);

        vehicleColorElement.setTextContent(sampleColor);

        List<String> sampleYearList = Arrays.asList("1970", "1989", "1996", "2016");

        String sampleYear = (String) generateRandomValueFromList(sampleYearList);

        Element vehcicleYearElement = XmlUtils.appendElement(vehicleColorElement, OjbcNamespaceContext.NS_NC_30,
                "ItemModelYearDate");

        vehcicleYearElement.setTextContent(sampleYear);

        Element vehicleIdElement = XmlUtils.appendElement(vehicleElement, OjbcNamespaceContext.NS_NC_30,
                "VehicleIdentification");

        Element vehicleIdValElement = XmlUtils.appendElement(vehicleIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String sampleVin = RandomStringUtils.randomAlphanumeric(10);

        vehicleIdValElement.setTextContent(sampleVin);

        Element vehicleIdJurisdictionElement = XmlUtils.appendElement(vehicleIdElement,
                OjbcNamespaceContext.NS_NC_30, "IdentificationJurisdiction");

        Element vehicleIdStateCodeElement = XmlUtils.appendElement(vehicleIdJurisdictionElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");

        vehicleIdStateCodeElement.setTextContent(vehicOwnerSample.state);

        Element vehicleMakeElement = XmlUtils.appendElement(vehicleElement, OjbcNamespaceContext.NS_JXDM_51,
                "VehicleMakeCode");

        List<String> sampleMakeList = Arrays.asList("Ford", "Chevy", "Dodge", "GM", "Kia");

        String sampleMake = (String) generateRandomValueFromList(sampleMakeList);

        vehicleMakeElement.setTextContent(sampleMake);

        Element vehicleUnitIdElement = XmlUtils.appendElement(vehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "VehicleUnitIdentification");

        Element vehicleUnitIdValElement = XmlUtils.appendElement(vehicleUnitIdElement,
                OjbcNamespaceContext.NS_NC_30, "IdentificationID");

        String sampleVehicUnitId = RandomStringUtils.randomAlphanumeric(8);

        vehicleUnitIdValElement.setTextContent(sampleVehicUnitId);

        Element hitRunIndicatorElement = XmlUtils.appendElement(vehicleElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "HitRunIndicator");

        hitRunIndicatorElement.setTextContent(getRandomBooleanString());

        Element conveyRegElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_JXDM_51, "ConveyanceRegistration");

        XmlUtils.addAttribute(conveyRegElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Conveyance_Registration_01");

        Element conveyRegIdElement = XmlUtils.appendElement(conveyRegElement, OjbcNamespaceContext.NS_JXDM_51,
                "ConveyanceRegistrationPlateIdentification");

        Element conveyRegIdValElement = XmlUtils.appendElement(conveyRegIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String samplePlateId = RandomStringUtils.randomAlphanumeric(7);

        conveyRegIdValElement.setTextContent(samplePlateId);

        Element conveyIdRegJurisdictElement = XmlUtils.appendElement(conveyRegIdElement,
                OjbcNamespaceContext.NS_NC_30, "IdentificationJurisdiction");

        Element conveyIdRegStateCodeElement = XmlUtils.appendElement(conveyIdRegJurisdictElement,
                OjbcNamespaceContext.NS_JXDM_51, "LocationStateNCICLISCode");

        conveyIdRegStateCodeElement.setTextContent(sampleVehicleOwner.state);

        Element insuranceElement = XmlUtils.appendElement(vehicleCrashReportElement, OjbcNamespaceContext.NS_NC_30,
                "Insurance");

        XmlUtils.addAttribute(insuranceElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id", "Insurance_01");

        Element insPolicyIdElement = XmlUtils.appendElement(insuranceElement, OjbcNamespaceContext.NS_NC_30,
                "InsurancePolicyIdentification");

        Element insPolicyIdValElement = XmlUtils.appendElement(insPolicyIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String insPolicyId = RandomStringUtils.randomAlphanumeric(10);

        insPolicyIdValElement.setTextContent(insPolicyId);

        Element insCarrierNameElement = XmlUtils.appendElement(insuranceElement, OjbcNamespaceContext.NS_NC_30,
                "InsuranceCarrierName");

        List<String> insCarrierList = Arrays.asList("Geico", "Allstate", "Progressive");

        String insCarrier = (String) generateRandomValueFromList(insCarrierList);

        insCarrierNameElement.setTextContent(insCarrier);

        Element noInsuranceElement = XmlUtils.appendElement(insuranceElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "NoInsuranceIndicator");

        noInsuranceElement.setTextContent(getRandomBooleanString());

        Element crashDriverLicElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_JXDM_51, "CrashDriverLicense");

        XmlUtils.addAttribute(crashDriverLicElement, OjbcNamespaceContext.NS_STRUCTURES_30, "id",
                "Driver_License_01");

        Element dlCardIdElement = XmlUtils.appendElement(crashDriverLicElement, OjbcNamespaceContext.NS_JXDM_51,
                "DriverLicenseCardIdentification");

        Element dlCardIdValueElement = XmlUtils.appendElement(dlCardIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationID");

        String dlId = RandomStringUtils.randomAlphanumeric(9);

        dlCardIdValueElement.setTextContent(dlId);

        Element dlJurisdictElement = XmlUtils.appendElement(dlCardIdElement, OjbcNamespaceContext.NS_NC_30,
                "IdentificationJurisdiction");

        Element dlStateElement = XmlUtils.appendElement(dlJurisdictElement, OjbcNamespaceContext.NS_JXDM_51,
                "LocationStateNCICLISCode");

        dlStateElement.setTextContent(getRandomIdentity(null).state);

        Element dlRestrictElement = XmlUtils.appendElement(crashDriverLicElement, OjbcNamespaceContext.NS_JXDM_51,
                "DriverLicenseRestriction");

        Element dlRestrictTxtElement = XmlUtils.appendElement(dlRestrictElement, OjbcNamespaceContext.NS_JXDM_51,
                "DrivingRestrictionText");

        List<String> dlRestrictList = Arrays.asList("Glasses", "Daylight", "Evening");

        String sampleRestriction = (String) generateRandomValueFromList(dlRestrictList);

        dlRestrictTxtElement.setTextContent(sampleRestriction);

        Element dlEndorsementElement = XmlUtils.appendElement(crashDriverLicElement,
                OjbcNamespaceContext.NS_JXDM_51, "DriverLicenseEndorsement");
        Element dlEndorsementTxtElement = XmlUtils.appendElement(dlEndorsementElement,
                OjbcNamespaceContext.NS_JXDM_51, "DriverLicenseEndorsementText");

        List<String> endorsementList = Arrays.asList("motorcycle", "trailor", "commercial");

        String sampleEndorsement = (String) generateRandomValueFromList(endorsementList);

        dlEndorsementTxtElement.setTextContent(sampleEndorsement);

        Element dlCatCodeElement = XmlUtils.appendElement(crashDriverLicElement,
                OjbcNamespaceContext.NS_ME_VEHICLE_CRASH_CODES, "DriverLicenseCategoryCode");

        List<String> dlCatList = Arrays.asList("Civil", "Military", "Racing");

        String sampleDlCatCode = (String) generateRandomValueFromList(dlCatList);

        dlCatCodeElement.setTextContent(sampleDlCatCode);

        Element dlClassCodeElement = XmlUtils.appendElement(crashDriverLicElement,
                OjbcNamespaceContext.NS_VEHICLE_CRASH_QUERY_RESULT_EXT, "DriverLicenseClassCodeText");

        String dlClass = RandomStringUtils.randomAlphabetic(1);

        dlClassCodeElement.setTextContent(dlClass);

        Element activityInfoApproverAssocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_JXDM_51, "ActivityInformationApproverAssociation");

        Element aprovAsocActivElement = XmlUtils.appendElement(activityInfoApproverAssocElement,
                OjbcNamespaceContext.NS_NC_30, "Activity");
        XmlUtils.addAttribute(aprovAsocActivElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Crash_01");

        Element activInfoAprovAsocPersonElement = XmlUtils.appendElement(activityInfoApproverAssocElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(activInfoAprovAsocPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Information_Approver_01");

        Element bloodAlcAssocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_JXDM_51, "PersonBloodAlcoholContentAssociation");

        Element bloodTxtElement = XmlUtils.appendElement(bloodAlcAssocElement, OjbcNamespaceContext.NS_JXDM_51,
                "PersonBloodAlcoholContentNumberText");

        String sampleBloodContent = RandomStringUtils.randomNumeric(2);

        bloodTxtElement.setTextContent(sampleBloodContent);

        Element bloodActivityElement = XmlUtils.appendElement(bloodAlcAssocElement, OjbcNamespaceContext.NS_NC_30,
                "Activity");

        XmlUtils.addAttribute(bloodActivityElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Crash_01");

        Element bloodPersonElement = XmlUtils.appendElement(bloodAlcAssocElement, OjbcNamespaceContext.NS_NC_30,
                "Person");
        XmlUtils.addAttribute(bloodPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Driver_01");

        Element itemInsAssocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "ItemInsuranceAssociation");

        Element itemAssocInsElement = XmlUtils.appendElement(itemInsAssocElement, OjbcNamespaceContext.NS_NC_30,
                "Insurance");
        XmlUtils.addAttribute(itemAssocInsElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Insurance_01");

        Element insuranceItemElement = XmlUtils.appendElement(itemInsAssocElement, OjbcNamespaceContext.NS_NC_30,
                "Item");
        XmlUtils.addAttribute(insuranceItemElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Vehicle_01");

        Element personResAsocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "PersonResidenceAssociation");

        Element prsnResAssocPrsnElement = XmlUtils.appendElement(personResAsocElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(prsnResAssocPrsnElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Driver_01");

        Element prsnRestAsocLocElement = XmlUtils.appendElement(personResAsocElement, OjbcNamespaceContext.NS_NC_30,
                "Location");
        XmlUtils.addAttribute(prsnRestAsocLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Driver_Loc_01");

        Element witnessAssocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "PersonResidenceAssociation");

        Element witnessPersonResElement = XmlUtils.appendElement(witnessAssocElement, OjbcNamespaceContext.NS_NC_30,
                "Person");
        XmlUtils.addAttribute(witnessPersonResElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Witness_01");

        Element witnessPrsnResLocElement = XmlUtils.appendElement(witnessAssocElement,
                OjbcNamespaceContext.NS_NC_30, "nc:Location");
        XmlUtils.addAttribute(witnessPrsnResLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Witness_Loc_01");

        Element propOwnerResAsocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "PersonResidenceAssociation");

        Element propOwnerPersonElement = XmlUtils.appendElement(propOwnerResAsocElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(propOwnerPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Property_Owner_01");

        Element propOwnerResLocElement = XmlUtils.appendElement(propOwnerResAsocElement,
                OjbcNamespaceContext.NS_NC_30, "Location");
        XmlUtils.addAttribute(propOwnerResLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Property_Owner_Loc_01");

        Element vehicOwnerResAsocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "PersonResidenceAssociation");

        Element vehicOwnerPersonElement = XmlUtils.appendElement(vehicOwnerResAsocElement,
                OjbcNamespaceContext.NS_NC_30, "Person");
        XmlUtils.addAttribute(vehicOwnerPersonElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Vehicle_Owner_01");

        Element vehicOwnerLocElement = XmlUtils.appendElement(vehicOwnerResAsocElement,
                OjbcNamespaceContext.NS_NC_30, "Location");
        XmlUtils.addAttribute(vehicOwnerLocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Vehicle_Owner_Loc_01");

        Element activityDocAssocElement = XmlUtils.appendElement(vehicleCrashReportElement,
                OjbcNamespaceContext.NS_NC_30, "ActivityDocumentAssociation");

        Element actDocAssocActivityElement = XmlUtils.appendElement(activityDocAssocElement,
                OjbcNamespaceContext.NS_NC_30, "Activity");
        XmlUtils.addAttribute(actDocAssocActivityElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Crash_01");

        Element activDocAssocDocElement = XmlUtils.appendElement(activityDocAssocElement,
                OjbcNamespaceContext.NS_NC_30, "Document");
        XmlUtils.addAttribute(activDocAssocDocElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Citation_01");

        Element conveyRegAssocElement = XmlUtils.appendElement(activityDocAssocElement,
                OjbcNamespaceContext.NS_JXDM_51, "ConveyanceRegistrationAssociation");

        Element conveyItemRegElement = XmlUtils.appendElement(conveyRegAssocElement,
                OjbcNamespaceContext.NS_JXDM_51, "ItemRegistration");
        XmlUtils.addAttribute(conveyItemRegElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref",
                "Conveyance_Registration_01");

        Element conveyRetAsocItemElement = XmlUtils.appendElement(conveyRegAssocElement,
                OjbcNamespaceContext.NS_NC_30, "Item");
        XmlUtils.addAttribute(conveyRetAsocItemElement, OjbcNamespaceContext.NS_STRUCTURES_30, "ref", "Vehicle_01");

        OjbcNamespaceContext ojbcNamespaceContext = new OjbcNamespaceContext();

        ojbcNamespaceContext.populateRootNamespaceDeclarations(rootVehicCrashElement);

        return rVehicleCrashDetailDoc;
    }

    private Document getNewDocument() throws ParserConfigurationException {

        DocumentBuilderFactory dbf = DocumentBuilderFactoryImpl.newInstance();

        DocumentBuilder docBuilder = dbf.newDocumentBuilder();

        Document doc = docBuilder.newDocument();

        return doc;
    }

}