Changeset 276
- Timestamp:
- 03/23/10 13:27:50 (14 years ago)
- Location:
- VirtualCollectionRegistry/trunk/VirtualCollectionRegistry
- Files:
-
- 2 added
- 2 deleted
- 4 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/README.txt
r234 r276 25 25 NOTE: currently only MySQL is supported. 26 26 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"/> 29 40 <Parameter name="pid_provider.base_uri" 30 41 value="http://127.0.0.1:8080/VirtualCollectionRegistry" 31 42 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;1 package eu.clarin.cmdi.virtualcollectionregistry; 2 2 3 import java.net.URI; 3 4 import java.util.Map; 4 5 5 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException; 6 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier; 7 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider; 8 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; 6 9 7 public class InternalPersistentIdentifierProvider extends 8 PersistentIdentifierProvider { 10 public class DummyPersistentIdentifierProvider extends PersistentIdentifierProvider { 9 11 10 public InternalPersistentIdentifierProvider(Map<String, String> config)12 public DummyPersistentIdentifierProvider(Map<String, String> config) 11 13 throws VirtualCollectionRegistryException { 12 14 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 }24 15 } 25 16 26 public PersistentIdentifier create PersistentIdentifier(VirtualCollection vc)17 public PersistentIdentifier createIdentifier(VirtualCollection vc) 27 18 throws VirtualCollectionRegistryException { 28 return new InternalPersistentIdentifier(vc);19 return doCreate(vc, PersistentIdentifier.Type.DUMMY, vc.getUUID()); 29 20 } 30 21 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;1 package eu.clarin.cmdi.virtualcollectionregistry; 2 2 3 3 import java.net.URI; … … 30 30 import org.slf4j.LoggerFactory; 31 31 32 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException; 33 34 public class GWDGPersistentIdentifierProvider extends 35 PersistentIdentifierProvider { 32 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier; 33 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider; 34 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; 35 36 public class GWDGPersistentIdentifierProvider extends PersistentIdentifierProvider { 36 37 private static enum Attribute { 37 38 PID, URL, CREATOR, EXPDATE; … … 78 79 private XMLInputFactory factory; 79 80 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) 87 82 throws VirtualCollectionRegistryException { 88 83 super(config); 89 84 try { 90 String base_uri = get Parameter(config, BASE_URI);85 String base_uri = getConfigParameter(config, BASE_URI); 91 86 if (!base_uri.endsWith("/")) { 92 87 base_uri = base_uri + "/"; … … 98 93 "parameter \"" + BASE_URI + "\" is invalid", e); 99 94 } 100 this.username = get Parameter(config, USERNAME);101 this.password = get Parameter(config, PASSWORD);95 this.username = getConfigParameter(config, USERNAME); 96 this.password = getConfigParameter(config, PASSWORD); 102 97 103 98 this.factory = XMLInputFactory.newInstance(); … … 107 102 } 108 103 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 } 111 109 logger.debug("creating handle for virtual collection \"{}\"", 112 110 vc.getUUID()); … … 129 127 logger.info("created handle \"{}\" for virtual collection \"{}\"", 130 128 pid, vc.getUUID()); 131 return new GWDGPersistentIdentifier(vc, pid);129 return doCreate(vc, PersistentIdentifier.Type.GWDG, pid); 132 130 } catch (VirtualCollectionRegistryException e) { 133 131 throw new RuntimeException("failed to create handle", e); … … 135 133 } 136 134 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 } 139 145 List<NameValuePair> params = new ArrayList<NameValuePair>(); 140 146 params.add(new BasicNameValuePair("pid", pid)); … … 142 148 URI serviceURI = URI.create(SERVICE_URI_BASE + "write/modify"); 143 149 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); 144 171 } 145 172 146 173 private String makeCollectionURI(VirtualCollection vc) { 147 174 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;163 175 } 164 176 … … 182 194 // disable expect continue, GWDG does not like very well 183 195 client.getParams() 184 .setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, Boolean.FALSE); 196 .setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, 197 Boolean.FALSE); 185 198 // set a proper user agent 186 199 client.getParams() -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistry.java
r241 r276 14 14 import org.slf4j.LoggerFactory; 15 15 16 import eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifierProvider;17 16 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier; 18 17 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider; … … 54 53 config = Collections.emptyMap(); 55 54 } 55 // XXX: the whole config / setup stuff is not very beautiful 56 56 this.datastore = new DataStore(config); 57 this.pid_provider = new InternalPersistentIdentifierProvider(config);57 this.pid_provider = PersistentIdentifierProvider.createProvider(config); 58 58 this.marshaller = new VirtualCollectionRegistryMarshaller(); 59 59 this.intialized.set(true); … … 115 115 em.getTransaction().commit(); 116 116 117 PersistentIdentifier pid = 118 pid_provider.createPersistentIdentifier(vc); 117 PersistentIdentifier pid = pid_provider.createIdentifier(vc); 119 118 em.getTransaction().begin(); 120 119 em.persist(pid); -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/ClarinVirtualCollection.java
r234 r276 1 1 package eu.clarin.cmdi.virtualcollectionregistry.model; 2 2 3 import java.net.URI;4 3 import java.util.ArrayList; 5 4 import java.util.Date; … … 48 47 49 48 @XmlElement(name = "MdSelfLink") 50 public URIgetSelfLink() {49 public String getSelfLink() { 51 50 return cvc.getVirtualCollection() 52 51 .getPersistentIdentifier() -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/resources/META-INF/persistence.xml
r234 r276 13 13 <class>eu.clarin.cmdi.virtualcollectionregistry.model.Resource</class> 14 14 <class>eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier</class> 15 <class>eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifier</class>16 15 <properties> 17 16 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
Note: See TracChangeset
for help on using the changeset viewer.