/** * 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.sword.client; import org.dspace.core.ConfigurationManager; import org.purl.sword.base.Collection; import org.purl.sword.base.ServiceDocument; import org.purl.sword.base.SwordAcceptPackaging; import org.purl.sword.base.Workspace; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * User: Robin Taylor * Date: 15/02/11 * Time: 21:12 */ public class ServiceDocumentHelper { public static List<Collection> getCollections(ServiceDocument serviceDoc) { List<Collection> allCollections = new ArrayList<Collection>(); List<Workspace> workspaces = serviceDoc.getService().getWorkspacesList(); for (Workspace ws : workspaces) { List<Collection> collections = ws.getCollections(); allCollections.addAll(collections); } return allCollections; } public static Collection getCollection(ServiceDocument serviceDoc, String location) { List<Collection> allCollections = getCollections(serviceDoc); for (Collection collection : allCollections) { if (collection.getLocation().equals(location)) { return collection; } } // If we got here then we didn't find a match. return null; } public static String[] getCommonFileTypes(ServiceDocument serviceDoc, String location) { String FTsString = ConfigurationManager.getProperty("sword-client", "file-types"); String[] clientFTsArray = FTsString.split(","); List<String> clientFTs = Arrays.asList(clientFTsArray); List<String> commonFTs = new ArrayList<String>(); Collection collection = ServiceDocumentHelper.getCollection(serviceDoc, location); String[] serverFTs = collection.getAccepts(); for (String serverFT : serverFTs) { if (clientFTs.contains(serverFT)) { commonFTs.add(serverFT); } } return commonFTs.toArray(new String[commonFTs.size()]); } public static String[] getCommonPackageFormats(ServiceDocument serviceDoc, String location) { String PFsString = ConfigurationManager.getProperty("sword-client", "package-formats"); String[] clientPFsArray = PFsString.split(","); List<String> clientPFs = Arrays.asList(clientPFsArray); List<String> commonPFs = new ArrayList<String>(); Collection collection = ServiceDocumentHelper.getCollection(serviceDoc, location); List<SwordAcceptPackaging> serverPFs = collection.getAcceptPackaging(); for (SwordAcceptPackaging serverPF : serverPFs) { if (clientPFs.contains(serverPF.getContent())) { commonPFs.add(serverPF.getContent()); } } return commonPFs.toArray(new String[commonPFs.size()]); } public static String[] getPackageFormats(Collection collection) { List<String> packageFormats = new ArrayList<String>(); List<SwordAcceptPackaging> pfs = collection.getAcceptPackaging(); for (SwordAcceptPackaging pf : pfs) { packageFormats.add(pf.getContent()); } return packageFormats.toArray(new String[pfs.size()]); } }