#---------------------------------------------------------------#
#----------------SWORD 2.0 SERVER CONFIGURATIONS----------------#
#---------------------------------------------------------------#
# These configs are only used by the SWORD Server interface,    #
# version 2.0 (used by DSpace to accept ingest packages via     #
# SWORD 2.0 protocol)                                           #
#---------------------------------------------------------------#

# the base url of the sword 2.0  system
#
# the default if {dspace.url}/swordv2
#
#swordv2-server.url = http://www.myu.ac.uk/swordv2

# The base URL of the SWORD collection.  This is the URL from
# which DSpace will construct the deposit location urls for
# collections.
#
# The default is {dspace.url}/swordv2/collection
#
# In the event that you are not deploying DSpace as the ROOT
# application in the servlet container, this will generate
# incorrect URLs, and you should override the functionality
# by specifying in full as below:
#
# swordv2-server.collection.url = http://www.myu.ac.uk/swordv2/collection

# The base URL of the SWORD service document.  This is the
# URL from which DSpace will construct the service document
# location urls for the site, and for individual collections
#
# The default is {dspace.url}/swordv2/servicedocument
#
# In the event that you are not deploying DSpace as the ROOT
# application in the servlet container, this will generate
# incorrect URLs, and you should override the functionality
# by specifying in full as below:
#
# swordv2-server.servicedocument.url = http://www.myu.ac.uk/swordv2/servicedocument

# The accept packaging properties, along with their associated
# quality values where appropriate.
#
# Global settings; these will be used on all DSpace collections
#
swordv2-server.accept-packaging.collection.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.accept-packaging.collection.SimpleZip = http://purl.org/net/sword/package/SimpleZip
swordv2-server.accept-packaging.collection.Binary = http://purl.org/net/sword/package/Binary

# The accept packaging properties for items.  This is used to determine
# which package types are acceptable to deposit into an existing item,
# either adding to or replacing the media resource
#
swordv2-server.accept-packaging.item.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.accept-packaging.item.SimpleZip = http://purl.org/net/sword/package/SimpleZip
swordv2-server.accept-packaging.item.Binary = http://purl.org/net/sword/package/Binary

# A comma separated list of MIME types that SWORD will accept
swordv2-server.accepts = */*

# Collection Specific settings: these will be used on the collections
# with the given handles
#
#swordv2-server.accept-packaging.collection.[handle].METSDSpaceSIP = http://purl.org/net/sword-types/METSDSpaceSIP

# Should the server offer as the default the list of all Communities
# to a Service Document request.  If false, the server will offer
# the list of all collections, which is the default and recommended
# behaviour at this stage.
#
# NOTE: a service document for Communities will not offer any viable
# deposit targets, and the client will need to request the list of
# Collections in the target before deposit can continue
#
swordv2-server.expose-communities = false
swordv2-server.allow-community-deposit = false

# The maximum upload size of a package through the sword interface,
# in bytes
#
# This will be the combined size of all the files, the metadata and
# any manifest data.  It is NOT the same as the maximum size set
# for an individual file upload through the user interface.  If not
# set, or set to 0, the sword service will default to no limit.
#
swordv2-server.max-upload-size = 0

# Should DSpace store a copy of the original sword deposit package?
#
# NOTE: this will cause the deposit process to run slightly slower,
# and will accelerate the rate at which the repository consumes disk
# space.  BUT, it will also mean that the deposited packages are
# recoverable in their original form.  It is strongly recommended,
# therefore, to leave this option turned on.
#
# NOTE: this affects all incoming deposits, whether they are package
# deposits or not.  That is, if individual files are uploaded to the
# Media Resource, a copy of that file will be stored in the SWORD
# bundle AND into the ORIGINAL bundle.
#
swordv2-server.keep-original-package = true

# The bundle name that SWORD should store incoming packages under if
# keep-original-package is set to true.  The default is "SWORD"
# if not value is set
#
# swordv2-server.bundle.name = SWORD

# The bundle name that SWORD should use to store deleted bitstreams
# if versions.keep is set to true.  This will be used in the case
# that individual files are updated or removed via SWORD.  If
# the entire Media Resource (files in the ORIGINAL bundle) is removed
# this will be backed up in its entirity in a bundle of its own
#
# swordv2-server.bundle.deleted = DELETED

# In the event of package ingest failure, provide an option to store
# the package on the file system. The default is false.
#swordv2-server.keep-package-on-fail=false
#swordv2-server.failed-package.dir=${dspace.dir}/upload

# Should we support mediated deposit via sword?  Enabled, this will
# allow users to deposit content packages on behalf of other users.
#
# WARNING: enabling mediated deposit is not intrinsically secure,
# it places a trust relationship between the authenticating user
# and the On-Behalf-Of user account within DSpace.  For example,
# ANY authenticated user may make changes to an existing item
# which belongs to the On-Behalf-Of user, which represents a significant
# security risk.  It is therefore recommended to either disable
# mediated deposit, or to expressly set a list of accounts which
# are allowed to mediate on behalf of other users 
# (see swordv2-server.on-behalf-of.update.mediators)
#
# See the SWORD specification for a detailed explanation of deposit
# On-Behalf-Of another user
#
swordv2-server.on-behalf-of.enable = false
#
# Which user accounts are allowed to do updates on items which already
# exist in DSpace, on-behalf-of other users?
#
# If this is left blank, or omitted, then all accounts can mediate
# updates to items, which could be a security risk, as there is no
# implicit checking that the authenticated user is a "legitimate"
# mediator
#
# FIXME: this would be best maintained in the database with a nice UI
# ... so if you feel the urge to build one please don't hesitate!
#
#swordv2-server.on-behalf-of.update.mediators = user1@myu.edu, user2@myu.edu

# Should the deposit receipt include a verbose description of the deposit?
#
swordv2-server.verbose-description.receipt.enable = false

# should the error document include a verbose description of the error
#
swordv2-server.verbose-description.error.enable = true

# The error document can contain an alternate url, which the client
# can use to follow up any issues.
#
# This is the Contact-Us page on the XMLUI (localise the url space
# first)
#
swordv2-server.error.alternate.url = ${dspace.baseUrl}/contact

# The URL may have an associated content type; if you know what it
# is, you can enter it here
#
swordv2-server.error.alternate.content-type = text/html

# The URL which identifies the sword software which provides
# the sword interface.  This is the URL which DSpace will use
# to fill out the atom:generator element of its atom documents.
#
# The default is:
#
# http://www.dspace.org/ns/sword/2.0/
#
# If you have modified your sword software, you should change
# this URI to identify your own version.  If you are using the
# standard dspace-sword module you will not, in general, need
# to change this setting
#
# swordv2-server.generator.url = http://www.dspace.org/ns/sword/2.0/

# Which version of SWORD is being used
swordv2-server.generator.version = 2.0

# The form of authentication to use
# This is normally set to 'Basic' for HTTP Basic
# Other valid values: 'None'
swordv2-server.auth-type = Basic

# The location where uploaded files and packages are
# stored while being processed
swordv2-server.upload.tempdir = ${upload.temp.dir}

# The metadata field in which to store the updated date for
# items deposited via SWORD.
swordv2-server.updated.field = dc.date.updated

# The metadata field in which to store the value of the slug
# header if it is supplied
swordv2-server.slug.field = dc.identifier.slug

# The metadata field in which to store the value of the
# atom entry author if it is supplied
swordv2-server.author.field = dc.contributor.author

# The metadata field in which to store the value of the
# atom entry title if it is supplied
swordv2-server.title.field = dc.title

# Supported packaging formats for the dissemination of packages
# FIXME: this format is not supported ...
#swordv2-server.disseminate-packaging.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.disseminate-packaging.SimpleZip = http://purl.org/net/sword/package/SimpleZip

# Configure the plugins to process incoming packages.  The form of this
# configuration is as per the Plugin Manager's Named Plugin documentation:
#
# plugin.named.[interface] = [implementation] = [package format identifier] \
#
# Package ingesters should implement the SWORDIngester interface, and
# will be loaded when a package of the format specified above in:
#
# swordv2-server.accept-packaging.[package format].identifier = [package format identifier]
#
# is received.
#
# In the event that this is a simple file deposit, with no package
# format, then the class named by "SimpleFileIngester" will be loaded
# and executed where appropriate.  This case will only occur when a single
# file is being deposited into an existing DSpace Item
#
plugin.named.org.dspace.sword2.SwordContentIngester = \
  org.dspace.sword2.SimpleZipContentIngester = http://purl.org/net/sword/package/SimpleZip, \
  org.dspace.sword2.SwordMETSContentIngester = http://purl.org/net/sword/package/METSDSpaceSIP, \
  org.dspace.sword2.BinaryContentIngester = http://purl.org/net/sword/package/Binary
#, \
#  org.dspace.swordpackagers.SwordDocXIngester = application/vnd.openxmlformats-officedocument.wordprocessingml.document, \
#  org.dspace.swordpackagers.SwordXifIngester = image/jpeg

plugin.single.org.dspace.sword2.SwordEntryIngester = \
  org.dspace.sword2.SimpleDCEntryIngester

plugin.single.org.dspace.sword2.SwordEntryDisseminator = \
  org.dspace.sword2.SimpleDCEntryDisseminator

# note that we replace ";" with "_" as ";" is not permitted in the PluginService names
plugin.named.org.dspace.sword2.SwordContentDisseminator = \
  org.dspace.sword2.SimpleZipContentDisseminator = http://purl.org/net/sword/package/SimpleZip, \
  org.dspace.sword2.FeedContentDisseminator = application/atom+xml, \
  org.dspace.sword2.FeedContentDisseminator = application/atom+xml_type_feed

# note that we replace ";" with "_" as ";" is not permitted in the PluginService names
plugin.named.org.dspace.sword2.SwordStatementDisseminator = \
  org.dspace.sword2.AtomStatementDisseminator = atom, \
  org.dspace.sword2.OreStatementDisseminator = rdf, \
  org.dspace.sword2.AtomStatementDisseminator = application/atom+xml_type_feed, \
  org.dspace.sword2.OreStatementDisseminator = application/rdf+xml

# Which bundles should the Statement include in its list of aggregated resources
#
# The Statement will automatically mark any bitstreams which are in the bundle
# identified by the ${bundle.name} property, provided that bundle is also
# listed here (i.e. if you want Original Deposits to be listed in the Statement
# then you should add the SWORD bundle to this list)
#
swordv2-server.statement.bundles = ORIGINAL, SWORD, LICENSE

# Workflow manager implementation - tells us what we are allowed to do
# via the SWORDv2 interface
#
# There are two default workflow managers:
#  - org.dspace.sword2.WorkflowManagerDefault: Only items in submission
#     are allowed to be UPDATED or DELETED using SWORD.
#  - org.dspace.sword2.WorkflowManagerUnrestricted: Items in workflow,
#     in archive, or withdrawn can also be UPDATED or DELETED using
#     SWORD
plugin.single.org.dspace.sword2.WorkflowManager = \
  org.dspace.sword2.WorkflowManagerDefault

# Should the WorkflowManagerDefault allow updates to the item's metadata
# to take place on items which are in states other than the workspace
# (e.g. in the workflow, archive, or withdrawn) ?
#
swordv2-server.workflowmanagerdefault.always-update-metadata = true

# Should the server allow PUT to individual files?
#
# If this is enabled, then DSpace may be used with the DepositMO SWORD
# extensions, BUT the caveat is that DSpace does not formally support
# Bitstream replace, so this is equivalent to a DELETE and then a POST,
# which violates the RESTfulness of the server.  The resulting file
# DOES NOT have the same identifier as the file it was replacing.  As such
# it is STRONGLY RECOMMENDED to leave this option turned off unless working
# explicitly with DepositMO enabled client environments
#
swordv2-server.workflowmanagerdefault.file-replace.enable = false


# tell the SWORD METS implementation which package ingester to use
# to install deposited content.  This should refer to one of the
# classes configured for:
#
# plugin.named.org.dspace.content.packager.PackageIngester
#
# The value of swordv2-server.mets-ingester.package-ingester tells the
# system which named plugin for this interface should be used
# to ingest SWORD METS packages
#
# The default is METS
#
# swordv2-server.mets-ingester.package-ingester = METS

# Should the sword server enable restore-mode when ingesting new
# packages. If this is enabled the item will be treated as a
# previously deleted item from the repository. If the item had
# previously been assigned a handle then that same handle will be
# restored to activity.
swordv2-server.restore-mode.enable = false

# metadata field mapping for SimpleDCEntryIngester, SimpleDCEntryDisseminator and FeedContentDisseminator,
#
swordv2-server.simpledc.abstract = dc.description.abstract
swordv2-server.simpledc.accessRights = dc.rights
#swordv2-server.simpledc.accrualMethod = dc.????
#swordv2-server.simpledc.accrualPeriodicity = dc.????
#swordv2-server.simpledc.accrualPolicy = dc.????
swordv2-server.simpledc.alternative = dc.title.alternative
#swordv2-server.simpledc.audience = dc.???
swordv2-server.simpledc.available = dc.date.available
swordv2-server.simpledc.bibliographicCitation = dc.identifier.citation
#swordv2-server.simpledc.conformsTo = dc.????
swordv2-server.simpledc.contributor = dc.contributor
swordv2-server.simpledc.coverage = dc.coverage
swordv2-server.simpledc.created = dc.date.created
swordv2-server.simpledc.creator = dc.contributor.author
swordv2-server.simpledc.date = dc.date
swordv2-server.simpledc.dateAccepted = dc.date.accepted
# swordv2-server.simpledc.dateCopyrighted = dc.date.???
swordv2-server.simpledc.dateSubmitted = dc.date.submitted
swordv2-server.simpledc.description = dc.description
#swordv2-server.simpledc.educationLevel = dc.???
swordv2-server.simpledc.extent = dc.format.extent
swordv2-server.simpledc.format = dc.format
#swordv2-server.simpledc.hasFormat = dc.????
#swordv2-server.simpledc.hasPart = dc.???
#swordv2-server.simpledc.hasVersion = dc.???
swordv2-server.simpledc.identifier = dc.identifier
#swordv2-server.simpledc.instructionalMethod = dc.???
#swordv2-server.simpledc.isFormatOf = dc.???
swordv2-server.simpledc.isPartOf = dc.relation.ispartof
swordv2-server.simpledc.isReferencedBy = dc.relation.isreferencedby
swordv2-server.simpledc.isReplacedBy = dc.relation.isreplacedby
swordv2-server.simpledc.isRequiredBy = dc.relation.isrequiredby
swordv2-server.simpledc.issued = dc.date.issued
#swordv2-server.simpledc.isVersionOf = dc.????
swordv2-server.simpledc.language = dc.language
#swordv2-server.simpledc.license = dc.????
#swordv2-server.simpledc.mediator = dc.????
swordv2-server.simpledc.medium = dc.format.medium
swordv2-server.simpledc.modified = dc.date.modified
swordv2-server.simpledc.provenance = dc.description.provenance
swordv2-server.simpledc.publisher = dc.publisher
swordv2-server.simpledc.references = dc.relation.references
swordv2-server.simpledc.relation = dc.relation
swordv2-server.simpledc.replaces = dc.relation.replaces
swordv2-server.simpledc.requires = dc.relation.requires
swordv2-server.simpledc.rights = dc.rights
swordv2-server.simpledc.rightsHolder = dc.rights
swordv2-server.simpledc.source = dc.source
swordv2-server.simpledc.spatial = dc.coverage.spatial
swordv2-server.simpledc.subject = dc.subject
#swordv2-server.simpledc.tableOfContents = dc.????
swordv2-server.simpledc.temporal = dc.coverage.temporal
swordv2-server.simpledc.title = dc.title
swordv2-server.simpledc.type = dc.type
#swordv2-server.simpledc.valid = dc.????

swordv2-server.atom.author = dc.contributor.author
swordv2-server.atom.published = dc.date.created
swordv2-server.atom.rights = dc.rights
swordv2-server.atom.summary = dc.description.abstract
swordv2-server.atom.title = dc.title
swordv2-server.atom.updated = dc.date.created

# Used by SimpleDCEntryIngester:
#
# Which metadata fields can be replaced during a PUT to the Item of an
# Atom Entry document?  Fields listed here are the ones which will be
# removed when a new PUT comes through (irrespective of whether there
# is a new incoming value to replace them)
#
swordv2-server.metadata.replaceable = dc.description.abstract, \
  						dc.rights, \
  						dc.title.alternative, \
  						dc.identifier.citation, \
  						dc.contributor, \
  						dc.coverage, \
  						dc.contributor.author, \
  						dc.date, \
  						dc.description, \
  						dc.format.extent, \
  						dc.format, dc.identifier, \
  						dc.relation.ispartof, \
  						dc.relation.isreferencedby, \
  						dc.relation.isreplacedby, \
  						dc.relation.isrequiredby, \
  						dc.language, \
  						dc.format.medium, \
  						dc.date.modified, \
  						dc.publisher, \
  						dc.relation.references, \
  						dc.relation, \
  						dc.relation.replaces, \
  						dc.relation.requires, \
  						dc.source, \
  						dc.coverage.spatial, \
  						dc.subject, \
  						dc.coverage.temporal, \
  						dc.title, \
  						dc.type


# order of precedence for importing multipart content.  if entry-first then
# metadata in the package will override metadata in the entry, otherwise
# the entry metadata will be applied before the package metadata, so the
# package may override the metadata supplied in the entry - it depends on
# the specific behaviour of the package ingester selected
#
# Defaults to false
swordv2-server.multipart.entry-first = false

# if the workflow gets started, should there be a notification
# email sent
#
swordv2-server.workflow.notify = true

# when content is replaced, should the old version of the content be kept?  This
# creates a copy of the ORIGINAL bundle with the name V_YYYY-MM-DD.X where YYYY-MM-DD
# is the date the copy was created, and X is an integer from 0 upwards.
#
swordv2-server.versions.keep = true

swordv2-server.state.workspace.uri = http://dspace.org/state/inprogress
swordv2-server.state.workspace.description = The item is in the user workspace
swordv2-server.state.workflow.uri = http://dspace.org/state/inreview
swordv2-server.state.workflow.description = The item is undergoing review prior to acceptance to the archive
swordv2-server.state.archive.uri = http://dspace.org/state/archived
swordv2-server.state.archive.description = The item has been archived
swordv2-server.state.withdrawn.uri = http://dspace.org/state/withdrawn
swordv2-server.state.withdrawn.description = The item has been withdrawn from the archive and is no longer available

# URL template for items in the workspace (items in the archive will use
# the handle)
#
# JSPUI
# swordv2-server.workspace.url-template = ${dspace.baseUrl}/view-workspaceitem?submit_view=Yes&workspace_id=#wsid#

# XMLUI
swordv2-server.workspace.url-template = ${dspace.baseUrl}/submit?workspaceID=#wsid#


