<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
				 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				 xmlns:quartz="http://www.opensymphony.com/quartz/JobSchedulingData"
				 xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd" >


	<object id="baseService" abstract="true">
		<property name="Properties" ref="deploymentVars" />
		<property name="EventData" ref="eventData" />		
		<property name="EncryptionUtility" ref="encryptionUtility" />
		<property name="CustomFieldData" ref ="customFieldData" />
		<property name="CustomFieldValueData" ref ="customFieldValueData" />
		<property name="AmendmentRequestData" ref="amendmentRequestData" />
		<property name="RepudiationData" ref="repudiationData" />
		<property name="SimpleLookupItemData" ref="simpleLookupItemData"/>
		<property name="EpaData" ref="epaData"/>
		<property name="PageService" ref ="pageService" />
    <property name="UserData" ref="userData"/>
    <property name="AgencyResponseToRepudiationEmailTemplate" value="${agency.response.to.repudiate.email.template}" />
    <property name="AgencyResponseToAmendmentEmailTemplate" value="${agency.response.to.amendment.email.template}" />
    <property name="EmailUtility" ref="emailUtility" />
	 <!--<property name="FacilityData" ref="facilityData" />-->
  </object>

  <object id="cersService" type="Sleis.Service.CersService" parent="baseService" init-method="Init">
		<property name="CersData" ref="cersData"/>
	</object>
	<object id="controlDeviceService" factory-object="serviceFactory" factory-method="CreateControlDeviceService" parent="baseService" init-method="Init" scope="request" singleton="false">
	</object>
  <object id="publicControlDeviceService" type="Sleis.Service.PublicControlDeviceService" parent="baseService" init-method="Init">
    <property name="ControlDeviceData" ref ="publicControlDeviceData" />
		<property name="ControlDevicePollutantData" ref ="publicControlDevicePollutantData" />
		<property name="EmissionUnitData" ref ="publicEmissionUnitData" />
		<property name="UnitProcessData" ref ="publicUnitProcessData" />
		<property name="FacilityData" ref="publicFacilityData" />
    <property name="ProcessEmissionService" ref="publicProcessEmissionService"/>
	</object>
	<object id="agencyControlDeviceService" type="Sleis.Service.AgencyControlDeviceService" parent="baseService" init-method="Init">
		<property name="ControlDeviceData" ref ="agencyControlDeviceData" />
		<property name="ControlDevicePollutantData" ref ="agencyControlDevicePollutantData" />
		<property name="EmissionUnitData" ref ="agencyEmissionUnitData" />
		<property name="UnitProcessData" ref ="agencyUnitProcessData" />
		<property name="FacilityData" ref="agencyFacilityData" />
    <property name="ControlDeviceIdentifierData" ref="agencyControlDeviceIdentifierData"/>
    <property name="ProcessEmissionService" ref="agencyProcessEmissionService"/>
	</object>

  <object id="documentService" factory-object="serviceFactory" factory-method="CreateDocumentService" parent="baseService" init-method="Init" scope="request" singleton="false">
    <property name="RepudiationRequestEmailTemplate" value="${repudiation.request.email.template}"/>
    <property name="ReportRepudiatedEmailTemplate" value="${report.repudiated.email.template}"/>
  </object>
  <object id="publicDocumentService" type="Sleis.Service.DocumentService" parent="baseService" init-method="Init">
		<property name="SubmissionDocumentData" ref="submissionDocumentData" />
    <property name="SubmissionCorData" ref="submissionCorData" />
		<property name="UserData" ref="userData" />
		<property name="PdfMaker" ref="submissionPdfMaker" />
		<property name="ReportService" ref="publicReportService" />	 
		<property name="RepudiateRequestData" ref="repudiateRequestData" />
		<property name="FacilityData" ref="publicFacilityData" />
  </object>
  <object id="agencyDocumentService" type="Sleis.Service.DocumentService" parent="baseService" init-method="Init">
    <property name="SubmissionDocumentData" ref="submissionDocumentData" />
    <property name="SubmissionCorData" ref="submissionCorData" />
    <property name="UserData" ref="userData" />
    <property name="PdfMaker" ref="submissionPdfMaker" />
    <property name="ReportService" ref="agencyReportService" />
    <property name="RepudiateRequestData" ref="repudiateRequestData" />
    <property name="FacilityData" ref="agencyFacilityData" />
    

  </object>

  <!--Emission Unit Services Configuration-->
  <object id="emissionUnitService" factory-object="serviceFactory" factory-method="CreateEmissionUnitService" parent="baseService" init-method="Init" scope="request" singleton="false">    
  </object>
	<object id="publicEmissionUnitService" type="Sleis.Service.PublicEmissionUnitService" parent="baseService" init-method="Init">
    <property name="EmissionUnitData" ref ="publicEmissionUnitData" />	
		<property name="RegulationProgramData" ref ="publicRegulationProgramData" />
		<property name="ControlApproachData" ref ="controlApproachData" />
		<property name="UnitProcessData" ref ="publicUnitProcessData" />
		<property name="ControlDeviceData" ref ="publicControlDeviceData" />
		<property name="EntityControlDeviceData" ref ="publicEntityControlDeviceData" />
    <property name="FacilityData" ref="publicFacilityData" />
    <property name="ProcessEmissionService" ref="publicProcessEmissionService"/>
    
  </object>
  <object id="agencyEmissionUnitService" type="Sleis.Service.AgencyEmissionUnitService" parent="baseService" init-method="Init">
    <property name="EmissionUnitData" ref ="agencyEmissionUnitData" />
    <property name="RegulationProgramData" ref ="agencyRegulationProgramData" />
    <property name="ControlApproachData" ref ="controlApproachData" />
    <property name="UnitProcessData" ref ="agencyUnitProcessData" />
    <property name="ControlDeviceData" ref ="agencyControlDeviceData" />
    <property name="EntityControlDeviceData" ref ="agencyEntityControlDeviceData" />
    <property name="FacilityData" ref="agencyFacilityData" />
    <property name="EmissionUnitIdentifierData" ref="agencyEmissionUnitIdentifierData"/>
    <property name="ProcessEmissionService" ref="agencyProcessEmissionService"/>
    
  </object>
  <!--END Emission Unit Services Configuration-->
  
  <!--  SERVICE FACTORY  -->
  <object id="serviceFactory" type="Sleis.Service.ServiceFactory" singleton="true">    
	  <property name="PublicFacilityService" ref="publicFacilityService"/>
	  <property name="AgencyFacilityService" ref="agencyFacilityService"/>
	  <property name="PublicReportService" ref="publicReportService"/>
	  <property name="AgencyReportService" ref="agencyReportService"/>
    <property name="AgencyReleasePointService" ref="agencyReleasePointService"/>
    <property name="PublicReleasePointService" ref="publicReleasePointService"/>
		<property name="AgencyReportAttachmentService" ref="agencyReportAttachmentService"/>
		<property name="PublicReportAttachmentService" ref="publicReportAttachmentService"/>
    <property name="PublicEmissionUnitService" ref="publicEmissionUnitService"/>
    <property name="AgencyEmissionUnitService" ref="agencyEmissionUnitService"/>
		<property name="PublicControlDeviceService" ref="publicControlDeviceService"/>
		<property name="AgencyControlDeviceService" ref="agencyControlDeviceService"/>
		<property name="PublicUnitProcessService" ref="publicUnitProcessService"/>
		<property name="AgencyUnitProcessService" ref="agencyUnitProcessService"/>
    <property name="AgencyProcessEmissionService" ref="agencyProcessEmissionService"/>
    <property name="PublicProcessEmissionService" ref="publicProcessEmissionService"/>
    <property name="PublicDocumentService" ref="publicDocumentService"/>
    <property name="AgencyDocumentService" ref="agencyDocumentService"/>
		<property name="UserService" ref="userService"/>
	</object>
  <!-- END SERVICE FACTORY -->
  
  <!-- FACILITY SERVICE CONFIGURATION -->
	<object id="facilityService" factory-object="serviceFactory" factory-method="CreateFacilityService" parent="baseService" init-method="Init" scope="request" singleton="false">
	</object>  
  <object id="publicFacilityService" type="Sleis.Service.PublicFacilityService" parent="baseService" init-method="Init">
    <property name="FacilityEmissionReportData" ref="facilityEmissionReportData" />
    <property name="UserData" ref="userData" />
    <property name="RoleData" ref="roleData" />
    <property name="FacilitySiteAddressData" ref ="publicFacilitySiteAddressData" />
		<property name="FacilityMailAddressData" ref="facilityMailAddressData" />
    <property name="FacilityNaicsData" ref="facilityNaicsData" />
    <property name="AgencyFacilityCommentData" ref="agencyFacilityCommentData" />
    <property name="AgencyFacilityIdentifierData" ref="agencyFacilityIdentifierData" />
    <property name="FacilityData" ref="publicFacilityData" />
    <property name="FacilityContactData" ref ="facilityContactData" />
    <property name="FacilityContactMethodData" ref ="facilityContactMethodData" />
    <property name="EmissionUnitData" ref ="publicEmissionUnitData" />   
    <property name="ControlDeviceData" ref ="publicControlDeviceData" />
    <property name="ReleasePointData" ref ="publicReleasePointData" />
  </object>
  <object id="agencyFacilityService" type="Sleis.Service.AgencyFacilityService" parent="baseService" init-method="Init" >
		<property name="FacilityEmissionReportData" ref="facilityEmissionReportData" />
		<property name="UserData" ref="userData" />
		<property name="RoleData" ref="roleData" />
    <property name="FacilityMailAddressData" ref ="agencyFacilityMailAddressData" />
    <property name="FacilitySiteAddressData" ref ="agencyFacilitySiteAddressData" />
		<property name="FacilityNaicsData" ref="agencyFacilityNaicsData" />
		<property name="AgencyFacilityCommentData" ref="agencyFacilityCommentData" />
		<property name="AgencyFacilityIdentifierData" ref="agencyFacilityIdentifierData" />
		<property name="FacilityData" ref="agencyFacilityData" />
		<property name="FacilityContactData" ref ="agencyFacilityContactData" />
		<property name="FacilityContactMethodData" ref ="agencyFacilityContactMethodData" />
    <property name="AlternateNameData" ref="agencyFacilityAlternateNameData"/>
    <property name="EmissionUnitData" ref ="agencyEmissionUnitData" />
    <property name="ControlDeviceData" ref ="agencyControlDeviceData" />
    <property name="ReleasePointData" ref ="agencyReleasePointData" />
  </object>
	<!-- END FACILITYSERVICE CONFIGURATION-->
  
	<object id="homeService" type="Sleis.Service.PublicHomeService" parent="baseService" init-method="Init">
		<property name="NewsData" ref="newsData" />
	</object>
	
	<object id="newsService" type="Sleis.Service.PublicNewsItemService" parent="baseService" init-method="Init">
		<property name="NewsData" ref="newsData" />
	</object>
	
	<object id="pageService" type="Sleis.Service.PageService" parent="baseService" init-method="Init">
		<property name="PageData" ref="pageData" />
		<property name="PageFieldData" ref="pageFieldData" />
		<property name="CacheDuration" ref="lokupCacheDuration" />
		<property name="FacilityData" ref="publicFacilityData" />
		<!-- 
		<property name="HelpNotDefinedMessage" value="Help content not defined" />
		<property name="DefaulthelpContentIndex" value="999" />
		-->
	</object>
  <!-- Process Emission Configuration-->
  <object id="processEmissionService" factory-object="serviceFactory" factory-method="CreateProcessEmissionService" parent="baseService" init-method="Init" scope="request" singleton="false">
  </object>
	<object id="publicProcessEmissionService" type="Sleis.Service.PublicProcessEmissionService" parent="baseService" init-method="Init">
		<property name="EmissionData" ref ="publicEmissionData" />
		<property name="ProcessEmissionData" ref ="publicProcessEmissionData" />
		<property name="EmissionUnitData" ref ="publicEmissionUnitData" />
		<property name="UnitProcessData" ref ="publicUnitProcessData" />	
		<property name="FacilityData" ref="publicFacilityData" />
    <property name="UnitProcessService" ref="publicUnitProcessService"/>
	</object>
  <object id="agencyProcessEmissionService" type="Sleis.Service.AgencyProcessEmissionService" parent="baseService" init-method="Init">
    <property name="EmissionData" ref ="agencyEmissionData" />
    <property name="ProcessEmissionData" ref ="agencyProcessEmissionData" />
    <property name="EmissionUnitData" ref ="agencyEmissionUnitData" />
    <property name="UnitProcessData" ref ="agencyUnitProcessData" />
    <property name="FacilityData" ref="agencyFacilityData" />
    <property name="UnitProcessService" ref="agencyUnitProcessService"/>
  </object>
  
  <!-- RELEASE POINT CONFIGURATIONS-->
  <object id="releasePointService" factory-object="serviceFactory" factory-method="CreateReleasePointService" parent="baseService" init-method="Init" scope="request" singleton="false">
  </object>
	<object id="publicReleasePointService" type="Sleis.Service.PublicReleasePointService" parent="baseService" init-method="Init">
		<property name="FacilityData" ref="publicFacilityData" />
		<property name="ReleasePointData" ref ="publicReleasePointData" />
    <property name="EmissionUnitData" ref="publicEmissionUnitData"/>
		<property name="UnitProcessData" ref ="publicUnitProcessData" />	 
	</object >
  <object id="agencyReleasePointService" type="Sleis.Service.AgencyReleasePointService" parent="baseService" init-method="Init">
    <property name="FacilityData" ref="agencyFacilityData" />
    <property name="ReleasePointData" ref ="agencyReleasePointData" />
    <property name="UnitProcessData" ref ="agencyUnitProcessData" />
    <property name="EmissionUnitData" ref="agencyEmissionUnitData"/>
    <property name="ReleasePointIdentifierData" ref="agencyReleasePointIdentifierData"/>
    <property name="CommentData" ref="agencyCommentData"/>
    
  </object >
  <!-- END RELEASE POINT CONFIGURATIONS-->
	<object id="reportAttachmentService" factory-object="serviceFactory" factory-method="CreateReportAttachmentService" parent="baseService" init-method="Init" scope="request" singleton="false">
	</object>
  <object id="agencyReportAttachmentService" type="Sleis.Service.AgencyReportAttachmentService" parent="baseService" init-method="Init">
		<property name="ReportAttachmentData" ref ="agencyReportAttachmentData" />
		<property name="ReportAttachmentDetailData" ref ="agencyReportAttachmentDetailData" />
	</object>
	<object id="publicReportAttachmentService" type="Sleis.Service.PublicReportAttachmentService" parent="baseService" init-method="Init">
		<property name="ReportAttachmentData" ref ="publicReportAttachmentData" />
		<property name="ReportAttachmentDetailData" ref ="publicReportAttachmentDetailData" />
	</object>
	
  <!-- REPORT SERVICE CONFIGURATIONS-->
  <object id="reportService" factory-object="serviceFactory" factory-method="CreateReportService" parent="baseService" init-method="Init" scope="request" singleton="false">
  
  </object>
	<object id="agencyReportService" type="Sleis.Service.AgencyReportService" parent="baseService" init-method="Init">		
		<property name="FacilityNaicsData" ref ="facilityNaicsData" />
		<property name="FacilityMailAddressData" ref ="agencyFacilityMailAddressData" />
		<property name="FacilitySiteAddressData" ref ="agencyFacilitySiteAddressData" />
		<property name="FacilityContactData" ref ="agencyFacilityContactData" />
		<property name="FacilityContactMethodData" ref ="agencyFacilityContactMethodData" />
		<property name="CustomFieldData" ref ="customFieldData" />
		<property name="CustomFieldValueData" ref ="customFieldValueData" />
		<property name="PublicReportData" ref="publicReportData" />
		<property name="ReportData" ref="reportData" />
		<property name="ReleasePointService" ref ="agencyReleasePointService" />
		<property name="ControlDeviceService" ref ="agencyControlDeviceService" />
		<property name="EmissionUnitService" ref ="agencyEmissionUnitService" />
		<property name="UnitProcessService" ref ="agencyUnitProcessService" />
		<property name="ProcessEmissionService" ref ="agencyProcessEmissionService" />
		<property name="FacilityData" ref="agencyFacilityData" />
    <property name="ReportSubmissionSuccessEmailTemplate" value="${report.submission.success.email.template}"/>
  </object>
  <object id="publicReportService" type="Sleis.Service.PublicReportService" parent="baseService" init-method="Init">	 
		<property name="FacilityNaicsData" ref ="facilityNaicsData" />
		<property name="FacilityMailAddressData" ref ="facilityMailAddressData" />
		<property name="FacilitySiteAddressData" ref ="publicFacilitySiteAddressData" />
		<property name="FacilityContactData" ref ="facilityContactData" />
		<property name="FacilityContactMethodData" ref ="facilityContactMethodData" />
		<property name="CustomFieldData" ref ="customFieldData" />
		<property name="CustomFieldValueData" ref ="customFieldValueData" />
		<property name="PublicReportData" ref="publicReportData" />
		<property name="ReportData" ref="publicReportData" />
		<property name="ReleasePointService" ref ="publicReleasePointService" />
		<property name="ControlDeviceService" ref ="publicControlDeviceService" />
		<property name="EmissionUnitService" ref ="publicEmissionUnitService" />
		<property name="UnitProcessService" ref ="publicUnitProcessService" />
		<property name="ProcessEmissionService" ref ="publicProcessEmissionService" />
		<property name="FacilityData" ref="publicFacilityData" />
    <property name="ReportSubmissionSuccessEmailTemplate" value="${report.submission.success.email.template}"/>
  </object>
  <!-- END REPORT SERVICE CONFIGURATIONS-->

	<object id="unitProcessService" factory-object="serviceFactory" factory-method="CreateUnitProcessService" parent="baseService" init-method="Init" scope="request" singleton="false">
	</object>
	<object id="publicUnitProcessService" type="Sleis.Service.PublicUnitProcessService" parent="baseService" init-method="Init">
		<property name="UnitProcessData" ref ="publicUnitProcessData" />
		<property name="EmissionUnitData" ref ="publicEmissionUnitData" />
		<property name="RegulationProgramData" ref ="publicRegulationProgramData" />
		<property name="ControlApproachData" ref ="controlApproachData" />
		<property name="ControlDeviceData" ref ="publicControlDeviceData" />
		<property name="ReleasePointData" ref ="publicReleasePointData" />
		<property name="UnitProcessReleasePointData" ref ="unitProcessReleasePointData" />
		<property name="EntityControlDeviceData" ref ="publicEntityControlDeviceData" />
		<property name="FacilityData" ref="publicFacilityData" />
    <property name="ProcessEmissionService" ref="publicProcessEmissionService"/>
	</object>
	<object id="agencyUnitProcessService" type="Sleis.Service.AgencyUnitProcessService" parent="baseService" init-method="Init">
		<property name="UnitProcessData" ref ="agencyUnitProcessData" />
		<property name="EmissionUnitData" ref ="agencyEmissionUnitData" />
		<property name="RegulationProgramData" ref ="agencyRegulationProgramData" />
		<property name="ControlApproachData" ref ="controlApproachData" />
		<property name="ControlDeviceData" ref ="agencyControlDeviceData" />
		<property name="ReleasePointData" ref ="agencyReleasePointData" />
		<property name="UnitProcessReleasePointData" ref ="unitProcessReleasePointData" />
		<property name="EntityControlDeviceData" ref ="agencyEntityControlDeviceData" />
		<property name="FacilityData" ref="agencyFacilityData" />
    <property name="UnitProcessIdentifierData" ref="agencyUnitProcessIdentifierData"/>
    <property name="CommentData" ref="agencyCommentData"/>
    <property name="ProcessEmissionService" ref="agencyProcessEmissionService"/>
	</object>
	
	<object id="userService" type="Sleis.Service.UserService" parent="baseService" init-method="Init">
		<property name="UserData" ref="userData" />
		<property name="RoleData" ref="roleData" />
		<property name="UserContactData" ref="userContactData" />
		<property name="UserAnswerData" ref="userAnswerData" />
		<property name="PasswordData" ref="passwordData" />
		<property name="UserCreateTemplate" value="${user.create.email.template}" />
		<property name="PasswordResetTemplate" value="${user.passreset.email.template}" />
		<property name="PasswordForgotTemplate" value="${user.passforgot.email.template}" />
    <property name="SecurityQuestionsResetTemplate" value="${user.security.questions.reset.email.template}" />
		<property name="EmailUtility" ref="emailUtility" />
		<property name="UserSecQuestionListSize" value="${user.sec.list.size}" />
		<property name="UserSecQuestionPrefix" value="${user.sec.prefix}" />
		<property name="FacilityData" ref="publicFacilityData" />
    <property name="UserAccountLockedTemplate" value="${user.account.locked.email.template}"/>
    <property name="UserAccountUnlockedTemplate" value="${user.account.unlocked.email.template}"/>
    <property name="UserAccountInactivatedTemplate" value="${user.account.inactivated.email.template}"/>
    <property name="UserAccountActivatedTemplate"  value="${user.account.activated.email.template}"/>
    <property name="MaxSecurityQuestionAttempts" value="${user.max.security.question.attempts}"/>
    <property name="MaxPasswordAttempts" value="${user.max.password.attempts}"/>
  </object>

  <object id="validationService" type="Sleis.Service.ValidationService" parent="baseService" init-method="Init">
		<property name="Validator" ref ="submissionValidator" />
  </object>
	
</objects>