<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- - $Id: sjs-validators.xml,v 1.11 2008/09/26 23:54:39 adrury Exp $ -->

<beans>

    <bean id="addressNoStLocValidator" class="org.dcjs.sjs.web.validation.AddressValidator">
        <property name="isLocationRequired"><value>true</value></property>
        <property name="isStreetRequired"><value>false</value></property>
    </bean>
    <bean id="addressNoStNoLocValidator" class="org.dcjs.sjs.web.validation.AddressValidator">
        <property name="isLocationRequired"><value>false</value></property>
        <property name="isStreetRequired"><value>false</value></property>
    </bean>
    <bean id="addressStNoLocValidator" class="org.dcjs.sjs.web.validation.AddressValidator">
        <property name="isLocationRequired"><value>false</value></property>
        <property name="isStreetRequired"><value>true</value></property>
    </bean>
    <bean id="aiPreDefendantValidator" class="org.dcjs.sjs.web.validation.AiPreDefendantValidator"/>
    <bean id="agencyValidator" class="org.dcjs.sjs.web.validation.AgencyValidator">
        <property name="agencyUtil"><ref bean="agencyUtil"/></property>
    </bean>
    <bean id="arrestNarrativeValidator" class="org.dcjs.sjs.web.validation.ArrestNarrativeValidator">
        <property name="narrativeValidator"><ref bean="narrativeValidator"/></property>
    </bean>
    <bean id="arrestPersonValidator" class="org.dcjs.sjs.web.validation.ArrestPersonValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
    </bean>
    <bean id="arrestValidator" class="org.dcjs.sjs.web.validation.ArrestValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
        <property name="addressValidator"><ref bean="addressNoStNoLocValidator"/></property>
    </bean>
    <bean id="autoAssignmentValidator" class="org.dcjs.sjs.web.validation.AutoAssignmentValidator"/>
    <bean id="deleteArrestValidator" class="org.dcjs.sjs.web.validation.DeleteArrestValidator">
        <property name="aidUtil"><ref bean="aiDefendantUtil"/></property>
    </bean>
    <bean id="deleteIncidentPersonValidator" class="org.dcjs.sjs.web.validation.DeleteIncidentPersonValidator">
        <property name="incidentVehicleUtil"><ref bean="incidentVehicleUtil"/></property>
        <property name="incidentPropertyUtil"><ref bean="incidentPropertyUtil"/></property>
    </bean>
    <bean id="deleteUserValidator" class="org.dcjs.sjs.web.validation.DeleteUserValidator">
        <property name="userUtil"><ref bean="userUtil"/></property>
        <property name="returnEvaluator"><ref bean="returnEvaluator"/></property>
    </bean>
    <bean id="dispatchValidator" class="org.dcjs.sjs.web.validation.DispatchValidator"/>
    <bean id="divisionPrecinctValidator" class="org.dcjs.sjs.web.validation.DivisionPrecinctValidator">
        <property name="divisionPrecinctUtil"><ref bean="divisionPrecinctUtil"/></property>
    </bean>
    <bean id="employerValidator" class="org.dcjs.sjs.web.validation.EmployerValidator">
        <property name="personPhoneValidator"><ref bean="personPhoneValidator"/></property>
    </bean>
    <bean id="fbiValidator" class="org.dcjs.sjs.web.validation.FBIValidator">
        <property name="minLength"><value>2</value></property>
        <property name="maxLength"><value>9</value></property> <!-- docs say 8? -->
        <property name="maxNumericGroupOneLength"><value>6</value></property>
        <property name="checkSumMultipliers">
            <map>
                <entry key="1"><value>2</value></entry>
                <entry key="2"><value>7</value></entry>
                <entry key="3"><value>6</value></entry>
                <entry key="4"><value>5</value></entry>
                <entry key="5"><value>4</value></entry>
                <entry key="6"><value>3</value></entry>
            </map>
        </property>
        <property name="checkSumAddons">
            <map>
                <entry key="A"><value>1</value></entry>
                <entry key="B"><value>2</value></entry>
                <entry key="C"><value>3</value></entry>
                <entry key="D"><value>4</value></entry>
                <entry key="E"><value>5</value></entry>
                <entry key="F"><value>6</value></entry>
                <entry key="G"><value>7</value></entry>
                <entry key="H"><value>8</value></entry>
                <entry key="I"><value>9</value></entry>
                <entry key="J"><value>1</value></entry>
                <entry key="K"><value>2</value></entry>
                <entry key="L"><value>3</value></entry>
                <entry key="M"><value>4</value></entry>
                <entry key="N"><value>5</value></entry>
                <entry key="O"><value>6</value></entry>
                <entry key="P"><value>7</value></entry>
                <entry key="Q"><value>8</value></entry>
                <entry key="R"><value>9</value></entry>
                <entry key="S"><value>2</value></entry>
                <entry key="T"><value>3</value></entry>
                <entry key="U"><value>4</value></entry>
                <entry key="V"><value>5</value></entry>
                <entry key="W"><value>6</value></entry>
                <entry key="X"><value>7</value></entry>
                <entry key="Y"><value>8</value></entry>
                <entry key="Z"><value>9</value></entry>
                <entry key=" "><value>0</value></entry>
            </map>
        </property>
        <property name="regexUtils">
            <list>
                <bean class="org.dcjs.sjs.web.validation.RegexUtilImpl">
                    <property name="regex"><value>(\d{7})</value></property>
                    <property name="groupCount"><value>1</value></property>
                    <property name="firstNumericGroupKey"><value>1</value></property>
                </bean>
                <bean class="org.dcjs.sjs.web.validation.RegexUtilImpl">
                    <property name="regex"><value>(\d{1,6})([A-H]{1})</value></property>
                    <property name="groupCount"><value>2</value></property>
                    <property name="firstNumericGroupKey"><value>1</value></property>
                    <property name="firstAlphaGroupKey"><value>2</value></property>
                </bean>
                <bean class="org.dcjs.sjs.web.validation.RegexUtilImpl">
                    <property name="regex"><value>(\d{1,6})([J-Z]{1})(\d{1,2})</value></property>
                    <property name="groupCount"><value>3</value></property>
                    <property name="firstNumericGroupKey"><value>1</value></property>
                    <property name="firstAlphaGroupKey"><value>2</value></property>
                    <property name="secondNumericGroupKey"><value>3</value></property>
                    <property name="minCheckDigit"><value>1</value></property>
                    <property name="maxCheckDigit"><value>11</value></property>
                </bean>
                <bean class="org.dcjs.sjs.web.validation.RegexUtilImpl">
                    <property name="regex"><value>(\d{1,6})([ACDEFHJKLMNPRTVWX]{1})([A-Z]{1})(\d{1})</value></property>
                    <property name="groupCount"><value>4</value></property>
                    <property name="firstNumericGroupKey"><value>1</value></property>
                    <property name="firstAlphaGroupKey"><value>2</value></property>
                    <property name="secondAlphaGroupKey"><value>3</value></property>
                    <property name="secondNumericGroupKey"><value>4</value></property>
                    <property name="minCheckDigit"><value>0</value></property>
                    <property name="maxCheckDigit"><value>9</value></property>
                </bean>
            </list>
        </property>
    </bean>
    <bean id="gradeValidator" class="org.dcjs.sjs.web.validation.GradeValidator">
        <property name="gradeUtil"><ref bean="gradeUtil"/></property>
    </bean>
    <bean id="incidentChargeValidator" class="org.dcjs.sjs.web.validation.IncidentChargeValidator"/>
    <bean id="incidentValidator" class="org.dcjs.sjs.web.validation.IncidentValidator">
        <property name="addressValidator"><ref bean="addressNoStLocValidator"/></property>
        <property name="dispatchValidator"><ref bean="dispatchValidator"/></property>
    </bean>
    <bean id="incidentNarrativeValidator" class="org.dcjs.sjs.web.validation.IncidentNarrativeValidator">
        <property name="narrativeValidator"><ref bean="narrativeValidator"/></property>
    </bean>
    <bean id="incidentPersonValidator" class="org.dcjs.sjs.web.validation.IncidentPersonValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
    </bean>
    <bean id="narrativeValidator" class="org.dcjs.sjs.web.validation.NarrativeValidator"/>
    <bean id="nsorAddressValidator" class="org.dcjs.sjs.web.validation.NsorAddressValidator">
        <property name="addressValidator"><ref bean="addressStNoLocValidator"/></property>
    </bean>
    <bean id="nsorNarrativeValidator" class="org.dcjs.sjs.web.validation.NsorNarrativeValidator">
        <property name="narrativeValidator"><ref bean="narrativeValidator"/></property>
    </bean>
    <bean id="nsorValidator" class="org.dcjs.sjs.web.validation.NsorValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
        <property name="nsorAddressValidator"><ref bean="nsorAddressValidator"/></property>
    </bean>
    <bean id="nysidValidator" class="org.dcjs.sjs.web.validation.NYSIDValidator">
        <property name="minLength"><value>2</value></property>
        <property name="maxLength"><value>9</value></property>
        <property name="maxNumericGroupOneLength"><value>8</value></property>
        <property name="checkDigitTable"><value>ZJKLMNYPQRH</value></property>
        <property name="regexUtils">
            <list>
                <bean class="org.dcjs.sjs.web.validation.RegexUtilImpl">
                    <property name="regex"><value>(\d{1,8})([ZJKLMNYPQRH]{1})</value></property>
                    <property name="groupCount"><value>2</value></property>
                    <property name="firstNumericGroupKey"><value>1</value></property>
                    <property name="firstAlphaGroupKey"><value>2</value></property>
                </bean>
            </list>
        </property>
    </bean>
    <bean id="officerAdminValidator" class="org.dcjs.sjs.web.validation.OfficerAdminValidator">
        <property name="officerAdminUtil"><ref bean="officerAdminUtil"/></property>
    </bean>
    <bean id="personDetailValidator" class="org.dcjs.sjs.web.validation.PersonDetailValidator">
        <property name="personMasterValidator"><ref bean="personMasterValidator"/></property>
        <property name="personPhotoValidator"><ref bean="personPhotoValidator"/></property>
        <property name="employerValidator"><ref bean="employerValidator"/></property>
    </bean>
    <bean id="personMasterValidator" class="org.dcjs.sjs.web.validation.PersonMasterValidator">
        <property name="doModifiedDebug"><value>false</value></property>
        <property name="nysidValidator"><ref bean="nysidValidator"/></property>
        <property name="fbiValidator"><ref bean="fbiValidator"/></property>
    </bean>
    <bean id="personPhoneValidator" class="org.dcjs.sjs.web.validation.PersonPhoneValidator">
        <property name="personPhoneUtil"><ref bean="personPhoneUtil"/></property>
    </bean>
    <bean id="personPhotoValidator" class="org.dcjs.sjs.web.validation.PersonPhotoValidator"/>
    <bean id="securityMatrixValidator" class="org.dcjs.sjs.web.validation.SecurityMatrixValidator">
        <property name="userUtil"><ref bean="userUtil"/></property>
    </bean>
    <bean id="userAgencyValidator" class="org.dcjs.sjs.web.validation.UserAgencyValidator">
        <property name="userAgencyUtil"><ref bean="userAgcyUtil"/></property>
        <property name="returnEvaluator"><ref bean="returnEvaluator"/></property>
    </bean>
    <bean id="userValidator" class="org.dcjs.sjs.web.validation.UserValidator">
        <property name="userUtil"><ref bean="userUtil"/></property>
    </bean>
    <bean id="warrantContactValidator" class="org.dcjs.sjs.web.validation.WarrantContactValidator">
        <property name="warrantUtil"><ref bean="warrantUtil"/></property>
    </bean>
    <bean id="warrantNarrativeValidator" class="org.dcjs.sjs.web.validation.WarrantNarrativeValidator">
        <property name="narrativeValidator"><ref bean="narrativeValidator"/></property>
    </bean>
    <bean id="warrantPersonValidator" class="org.dcjs.sjs.web.validation.WarrantPersonValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
    </bean>
    <bean id="warrantValidator" class="org.dcjs.sjs.web.validation.WarrantValidator">
        <property name="personDetailValidator"><ref bean="personDetailValidator"/></property>
    </bean>

</beans>
