Changeset 276


Ignore:
Timestamp:
03/23/10 13:27:50 (14 years ago)
Author:
oschonef
Message:
  • further work an GWDG handle integration
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry
Files:
2 added
2 deleted
4 edited
2 moved

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/README.txt

    r234 r276  
    2525  NOTE: currently only MySQL is supported.
    2626
    27   Furthermore, you will need to set the base URI for virtual collection
    28   registry (customize value as needed):
     27  You need to choose, which persistent identifier provider you want to use.
     28  You can either use a dummy provider or the GWDG handle provider.
     29  a) For using the dummy provider add the following:
     30  <Parameter name="pid_provider.class"
     31             value="eu.clarin.cmdi.virtualcollectionregistry.DummyPersistentIdentifierProvider"
     32             override="false"/>
     33
     34  b) For using the GWDG handle provider add following and customize the
     35     base URI for the virtual collection registry and the values for
     36     $gwdg_user and $gwdg_password:
     37  <Parameter name="pid_provider.class"
     38             value="eu.clarin.cmdi.virtualcollectionregistry.GWDGPersistentIdentifierProvider"
     39             override="false"/>
    2940  <Parameter name="pid_provider.base_uri"
    3041             value="http://127.0.0.1:8080/VirtualCollectionRegistry"
    3142             override="false"/>
     43  <Parameter name="pid_provider.username" value="$gwdg_user" override="false"/>
     44  <Parameter name="pid_provider.password" value="$gwdg_password" override="false"/>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/DummyPersistentIdentifierProvider.java

    r245 r276  
    1 package eu.clarin.cmdi.virtualcollectionregistry.model;
     1package eu.clarin.cmdi.virtualcollectionregistry;
    22
     3import java.net.URI;
    34import java.util.Map;
    45
    5 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
     6import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier;
     7import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider;
     8import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    69
    7 public class InternalPersistentIdentifierProvider extends
    8                 PersistentIdentifierProvider {
     10public class DummyPersistentIdentifierProvider extends PersistentIdentifierProvider {
    911
    10         public InternalPersistentIdentifierProvider(Map<String, String> config)
     12        public DummyPersistentIdentifierProvider(Map<String, String> config)
    1113                        throws VirtualCollectionRegistryException {
    1214                super(config);
    13                 String prefix = config.get(BASE_URI);
    14                 if (prefix == null) {
    15                         throw new VirtualCollectionRegistryException("configuration " +
    16                                               "parameter \"" + BASE_URI + "\" is not set");
    17                 }
    18                 try {
    19                         InternalPersistentIdentifier.initBaseURI(prefix);
    20                 } catch (Exception e) {
    21                         throw new VirtualCollectionRegistryException("configuration " +
    22                                               "paremeter \"" + BASE_URI + "\" is invalid", e);
    23                 }
    2415        }
    2516
    26         public PersistentIdentifier createPersistentIdentifier(VirtualCollection vc)
     17        public PersistentIdentifier createIdentifier(VirtualCollection vc)
    2718                        throws VirtualCollectionRegistryException {
    28                 return new InternalPersistentIdentifier(vc);
     19                return doCreate(vc, PersistentIdentifier.Type.DUMMY, vc.getUUID());
    2920        }
    3021
    31 } // class InternalPersistentIdentifierProvider
     22        public void updateIdentifier(String pid, URI target)
     23                        throws VirtualCollectionRegistryException {
     24        }
     25
     26        public void deleteIdentifier(String pid)
     27                        throws VirtualCollectionRegistryException {
     28        }
     29
     30} // class DummyPersistentIdentifierProvider
  • 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()
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistry.java

    r241 r276  
    1414import org.slf4j.LoggerFactory;
    1515
    16 import eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifierProvider;
    1716import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier;
    1817import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider;
     
    5453                        config = Collections.emptyMap();
    5554                }
     55                // XXX: the whole config / setup stuff is not very beautiful
    5656                this.datastore    = new DataStore(config);
    57                 this.pid_provider = new InternalPersistentIdentifierProvider(config);
     57                this.pid_provider = PersistentIdentifierProvider.createProvider(config);
    5858                this.marshaller   = new VirtualCollectionRegistryMarshaller();
    5959                this.intialized.set(true);
     
    115115                        em.getTransaction().commit();
    116116
    117                         PersistentIdentifier pid =
    118                                 pid_provider.createPersistentIdentifier(vc);
     117                        PersistentIdentifier pid = pid_provider.createIdentifier(vc);
    119118                        em.getTransaction().begin();
    120119                        em.persist(pid);
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/ClarinVirtualCollection.java

    r234 r276  
    11package eu.clarin.cmdi.virtualcollectionregistry.model;
    22
    3 import java.net.URI;
    43import java.util.ArrayList;
    54import java.util.Date;
     
    4847
    4948                @XmlElement(name = "MdSelfLink")
    50                 public URI getSelfLink() {
     49                public String getSelfLink() {
    5150                        return cvc.getVirtualCollection()
    5251                      .getPersistentIdentifier()
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/resources/META-INF/persistence.xml

    r234 r276  
    1313                <class>eu.clarin.cmdi.virtualcollectionregistry.model.Resource</class>
    1414                <class>eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier</class>
    15                 <class>eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifier</class>
    1615                <properties>
    1716                        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
Note: See TracChangeset for help on using the changeset viewer.