<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE item-submission SYSTEM "item-submission.dtd">

<!-- Configurable Submission configuration file -->

<!-- This XML configuration file allows you to configure the ordering -->
<!-- and number of the steps that occur in the Item Submission Process. -->
<item-submission>

    <!-- The process-map maps collection handles to a particular Item -->
    <!-- Submission Process. This requires that a collection's name be -->
    <!-- unique, even within a community. DSpace does however ensure that each -->
    <!-- collection's handle is unique. Process-map provides the means to -->
    <!-- associate a unique collection name with an Item Submission process. -->
    <!-- The process-map also provides the special handle "default" (which is -->
    <!-- never a collection), here mapped to "traditional". Any collection -->
    <!-- which does not appear in this map will be associated with the mapping -->
    <!-- for handle "default". -->
    <submission-map>
        <name-map collection-handle="default" submission-name="traditional"/>
        <name-map collection-handle="123456789/language-test-1" submission-name="languagetestprocess"/>
        <name-map collection-handle="123456789/extraction-test" submission-name="extractiontestprocess"/>
        <name-map collection-handle="123456789/qualdrop-test" submission-name="qualdroptest"/>
        <name-map collection-handle="123456789/typebind-test" submission-name="typebindtest"/>
        <name-map collection-handle="123456789/accessCondition-not-discoverable" submission-name="accessConditionNotDiscoverable"/>
        <name-map collection-handle="123456789/test-hidden" submission-name="test-hidden"/>
        <name-map community-handle="123456789/topcommunity-test" submission-name="topcommunitytest"/>
        <name-map community-handle="123456789/subcommunity-test" submission-name="subcommunitytest"/>
        <name-map collection-handle="123456789/collection-test" submission-name="collectiontest"/>
        <name-map collection-entity-type="CustomEntityType" submission-name="entitytypetest"/>
        <name-map collection-handle="123456789/test-duplicate-detection" submission-name="test-duplicate-detection"/>
    </submission-map>


    <!-- The 'step-definitions' allows you to define steps which you may wish -->
    <!-- to "share" amongst multiple submission-item definitions. In order to -->
    <!-- share the same step definition, you can refer to it by its unique id -->
    <!-- defined in this section. EVERY 'step' in this section MUST have a -->
    <!-- unique identifier in the 'id' attribute! -->
    <!-- -->
    <!-- Each <step-definition> REQUIRES the following attributes (@) and properties: -->
    <!-- @id - The unique identifier for this step -->
    <!-- -->
    <!-- <processing-class> - The class which will process all information for -->
    <!-- this step. The class must implement -->
    <!-- 'org.dspace.app.rest.submit.RestProcessingStep' -->
    <!-- (or one of the org.dspace.rest.submit.step.* classes) -->
    <!-- This property should reference the full path of the class -->
    <!-- (e.g. org.dspace.app.rest.submit.step.MyCustomStep) -->
    <!-- -->
    <!-- The following properties are OPTIONAL for each <step-definition>: -->
    <!-- <heading> - References the message key, from the -->
    <!-- Messages.properties -->
    <!-- -->
    <step-definitions>
        <!-- The "collection" step is a "special step" which is *REQUIRED* -->
        <!-- In DSpace, all submitted items must be immediately assigned -->
        <!-- to a collection. This step ensures that a collection is always selected. -->
        <step-definition id="collection">
            <heading></heading>
            <processing-class>org.dspace.app.rest.submit.step.CollectionStep</processing-class>
            <type>collection</type>
        </step-definition>
        <step-definition id="traditionalpageone" mandatory="true">
            <heading>submit.progressbar.describe.stepone</heading>
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
        </step-definition>
        <step-definition id="traditionalpagetwo" mandatory="true">
            <heading>submit.progressbar.describe.steptwo</heading>
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
        </step-definition>
        <step-definition id="upload">
            <heading>submit.progressbar.upload</heading>
            <processing-class>org.dspace.app.rest.submit.step.UploadStep</processing-class>
            <type>upload</type>
        </step-definition>
        <step-definition id="license">
            <heading>submit.progressbar.license</heading>
            <processing-class>org.dspace.app.rest.submit.step.LicenseStep</processing-class>
            <type>license</type>
            <scope visibilityOutside="read-only">submission</scope>
        </step-definition>

        <step-definition id="qualdroptest">
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
        </step-definition>

        <step-definition id="typebindtest">
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
        </step-definition>

        <step-definition id="defaultAC">
            <heading>submit.progressbar.accessCondition</heading>
            <processing-class>org.dspace.app.rest.submit.step.AccessConditionStep</processing-class>
            <type>accessCondition</type>
        </step-definition>

        <step-definition id="notDiscoverable">
            <heading>submit.progressbar.accessCondition</heading>
            <processing-class>org.dspace.app.rest.submit.step.AccessConditionStep</processing-class>
            <type>accessCondition</type>
        </step-definition>

        <!-- Step Upload Item with Embargo Features to enable this step, please
            make sure to comment-out the previous step "UploadStep" <step-definition id="upload-with-embargo">
            <heading>submit.progressbar.upload</heading> <processing-class>org.dspace.submit.step.UploadWithEmbargoStep</processing-class>
            <type>uploadWithEmbargo</type> </step-definition> -->


        <!--Step will be to select a Creative Commons License -->
        <step-definition id="cclicense"> <heading>submit.progressbar.CClicense</heading>
            <processing-class>org.dspace.app.rest.submit.step.CCLicenseStep</processing-class>
            <type>cclicense</type> 
        </step-definition>

        <step-definition id="extractionstep"> 
            <heading>submit.progressbar.ExtractMetadataStep</heading>
            <processing-class>org.dspace.app.rest.submit.step.ExtractMetadataStep</processing-class>
            <type>extract</type>
        </step-definition>

        <!-- Fake Steps to test parsing of all options -->
        <!-- <step-definition mandatory="false"> <heading>fake.submission.readonly</heading>
            <processing-class>org.dspace.submit.step.SampleStep</processing-class> <type>sample</type>
            <scope visibility="read-only">submission</scope> </step-definition> <step-definition mandatory="false">
            <heading>fake.workflow.readonly</heading> <processing-class>org.dspace.submit.step.SampleStep</processing-class>
            <type>sample</type> <scope visibility="read-only">workflow</scope> </step-definition> -->

        <!-- This is the Sample Step which utilizes the JSPSampleStep class -->
        <step-definition id="sample">
            <heading>Sample</heading>
            <processing-class>org.dspace.submit.step.SampleStep</processing-class>
            <type>sample</type>
        </step-definition>

        <step-definition id="languagetest" mandatory="true">
            <heading>submit.progressbar.describe.stepone</heading>
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
        </step-definition>

        <step-definition id="sherpaPolicies" mandatory="true">
            <heading>submit.progressbar.sherpapolicy</heading>
            <processing-class>org.dspace.app.rest.submit.step.SherpaPolicyStep</processing-class>
            <type>sherpaPolicy</type>
        </step-definition>

        <step-definition id="identifiers">
            <heading>submit.progressbar.identifiers</heading>
            <processing-class>org.dspace.app.rest.submit.step.ShowIdentifiersStep</processing-class>
            <type>identifiers</type>
        </step-definition>

        <step-definition id="test-outside-workflow-hidden" mandatory="true">
            <heading>submit.progressbar.describe.stepone</heading>
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
            <scope visibilityOutside="hidden">workflow</scope>
        </step-definition>

        <step-definition id="test-outside-submission-hidden" mandatory="true">
            <heading>submit.progressbar.describe.stepone</heading>
            <processing-class>org.dspace.app.rest.submit.step.DescribeStep</processing-class>
            <type>submission-form</type>
            <scope visibilityOutside="hidden">submission</scope>
        </step-definition>

        <step-definition id="test-never-hidden" mandatory="true">
            <heading></heading>
            <processing-class>org.dspace.app.rest.submit.step.CollectionStep</processing-class>
            <type>collection</type>
        </step-definition>

        <step-definition id="test-always-hidden" mandatory="true">
            <heading></heading>
            <processing-class>org.dspace.app.rest.submit.step.CollectionStep</processing-class>
            <type>collection</type>
            <scope visibility="hidden" visibilityOutside="hidden">submission</scope>
        </step-definition>

        <!-- Detect duplicates step -->
        <step-definition id="duplicates">
            <heading>submit.progressbar.duplicates</heading>
            <processing-class>org.dspace.app.rest.submit.step.DuplicateDetectionStep</processing-class>
            <type>duplicates</type>
        </step-definition>

        <step-definition id="coarnotify">
            <heading>submit.progressbar.coarnotify</heading>
            <processing-class>org.dspace.app.rest.submit.step.NotifyStep</processing-class>
            <type>coarnotify</type>
        </step-definition>

    </step-definitions>

    <!-- The submission-definitions map lays out the detailed definition of -->
    <!-- all the Item Submission Processes (and the ordering of their steps). -->
    <!-- Each separate "submission-process" has a unique name as an attribute, -->
    <!-- which matches one of the names in the process-map. One named -->
    <!-- "submit-process" has the name "traditional"; as this name suggests, -->
    <!-- it is the default item submission process, which gets used when -->
    <!-- the specified collection has no correspondingly named submit-process. -->
    <!-- -->
    <!-- Each submit-process contains an ordered set of steps; each step -->
    <!-- defines one "step" occurring during the process of submitting an -->
    <!-- item. A step MUST be referenced by 'id' (it must -->
    <!-- be defined in <step-definitions> above). -->
    <!-- -->
    <!-- -->
    <submission-definitions>

        <!--This "traditional" process defines the DEFAULT item submission process -->
        <submission-process name="traditional">

            <!--Uncommment to display the SAMPLE step as your first step -->
            <!--<step id="sample"/> -->

            <step id="collection"/>

            <step id="identifiers"/>

            <!--Step will be to Describe the item. -->
            <step id="traditionalpageone"/>
            <step id="traditionalpagetwo"/>

            <!--Step will be COAR Notify services to the item -->
            <step id="coarnotify"/>

            <!--Step will be to Upload the item -->
            <step id="upload"/>
            <!-- <step id="upload-with-embargo"/> -->
            <!-- <step id="extractionstep"/> -->
            <step id="defaultAC"/>
            <step id="sherpaPolicies"/>

            <!--Step will be to Sign off on the License -->
            <step id="license"/>
            <step id="cclicense"/>
        </submission-process>

        <submission-process name="languagetestprocess">
            <step id="collection"/>
            <step id="languagetest"/>
        </submission-process>

        <submission-process name="extractiontestprocess">
            <step id="collection"/>
            <step id="traditionalpageone"/>
            <step id="traditionalpagetwo"/>
            <step id="upload"/>
            <step id="extractionstep"/>
            <step id="license"/>
            <step id="cclicense"/>
        </submission-process>

        <submission-process name="qualdroptest">
            <step id="qualdroptest" />
        </submission-process>

        <submission-process name="typebindtest">
            <step id="typebindtest" />
        </submission-process>

        <submission-process name="accessConditionNotDiscoverable">
            <step id="collection"/>
            <step id="traditionalpageone"/>
            <step id="notDiscoverable"/>
        </submission-process>

        <submission-process name="test-hidden">
            <step id="test-outside-workflow-hidden"/>
            <step id="test-outside-submission-hidden"/>
            <step id="test-never-hidden"/>
            <step id="test-always-hidden"/>
        </submission-process>

        <submission-process name="topcommunitytest">
            <step id="collection"/>
        </submission-process>

        <submission-process name="subcommunitytest">
            <step id="collection"/>
        </submission-process>

        <submission-process name="collectiontest">
            <step id="collection"/>
        </submission-process>

        <submission-process name="entitytypetest">
            <step id="collection"/>
        </submission-process>

        <submission-process name="test-duplicate-detection">
            <step id="collection"/>
            <step id="duplicates"/>
            <step id="traditionalpageone"/>
        </submission-process>

    </submission-definitions>

</item-submission>
