Using default filter.

This commit is contained in:
João Melo
2014-01-19 21:30:48 +00:00
parent f231ff5308
commit 08d0fdd5d3
3 changed files with 194 additions and 332 deletions

View File

@@ -18,7 +18,7 @@
<root.basedir>${basedir}/..</root.basedir> <root.basedir>${basedir}/..</root.basedir>
<spring.version>3.2.3.RELEASE</spring.version> <spring.version>3.2.3.RELEASE</spring.version>
<xoai.version>3.2.5</xoai.version> <xoai.version>3.2.5</xoai.version>
<jtwig.version>1.0.2</jtwig.version> <jtwig.version>2.0.0</jtwig.version>
</properties> </properties>
<build> <build>
@@ -114,7 +114,7 @@
<!-- Templating Engine --> <!-- Templating Engine -->
<dependency> <dependency>
<groupId>com.lyncode</groupId> <groupId>com.lyncode</groupId>
<artifactId>jtwig</artifactId> <artifactId>jtwig-spring</artifactId>
<version>${jtwig.version}</version> <version>${jtwig.version}</version>
</dependency> </dependency>

View File

@@ -1,119 +0,0 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.xoai.filter;
import com.lyncode.xoai.dataprovider.core.ReferenceSet;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.dspace.content.DSpaceObject;
import org.dspace.core.Context;
import org.dspace.xoai.data.DSpaceItem;
import org.dspace.xoai.filter.results.DatabaseFilterResult;
import org.dspace.xoai.filter.results.SolrFilterResult;
import org.dspace.xoai.services.api.database.CollectionsService;
import org.dspace.xoai.services.api.database.HandleResolver;
import java.util.List;
/**
*
* @author Lyncode Development Team <dspace@lyncode.com>
*/
public class DSpaceSetSpecFilter extends DSpaceFilter
{
private static Logger log = LogManager.getLogger(DSpaceSetSpecFilter.class);
private String setSpec;
private HandleResolver handleResolver;
private CollectionsService collectionsService;
public DSpaceSetSpecFilter(CollectionsService collectionsService, HandleResolver handleResolver, String spec)
{
this.collectionsService = collectionsService;
this.handleResolver = handleResolver;
setSpec = spec;
}
@Override
public DatabaseFilterResult buildDatabaseQuery(Context context)
{
if (setSpec.startsWith("col_"))
{
try
{
DSpaceObject dso = handleResolver.resolve(setSpec.replace("col_", ""));
return new DatabaseFilterResult(
"EXISTS (SELECT tmp.* FROM collection2item tmp WHERE tmp.item_id=i.item_id AND collection_id = ?)",
dso.getID());
}
catch (Exception ex)
{
log.error(ex.getMessage(), ex);
}
}
else if (setSpec.startsWith("com_"))
{
try
{
DSpaceObject dso = handleResolver.resolve(setSpec.replace("com_", ""));
List<Integer> list = collectionsService.getAllSubCollections(dso.getID());
String subCollections = StringUtils.join(list.iterator(), ",");
return new DatabaseFilterResult(
"EXISTS (SELECT tmp.* FROM collection2item tmp WHERE tmp.item_id=i.item_id AND collection_id IN ("
+ subCollections + "))");
}
catch (Exception e)
{
log.error(e.getMessage(), e);
}
}
return new DatabaseFilterResult();
}
@Override
public boolean isShown(DSpaceItem item)
{
for (ReferenceSet s : item.getSets())
if (s.getSetSpec().equals(setSpec))
return true;
return false;
}
@Override
public SolrFilterResult buildSolrQuery()
{
if (setSpec.startsWith("col_"))
{
try
{
return new SolrFilterResult("item.collections:"
+ ClientUtils.escapeQueryChars(setSpec));
}
catch (Exception ex)
{
log.error(ex.getMessage(), ex);
}
}
else if (setSpec.startsWith("com_"))
{
try
{
return new SolrFilterResult("item.communities:"
+ ClientUtils.escapeQueryChars(setSpec));
}
catch (Exception e)
{
log.error(e.getMessage(), e);
}
}
return new SolrFilterResult();
}
}

View File

@@ -10,201 +10,201 @@
Developed by DSpace @ Lyncode <dspace@lyncode.com> Developed by DSpace @ Lyncode <dspace@lyncode.com>
--> -->
<Configuration indented="false" maxListIdentifiersSize="100" maxListRecordsSize="100" <Configuration indented="false" maxListIdentifiersSize="100" maxListRecordsSize="100"
maxListSetsSize="100" stylesheet="static/style.xsl" maxListSetsSize="100" stylesheet="static/style.xsl"
xmlns="http://www.lyncode.com/XOAIConfiguration"> xmlns="http://www.lyncode.com/XOAIConfiguration">
<Contexts> <Contexts>
<Context baseurl="request" name="Default Context"> <Context baseurl="request" name="Default Context">
<Format ref="oaidc" /> <!-- Restrict access to hidden items by default -->
<Format ref="mets" /> <Filter ref="defaultFilter" />
<Format ref="xoai" />
<Format ref="didl" /> <Format ref="oaidc"/>
<Format ref="dim" /> <Format ref="mets"/>
<Format ref="ore" /> <Format ref="xoai"/>
<Format ref="rdf" /> <Format ref="didl"/>
<Format ref="etdms" /> <Format ref="dim"/>
<Format ref="mods" /> <Format ref="ore"/>
<Format ref="qdc" /> <Format ref="rdf"/>
<Format ref="marc" /> <Format ref="etdms"/>
<Format ref="uketd_dc" /> <Format ref="mods"/>
<Format ref="qdc"/>
<Format ref="marc"/>
<Format ref="uketd_dc"/>
<!--<Format ref="junii2" />--> <!--<Format ref="junii2" />-->
<Description> <Description>
This is the default context of the DSpace data provider. This is the default context of the DSpace data provider.
</Description> </Description>
</Context> </Context>
<!-- <!--
Driver Guidelines: Driver Guidelines:
- http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf - http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf
Page 57 - 58 Page 57 - 58
--> -->
<Context baseurl="driver" name="Driver Context"> <Context baseurl="driver" name="Driver Context">
<!-- Date format, field prefixes, etc are ensured by the transformer --> <!-- Date format, field prefixes, etc are ensured by the transformer -->
<Transformer ref="driverTransformer"/> <Transformer ref="driverTransformer"/>
<!-- The driver filter --> <!-- The driver filter -->
<Filter ref="driverFilter" /> <Filter ref="driverFilter"/>
<!-- Just an alias, if fact it returns all items within the driver context --> <!-- Just an alias, if fact it returns all items within the driver context -->
<Set ref="driverSet" /> <Set ref="driverSet"/>
<!-- Metadata Formats --> <!-- Metadata Formats -->
<Format ref="oaidc"/> <Format ref="oaidc"/>
<Format ref="mets" /> <Format ref="mets"/>
<Format ref="didl" /> <Format ref="didl"/>
<Description> <Description>
This contexts complains with Driver rules. This contexts complains with Driver rules.
</Description> </Description>
</Context> </Context>
<!-- <!--
OpenAIRE Guidelines 1.1: OpenAIRE Guidelines 1.1:
- http://www.openaire.eu/en/component/attachments/download/79%E2%8C%A9=en - http://www.openaire.eu/en/component/attachments/download/79%E2%8C%A9=en
There is a limitation over the embargoedEndDate parameter: There is a limitation over the embargoedEndDate parameter:
- Predefined DSpace fields don't allow to set this up with a default. - Predefined DSpace fields don't allow to set this up with a default.
--> -->
<Context baseurl="openaire" name="OpenAIRE Context"> <Context baseurl="openaire" name="OpenAIRE Context">
<!-- Date format, field prefixes, etc are ensured by the transformer --> <!-- Date format, field prefixes, etc are ensured by the transformer -->
<Transformer ref="openaireTransformer" /> <Transformer ref="openaireTransformer"/>
<!-- OpenAIRE filter --> <!-- OpenAIRE filter -->
<Filter ref="openAireFilter" /> <Filter ref="openAireFilter"/>
<!-- Just an alias, if fact it returns all items within the driver context --> <!-- Just an alias, if fact it returns all items within the driver context -->
<Set ref="openaireSet" /> <Set ref="openaireSet"/>
<!-- Metadata Formats --> <!-- Metadata Formats -->
<Format ref="oaidc" /> <Format ref="oaidc"/>
<Format ref="mets" /> <Format ref="mets"/>
<Description> <Description>
This contexts complains with OpenAIRE rules. This contexts complains with OpenAIRE rules.
</Description> </Description>
</Context> </Context>
</Contexts> </Contexts>
<Formats> <Formats>
<Format id="oaidc"> <Format id="oaidc">
<Prefix>oai_dc</Prefix> <Prefix>oai_dc</Prefix>
<XSLT>metadataFormats/oai_dc.xsl</XSLT> <XSLT>metadataFormats/oai_dc.xsl</XSLT>
<Namespace>http://www.openarchives.org/OAI/2.0/oai_dc/</Namespace> <Namespace>http://www.openarchives.org/OAI/2.0/oai_dc/</Namespace>
<SchemaLocation>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</SchemaLocation> <SchemaLocation>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</SchemaLocation>
</Format> </Format>
<Format id="mets"> <Format id="mets">
<Prefix>mets</Prefix> <Prefix>mets</Prefix>
<XSLT>metadataFormats/mets.xsl</XSLT> <XSLT>metadataFormats/mets.xsl</XSLT>
<Namespace>http://www.loc.gov/METS/</Namespace> <Namespace>http://www.loc.gov/METS/</Namespace>
<SchemaLocation>http://www.loc.gov/standards/mets/mets.xsd</SchemaLocation> <SchemaLocation>http://www.loc.gov/standards/mets/mets.xsd</SchemaLocation>
</Format> </Format>
<!-- Shows the XOAI internal generated XML --> <!-- Shows the XOAI internal generated XML -->
<Format id="xoai"> <Format id="xoai">
<Prefix>xoai</Prefix> <Prefix>xoai</Prefix>
<XSLT>metadataFormats/xoai.xsl</XSLT> <XSLT>metadataFormats/xoai.xsl</XSLT>
<Namespace>http://www.lyncode.com/xoai</Namespace> <Namespace>http://www.lyncode.com/xoai</Namespace>
<SchemaLocation>http://www.lyncode.com/schemas/xoai.xsd</SchemaLocation> <SchemaLocation>http://www.lyncode.com/schemas/xoai.xsd</SchemaLocation>
</Format> </Format>
<Format id="didl"> <Format id="didl">
<Prefix>didl</Prefix> <Prefix>didl</Prefix>
<XSLT>metadataFormats/didl.xsl</XSLT> <XSLT>metadataFormats/didl.xsl</XSLT>
<Namespace>urn:mpeg:mpeg21:2002:02-DIDL-NS</Namespace> <Namespace>urn:mpeg:mpeg21:2002:02-DIDL-NS</Namespace>
<SchemaLocation>http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-21_schema_files/did/didl.xsd</SchemaLocation> <SchemaLocation>http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-21_schema_files/did/didl.xsd
</Format> </SchemaLocation>
<Format id="dim"> </Format>
<Prefix>dim</Prefix> <Format id="dim">
<XSLT>metadataFormats/dim.xsl</XSLT> <Prefix>dim</Prefix>
<Namespace>http://www.dspace.org/xmlns/dspace/dim</Namespace> <XSLT>metadataFormats/dim.xsl</XSLT>
<SchemaLocation>http://www.dspace.org/schema/dim.xsd</SchemaLocation> <Namespace>http://www.dspace.org/xmlns/dspace/dim</Namespace>
</Format> <SchemaLocation>http://www.dspace.org/schema/dim.xsd</SchemaLocation>
<Format id="ore"> </Format>
<Prefix>ore</Prefix> <Format id="ore">
<XSLT>metadataFormats/ore.xsl</XSLT> <Prefix>ore</Prefix>
<Namespace>http://www.w3.org/2005/Atom</Namespace> <XSLT>metadataFormats/ore.xsl</XSLT>
<SchemaLocation>http://tweety.lanl.gov/public/schemas/2008-06/atom-tron.sch</SchemaLocation> <Namespace>http://www.w3.org/2005/Atom</Namespace>
</Format> <SchemaLocation>http://tweety.lanl.gov/public/schemas/2008-06/atom-tron.sch</SchemaLocation>
<Format id="rdf"> </Format>
<Prefix>rdf</Prefix> <Format id="rdf">
<XSLT>metadataFormats/rdf.xsl</XSLT> <Prefix>rdf</Prefix>
<Namespace>http://www.openarchives.org/OAI/2.0/rdf/</Namespace> <XSLT>metadataFormats/rdf.xsl</XSLT>
<SchemaLocation>http://www.openarchives.org/OAI/2.0/rdf.xsd</SchemaLocation> <Namespace>http://www.openarchives.org/OAI/2.0/rdf/</Namespace>
</Format> <SchemaLocation>http://www.openarchives.org/OAI/2.0/rdf.xsd</SchemaLocation>
<Format id="etdms"> </Format>
<Prefix>etdms</Prefix> <Format id="etdms">
<XSLT>metadataFormats/etdms.xsl</XSLT> <Prefix>etdms</Prefix>
<Namespace>http://www.ndltd.org/standards/metadata/etdms/1.0/</Namespace> <XSLT>metadataFormats/etdms.xsl</XSLT>
<SchemaLocation>http://www.ndltd.org/standards/metadata/etdms/1.0/etdms.xsd</SchemaLocation> <Namespace>http://www.ndltd.org/standards/metadata/etdms/1.0/</Namespace>
</Format> <SchemaLocation>http://www.ndltd.org/standards/metadata/etdms/1.0/etdms.xsd</SchemaLocation>
<Format id="mods"> </Format>
<Prefix>mods</Prefix> <Format id="mods">
<XSLT>metadataFormats/mods.xsl</XSLT> <Prefix>mods</Prefix>
<Namespace>http://www.loc.gov/mods/v3</Namespace> <XSLT>metadataFormats/mods.xsl</XSLT>
<SchemaLocation>http://www.loc.gov/standards/mods/v3/mods-3-1.xsd</SchemaLocation> <Namespace>http://www.loc.gov/mods/v3</Namespace>
</Format> <SchemaLocation>http://www.loc.gov/standards/mods/v3/mods-3-1.xsd</SchemaLocation>
<Format id="qdc"> </Format>
<Prefix>qdc</Prefix> <Format id="qdc">
<XSLT>metadataFormats/qdc.xsl</XSLT> <Prefix>qdc</Prefix>
<Namespace>http://purl.org/dc/terms/</Namespace> <XSLT>metadataFormats/qdc.xsl</XSLT>
<SchemaLocation>http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd</SchemaLocation> <Namespace>http://purl.org/dc/terms/</Namespace>
</Format> <SchemaLocation>http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd</SchemaLocation>
<Format id="marc"> </Format>
<Prefix>marc</Prefix> <Format id="marc">
<XSLT>metadataFormats/marc.xsl</XSLT> <Prefix>marc</Prefix>
<Namespace>http://www.loc.gov/MARC21/slim</Namespace> <XSLT>metadataFormats/marc.xsl</XSLT>
<SchemaLocation>http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd</SchemaLocation> <Namespace>http://www.loc.gov/MARC21/slim</Namespace>
</Format> <SchemaLocation>http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd</SchemaLocation>
<Format id="uketd_dc"> </Format>
<Prefix>uketd_dc</Prefix> <Format id="uketd_dc">
<XSLT>metadataFormats/uketd_dc.xsl</XSLT> <Prefix>uketd_dc</Prefix>
<Namespace>http://naca.central.cranfield.ac.uk/ethos-oai/2.0/</Namespace> <XSLT>metadataFormats/uketd_dc.xsl</XSLT>
<SchemaLocation>http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd</SchemaLocation> <Namespace>http://naca.central.cranfield.ac.uk/ethos-oai/2.0/</Namespace>
<<<<<<< HEAD <SchemaLocation>http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd</SchemaLocation>
<Filter refid="thesisFilter" /> <Filter ref="uketdDcFilter"/>
======= </Format>
<Filter ref="uketdDcFilter" />
>>>>>>> 7c0f545... OAI 2.1
</Format>
<Format id="junii2"> <Format id="junii2">
<Prefix>junii2</Prefix> <Prefix>junii2</Prefix>
<XSLT>metadataFormats/junii2.xsl</XSLT> <XSLT>metadataFormats/junii2.xsl</XSLT>
<Namespace>http://irdb.nii.ac.jp/oai</Namespace> <Namespace>http://irdb.nii.ac.jp/oai</Namespace>
<SchemaLocation>http://irdb.nii.ac.jp/oai/junii2-3_0.xsd</SchemaLocation> <SchemaLocation>http://irdb.nii.ac.jp/oai/junii2-3_0.xsd</SchemaLocation>
</Format> </Format>
</Formats> </Formats>
<Transformers> <Transformers>
<Transformer id="driverTransformer"> <Transformer id="driverTransformer">
<XSLT>transformers/driver.xsl</XSLT> <XSLT>transformers/driver.xsl</XSLT>
</Transformer> </Transformer>
<Transformer id="openaireTransformer"> <Transformer id="openaireTransformer">
<XSLT>transformers/openaire.xsl</XSLT> <XSLT>transformers/openaire.xsl</XSLT>
</Transformer> </Transformer>
</Transformers> </Transformers>
<Filters> <Filters>
<Filter id="driverFilter"> <Filter id="driverFilter">
<Definition> <Definition>
<And> <And>
<LeftCondition> <LeftCondition>
<And> <And>
<LeftCondition> <LeftCondition>
<Custom ref="titleExistsCondition" /> <Custom ref="titleExistsCondition"/>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<Custom ref="authorExistsCondition" /> <Custom ref="authorExistsCondition"/>
</RightCondition> </RightCondition>
</And> </And>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<And> <And>
<LeftCondition> <LeftCondition>
<Custom ref="driverDocumentTypeCondition" /> <Custom ref="driverDocumentTypeCondition"/>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<And> <And>
<LeftCondition> <LeftCondition>
<Custom ref="bitstreamAccessCondition" /> <Custom ref="bitstreamAccessCondition"/>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<Custom ref="driverAccessCondition" /> <Custom ref="driverAccessCondition"/>
</RightCondition> </RightCondition>
</And> </And>
</RightCondition> </RightCondition>
@@ -220,20 +220,20 @@
<LeftCondition> <LeftCondition>
<And> <And>
<LeftCondition> <LeftCondition>
<Custom ref="titleExistsFilter" /> <Custom ref="titleExistsFilter"/>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<Custom ref="authorExistsFilter" /> <Custom ref="authorExistsFilter"/>
</RightCondition> </RightCondition>
</And> </And>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<And> <And>
<LeftCondition> <LeftCondition>
<Custom ref="driverDocumentTypeFilter" /> <Custom ref="driverDocumentTypeFilter"/>
</LeftCondition> </LeftCondition>
<RightCondition> <RightCondition>
<Custom ref="openaireRelationFilter" /> <Custom ref="openaireRelationFilter"/>
</RightCondition> </RightCondition>
</And> </And>
</RightCondition> </RightCondition>
@@ -243,7 +243,13 @@
<Filter id="uketdDcFilter"> <Filter id="uketdDcFilter">
<Definition> <Definition>
<Custom ref="thesisDocumentTypeCondition" /> <Custom ref="thesisDocumentTypeCondition"/>
</Definition>
</Filter>
<Filter id="defaultFilter">
<Definition>
<Custom ref="bitstreamAccessCondition"/>
</Definition> </Definition>
</Filter> </Filter>
@@ -270,8 +276,8 @@
</Configuration> </Configuration>
</CustomCondition> </CustomCondition>
<CustomCondition id="driverDocumentTypeCondition"> <CustomCondition id="driverDocumentTypeCondition">
<Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class> <Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
<Configuration> <Configuration>
<string name="field">dc.type</string> <string name="field">dc.type</string>
<string name="operator">ends_with</string> <string name="operator">ends_with</string>
@@ -294,10 +300,10 @@
<string>other</string> <string>other</string>
</list> </list>
</Configuration> </Configuration>
</CustomCondition> </CustomCondition>
<CustomCondition id="driverAccessCondition"> <CustomCondition id="driverAccessCondition">
<Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class> <Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
<Configuration> <Configuration>
<string name="field">dc.rights</string> <string name="field">dc.rights</string>
<string name="operator">contains</string> <string name="operator">contains</string>
@@ -306,57 +312,32 @@
<string>openAccess</string> <string>openAccess</string>
</list> </list>
</Configuration> </Configuration>
</CustomCondition> </CustomCondition>
<CustomCondition id="bitstreamAccessCondition"> <CustomCondition id="bitstreamAccessCondition">
<Class>org.dspace.xoai.filter.DSpaceAuthorizationFilter</Class> <Class>org.dspace.xoai.filter.DSpaceAuthorizationFilter</Class>
</CustomCondition> </CustomCondition>
<CustomCondition id="openaireRelationCondition"> <CustomCondition id="openaireRelationCondition">
<Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class> <Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
<<<<<<< HEAD
<Parameter key="field">
<Value>dc.relation</Value>
</Parameter>
<Parameter key="operator">
<Value>starts_with</Value>
</Parameter>
<Parameter key="value">
<Value>info:eu-repo/grantAgreement/EC/FP</Value>
</Parameter>
</Filter>
<Filter id="thesisFilter">
<Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
<Parameter key="field">
<Value>dc.type</Value>
</Parameter>
<Parameter key="operator">
<Value>contains</Value>
</Parameter>
<Parameter key="value">
<Value>Thesis</Value>
</Parameter>
</Filter>
=======
<Configuration> <Configuration>
<string name="field">dc.relation</string> <string name="field">dc.relation</string>
<string name="operator">starts_with</string> <string name="operator">starts_with</string>
<string name="value">info:eu-repo/grantAgreement/EC/FP</string> <string name="value">info:eu-repo/grantAgreement/EC/FP</string>
</Configuration> </Configuration>
</CustomCondition> </CustomCondition>
>>>>>>> 7c0f545... OAI 2.1 </Filters>
</Filters>
<Sets> <Sets>
<Set id="driverSet"> <Set id="driverSet">
<Spec>driver</Spec> <Spec>driver</Spec>
<Name>Open Access DRIVERset</Name> <Name>Open Access DRIVERset</Name>
<!-- Just an alias --> <!-- Just an alias -->
</Set> </Set>
<Set id="openaireSet"> <Set id="openaireSet">
<Spec>ec_fundedresources</Spec> <Spec>ec_fundedresources</Spec>
<Name>EC_fundedresources set</Name> <Name>EC_fundedresources set</Name>
<!-- Just an alias --> <!-- Just an alias -->
</Set> </Set>
</Sets> </Sets>
</Configuration> </Configuration>