Changeset 234


Ignore:
Timestamp:
03/16/10 17:41:09 (14 years ago)
Author:
oschonef
Message:
  • prepare for integration with GWDG handle service
  • add internal PID provider for test deployment
  • remove old preliminary toy handle service
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry
Files:
4 added
1 deleted
6 edited

Legend:

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

    r147 r234  
    22----------------------------------
    33
    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):
     4The connection to the database is configured using JNDI using the
     5name "jdbc/VirtualCollectionStore".
     6When using Apache Tomcat add the following to the context configuration
     7of the web application (by either modifying "server.xml" or providing an
     8appropiate context configuration, e.g. like
     9  "$CATALINA_HOME/conf/Catalina/localhost/VirtualCollectionRegistry.xml";
     10if in doubt, please check the Apache Tomcat documentation):
    1011
    1112  <Resource name="jdbc/VirtualCollectionStore" auth="Container"
     
    2122
    2223  This will configure a DBCP data source for the virtual collection registry.
    23   Customize $dbuser, $dbpass and $dbname to match your local setiings.
     24  Customize $dbuser, $dbpass and $dbname to match your local settings.
    2425  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  
    1313import javax.persistence.TypedQuery;
    1414
    15 import eu.clarin.cmdi.virtualcollectionregistry.model.Handle;
     15import eu.clarin.cmdi.virtualcollectionregistry.model.InternalPersistentIdentifierProvider;
     16import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifier;
     17import eu.clarin.cmdi.virtualcollectionregistry.model.PersistentIdentifierProvider;
    1618import eu.clarin.cmdi.virtualcollectionregistry.model.User;
    1719import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     
    2830        private AtomicBoolean intialized = new AtomicBoolean(false);
    2931        private DataStore datastore = null;
     32        private PersistentIdentifierProvider pid_provider = null;
    3033        private VirtualCollectionRegistryMarshaller marshaller = null;
    31        
     34
    3235        private VirtualCollectionRegistry() {
    3336                super();
     
    4548                }
    4649                logger.fine("initialize ...");
    47                 if (config == null) {
     50                if (config != null) {
     51                        config = Collections.unmodifiableMap(config);
     52                } else {
    4853                        config = Collections.emptyMap();
    4954                }
    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);
    5659        }
    5760
     
    104107                        // store virtual collection
    105108                        vc.setOwner(user);
    106                         String uuid = vc.createUUID();
     109                        vc.createUUID();
    107110                        em.persist(vc);                 
    108111                        em.getTransaction().commit();
    109112
    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
    114119                        return vc.getId();
    115120                } catch (Exception e) {
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/ClarinVirtualCollection.java

    r229 r234  
    4949                @XmlElement(name = "MdSelfLink")
    5050                public URI getSelfLink() {
    51                         // FIXME: wrong link
    52                         return cvc.createHandleURI(cvc.getVirtualCollection().getUUID());
     51                        return cvc.getVirtualCollection()
     52                      .getPersistentIdentifier()
     53                      .createURI();
    5354                }
    5455
     
    169170        }
    170171
    171         private URI handleBaseUri;
    172172        private VirtualCollection vc;
    173173        private Header header;
     
    180180        }
    181181
    182         public ClarinVirtualCollection(VirtualCollection vc, URI handleBaseUri) {
     182        public ClarinVirtualCollection(VirtualCollection vc) {
    183183                if (vc == null) {
    184184                        throw new NullPointerException("vc == null");
    185185                }
    186186                this.vc = vc;
    187                 this.handleBaseUri = handleBaseUri;
    188187                this.header = new Header(this);
    189188                this.resources = new Resources(this);
     
    191190        }
    192191
    193         URI createHandleURI(String pid) {
    194                 return URI.create(handleBaseUri.toString() + "/" + pid);
    195         }
    196 
    197192        VirtualCollection getVirtualCollection() {
    198193                return vc;
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/VirtualCollection.java

    r229 r234  
    2222import javax.persistence.NamedQuery;
    2323import javax.persistence.OneToMany;
     24import javax.persistence.OneToOne;
    2425import javax.persistence.OrderBy;
    2526import javax.persistence.Table;
     
    9394                           updatable = false, length = 36)
    9495        private String uuid;
     96        @OneToOne(fetch = FetchType.EAGER, orphanRemoval = true, optional = true,
     97                          mappedBy = "collection")
     98        private PersistentIdentifier pid;
    9599        @Column(name = "name", nullable = false)
    96100        private String name;
     
    149153        @XmlAttribute(name = "uuid")
    150154        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;
    152167        }
    153168
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionRegistryRestService.java

    r228 r234  
    77import java.security.Principal;
    88
    9 import javax.persistence.EntityManager;
    10 import javax.persistence.Query;
    119import javax.ws.rs.Consumes;
    1210import javax.ws.rs.DELETE;
     
    3230import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryMarshaller.Format;
    3331import eu.clarin.cmdi.virtualcollectionregistry.model.ClarinVirtualCollection;
    34 import eu.clarin.cmdi.virtualcollectionregistry.model.Handle;
    3532import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
    3633import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollectionList;
     
    216213                        @PathParam("id") long id) throws VirtualCollectionRegistryException {
    217214                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);
    221216                StreamingOutput writer = new StreamingOutput() {
    222217                        public void write(OutputStream output) throws IOException,
     
    226221                };
    227222                return Response.ok(writer).build();
    228         }
    229 
    230         @GET
    231         @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                         } // switch
    254                         return Response.seeOther(target).build();
    255                 } catch (Exception e) {
    256                         throw new WebApplicationException(e);
    257                 } finally {
    258                         em.getTransaction().commit();
    259                 }
    260223        }
    261224
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/resources/META-INF/persistence.xml

    r226 r234  
    1212                <class>eu.clarin.cmdi.virtualcollectionregistry.model.Creator</class>
    1313                <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>
    1516                <properties>
    1617                        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
Note: See TracChangeset for help on using the changeset viewer.