Ignore:
Timestamp:
03/23/10 13:27:50 (14 years ago)
Author:
oschonef
Message:
  • further work an GWDG handle integration
File:
1 moved

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/GWDGPersistentIdentifierProvider.java

    r273 r276  
    1 package eu.clarin.cmdi.virtualcollectionregistry.model;
     1package eu.clarin.cmdi.virtualcollectionregistry;
    22
    33import java.net.URI;
     
    3030import org.slf4j.LoggerFactory;
    3131
    32 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
    33 
    34 public class GWDGPersistentIdentifierProvider extends
    35                 PersistentIdentifierProvider {
     32import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier;
     33import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider;
     34import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     35
     36public class GWDGPersistentIdentifierProvider extends PersistentIdentifierProvider {
    3637        private static enum Attribute {
    3738                PID, URL, CREATOR, EXPDATE;
     
    7879        private XMLInputFactory factory;
    7980
    80         /* XXX: refactor Internal and GWDG PID class/providers, so only one
    81          *        PID class exists.
    82          *        Maybe: store type in generic PID class
    83          *        inject dependency to PID provider in PID classes and
    84          *        make factory method in provider for creating URIs
    85          */
    86         public GWDGPersistentIdentifierProvider(Map<String,String> config)
     81        GWDGPersistentIdentifierProvider(Map<String,String> config)
    8782                        throws VirtualCollectionRegistryException {
    8883                super(config);
    8984                try {
    90                         String base_uri = getParameter(config, BASE_URI);
     85                        String base_uri = getConfigParameter(config, BASE_URI);
    9186                        if (!base_uri.endsWith("/")) {
    9287                                base_uri = base_uri + "/";
     
    9893                                      "parameter \"" + BASE_URI + "\" is invalid", e);
    9994                }
    100                 this.username = getParameter(config, USERNAME);
    101                 this.password = getParameter(config, PASSWORD);
     95                this.username = getConfigParameter(config, USERNAME);
     96                this.password = getConfigParameter(config, PASSWORD);
    10297               
    10398                this.factory = XMLInputFactory.newInstance();
     
    107102        }
    108103
    109         public PersistentIdentifier createPersistentIdentifier(VirtualCollection vc)
    110                         throws VirtualCollectionRegistryException {
     104        public PersistentIdentifier createIdentifier(VirtualCollection vc)
     105                        throws VirtualCollectionRegistryException {
     106                if (vc == null) {
     107                        throw new NullPointerException("vc == null");
     108                }
    111109                logger.debug("creating handle for virtual collection \"{}\"",
    112110                                vc.getUUID());
     
    129127                        logger.info("created handle \"{}\" for virtual collection \"{}\"",
    130128                                        pid, vc.getUUID());
    131                         return new GWDGPersistentIdentifier(vc, pid);
     129                        return doCreate(vc, PersistentIdentifier.Type.GWDG, pid);
    132130                } catch (VirtualCollectionRegistryException e) {
    133131                        throw new RuntimeException("failed to create handle", e);
     
    135133        }
    136134
    137         @SuppressWarnings("unused")
    138         private void update(String pid, URI target) throws VirtualCollectionRegistryException {
     135        public void updateIdentifier(String pid, URI target) throws VirtualCollectionRegistryException {
     136                if (pid == null) {
     137                        throw new NullPointerException("pid == null");
     138                }
     139                if (pid.isEmpty()) {
     140                        throw new IllegalArgumentException("pid is empty");
     141                }
     142                if (target == null) {
     143                        throw new NullPointerException("target == null");
     144                }
    139145                List<NameValuePair> params = new ArrayList<NameValuePair>();
    140146                params.add(new BasicNameValuePair("pid", pid));
     
    142148                URI serviceURI = URI.create(SERVICE_URI_BASE + "write/modify");
    143149                invokeWebService(serviceURI, params);
     150                logger.info("updated handle \"{}\"", pid);
     151        }
     152
     153        public void deleteIdentifier(String pid)
     154                        throws VirtualCollectionRegistryException {
     155                if (pid == null) {
     156                        throw new NullPointerException("pid == null");
     157                }
     158                if (pid.isEmpty()) {
     159                        throw new IllegalArgumentException("pid is empty");
     160                }
     161                /*
     162                 * actually one cannot delete a handle, but we can set an expired
     163                 * date to mark it invalid
     164                 */
     165                List<NameValuePair> params = new ArrayList<NameValuePair>();
     166                params.add(new BasicNameValuePair("pid", pid));
     167                params.add(new BasicNameValuePair("expdate", "1970-01-01"));
     168                URI serviceURI = URI.create(SERVICE_URI_BASE + "write/modify");
     169                invokeWebService(serviceURI, params);
     170                logger.info("deleted/expired handle \"{}\"", pid);
    144171        }
    145172
    146173        private String makeCollectionURI(VirtualCollection vc) {
    147174                return base_uri + "service/clarin-virtualcollection/" + vc.getUUID();
    148         }
    149 
    150         private static String getParameter(Map<String, String> config,
    151                         String parameter) throws VirtualCollectionRegistryException {
    152                 String value = config.get(parameter);
    153                 if (value == null) {
    154                         throw new VirtualCollectionRegistryException("configuration "
    155                                         + "parameter \"" + parameter + "\" is not set");
    156                 }
    157                 value = value.trim();
    158                 if (value.isEmpty()) {
    159                         throw new VirtualCollectionRegistryException("configuration "
    160                                         + "parameter \"" + parameter + "\" is invalid");
    161                 }
    162                 return value;
    163175        }
    164176
     
    182194                        // disable expect continue, GWDG does not like very well
    183195                        client.getParams()
    184                                 .setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, Boolean.FALSE);
     196                                .setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE,
     197                                                          Boolean.FALSE);
    185198                        // set a proper user agent
    186199                        client.getParams()
Note: See TracChangeset for help on using the changeset viewer.