Changeset 234
- Timestamp:
- 03/16/10 17:41:09 (14 years ago)
- Location:
- VirtualCollectionRegistry/trunk/VirtualCollectionRegistry
- Files:
-
- 4 added
- 1 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/README.txt
r147 r234 2 2 ---------------------------------- 3 3 4 The connection to the database is configured using JNDI using 5 the name "jdbc/VirtualCollectionStore". 6 When using Apache Tomcat add the following to the Context of the Web-App 7 (either modifying "server.xml" or by providing the appropriate context.xml, 8 e.g. "$CATALINA_HOME/conf/Catalina/localhost/VirtualCollectionRegistry.xml"; 9 if in doubt, check the Apache Tomcat documentation): 4 The connection to the database is configured using JNDI using the 5 name "jdbc/VirtualCollectionStore". 6 When using Apache Tomcat add the following to the context configuration 7 of the web application (by either modifying "server.xml" or providing an 8 appropiate context configuration, e.g. like 9 "$CATALINA_HOME/conf/Catalina/localhost/VirtualCollectionRegistry.xml"; 10 if in doubt, please check the Apache Tomcat documentation): 10 11 11 12 <Resource name="jdbc/VirtualCollectionStore" auth="Container" … … 21 22 22 23 This will configure a DBCP data source for the virtual collection registry. 23 Customize $dbuser, $dbpass and $dbname to match your local set iings.24 Customize $dbuser, $dbpass and $dbname to match your local settings. 24 25 NOTE: currently only MySQL is supported. 26 27 Furthermore, you will need to set the base URI for virtual collection 28 registry (customize value as needed): 29 <Parameter name="pid_provider.base_uri" 30 value="http://127.0.0.1:8080/VirtualCollectionRegistry" 31 override="false"/> -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistry.java
r229 r234 13 13 import javax.persistence.TypedQuery; 14 14 15 import eu.clarin.cmdi.virtualcollectionregistry.model.Handle; 15 import eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifierProvider; 16 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier; 17 import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider; 16 18 import eu.clarin.cmdi.virtualcollectionregistry.model.User; 17 19 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; … … 28 30 private AtomicBoolean intialized = new AtomicBoolean(false); 29 31 private DataStore datastore = null; 32 private PersistentIdentifierProvider pid_provider = null; 30 33 private VirtualCollectionRegistryMarshaller marshaller = null; 31 34 32 35 private VirtualCollectionRegistry() { 33 36 super(); … … 45 48 } 46 49 logger.fine("initialize ..."); 47 if (config == null) { 50 if (config != null) { 51 config = Collections.unmodifiableMap(config); 52 } else { 48 53 config = Collections.emptyMap(); 49 54 } 50 for (String key : config.keySet()) { 51 logger.fine("XXX: " + key + " = \"" + config.get(key) + "\""); 52 } 53 datastore = new DataStore(config); 54 marshaller = new VirtualCollectionRegistryMarshaller(); 55 intialized.set(true); 55 this.datastore = new DataStore(config); 56 this.pid_provider = new InternalPersistentIdentifierProvider(config); 57 this.marshaller = new VirtualCollectionRegistryMarshaller(); 58 this.intialized.set(true); 56 59 } 57 60 … … 104 107 // store virtual collection 105 108 vc.setOwner(user); 106 String uuid =vc.createUUID();109 vc.createUUID(); 107 110 em.persist(vc); 108 111 em.getTransaction().commit(); 109 112 110 // XXX: for test PID service 111 em.getTransaction().begin(); 112 em.persist(new Handle(uuid, Handle.Type.COLLECTION, vc.getId())); 113 em.getTransaction().commit(); 113 PersistentIdentifier pid = 114 pid_provider.createPersistentIdentifier(vc); 115 em.getTransaction().begin(); 116 em.persist(pid); 117 em.getTransaction().commit(); 118 114 119 return vc.getId(); 115 120 } catch (Exception e) { -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/ClarinVirtualCollection.java
r229 r234 49 49 @XmlElement(name = "MdSelfLink") 50 50 public URI getSelfLink() { 51 // FIXME: wrong link 52 return cvc.createHandleURI(cvc.getVirtualCollection().getUUID()); 51 return cvc.getVirtualCollection() 52 .getPersistentIdentifier() 53 .createURI(); 53 54 } 54 55 … … 169 170 } 170 171 171 private URI handleBaseUri;172 172 private VirtualCollection vc; 173 173 private Header header; … … 180 180 } 181 181 182 public ClarinVirtualCollection(VirtualCollection vc , URI handleBaseUri) {182 public ClarinVirtualCollection(VirtualCollection vc) { 183 183 if (vc == null) { 184 184 throw new NullPointerException("vc == null"); 185 185 } 186 186 this.vc = vc; 187 this.handleBaseUri = handleBaseUri;188 187 this.header = new Header(this); 189 188 this.resources = new Resources(this); … … 191 190 } 192 191 193 URI createHandleURI(String pid) {194 return URI.create(handleBaseUri.toString() + "/" + pid);195 }196 197 192 VirtualCollection getVirtualCollection() { 198 193 return vc; -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/VirtualCollection.java
r229 r234 22 22 import javax.persistence.NamedQuery; 23 23 import javax.persistence.OneToMany; 24 import javax.persistence.OneToOne; 24 25 import javax.persistence.OrderBy; 25 26 import javax.persistence.Table; … … 93 94 updatable = false, length = 36) 94 95 private String uuid; 96 @OneToOne(fetch = FetchType.EAGER, orphanRemoval = true, optional = true, 97 mappedBy = "collection") 98 private PersistentIdentifier pid; 95 99 @Column(name = "name", nullable = false) 96 100 private String name; … … 149 153 @XmlAttribute(name = "uuid") 150 154 public String getUUID() { 151 return this.uuid; 155 return uuid; 156 } 157 158 public void setPersistentIdentifier(PersistentIdentifier pid) { 159 if (pid == null) { 160 throw new NullPointerException("pid == null"); 161 } 162 this.pid = pid; 163 } 164 165 public PersistentIdentifier getPersistentIdentifier() { 166 return pid; 152 167 } 153 168 -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionRegistryRestService.java
r228 r234 7 7 import java.security.Principal; 8 8 9 import javax.persistence.EntityManager;10 import javax.persistence.Query;11 9 import javax.ws.rs.Consumes; 12 10 import javax.ws.rs.DELETE; … … 32 30 import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryMarshaller.Format; 33 31 import eu.clarin.cmdi.virtualcollectionregistry.model.ClarinVirtualCollection; 34 import eu.clarin.cmdi.virtualcollectionregistry.model.Handle;35 32 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; 36 33 import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollectionList; … … 216 213 @PathParam("id") long id) throws VirtualCollectionRegistryException { 217 214 VirtualCollection vc = registry.retrieveVirtualCollection(id); 218 URI handleBaseUri = uriInfo.getBaseUriBuilder().path("handle").build(); 219 final ClarinVirtualCollection cvc = 220 new ClarinVirtualCollection(vc, handleBaseUri); 215 final ClarinVirtualCollection cvc = new ClarinVirtualCollection(vc); 221 216 StreamingOutput writer = new StreamingOutput() { 222 217 public void write(OutputStream output) throws IOException, … … 226 221 }; 227 222 return Response.ok(writer).build(); 228 }229 230 @GET231 @Path("/handle/{pid}")232 public Response getHandle(@PathParam("pid") String pid) {233 System.err.println("Pid: " + pid);234 EntityManager em = registry.getDataStore().getEntityManager();235 try {236 em.getTransaction().begin();237 Query q = em.createNamedQuery("Handle.findByPid");238 q.setParameter("pid", pid);239 Handle handle = (Handle) q.getSingleResult();240 System.err.println("handle: " + handle.getType());241 URI target;242 switch (handle.getType()) {243 case COLLECTION:244 target = uriInfo.getBaseUriBuilder().path(245 "clarin-virtualcollection/" + handle.getTarget()).build();246 break;247 case METADATA:248 target = uriInfo.getBaseUriBuilder().path(249 "clarin-metadata/" + handle.getTarget()).build();250 break;251 default:252 throw new VirtualCollectionRegistryException("internel error");253 } // switch254 return Response.seeOther(target).build();255 } catch (Exception e) {256 throw new WebApplicationException(e);257 } finally {258 em.getTransaction().commit();259 }260 223 } 261 224 -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/resources/META-INF/persistence.xml
r226 r234 12 12 <class>eu.clarin.cmdi.virtualcollectionregistry.model.Creator</class> 13 13 <class>eu.clarin.cmdi.virtualcollectionregistry.model.Resource</class> 14 <class>eu.clarin.cmdi.virtualcollectionregistry.model.Handle</class> 14 <class>eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier</class> 15 <class>eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifier</class> 15 16 <properties> 16 17 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
Note: See TracChangeset
for help on using the changeset viewer.