Changeset 235


Ignore:
Timestamp:
03/17/10 10:15:52 (14 years ago)
Author:
oschonef
Message:
  • enable fetching virtual collections im CMDI format also by uuid
  • fix error when no virtual collection was found
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry
Files:
4 edited

Legend:

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

    r215 r235  
    99        }
    1010
     11        public VirtualCollectionNotFoundException(String uuid) {
     12                super("virtual collection with UUID " + uuid + " was not found");
     13        }
     14
    1115} // class VirtualCollectionNotFoundException
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistry.java

    r234 r235  
    214214                                        new Long(id));
    215215                        em.getTransaction().commit();
    216                         if (vc == null) {
    217                                 throw new VirtualCollectionNotFoundException(id);
    218                         }
    219216                        return vc;
    220                 } catch (VirtualCollectionRegistryException e) {
    221                         throw e;
     217                } catch (NoResultException e) {
     218                        throw new VirtualCollectionNotFoundException(id);
     219                } catch (Exception e) {
     220                        logger.log(Level.SEVERE,
     221                                           "error while retrieving virtual collection", e);
     222                        throw new VirtualCollectionRegistryException(
     223                                        "error while retrieving virtual collection", e);
     224                }
     225        }
     226
     227        public VirtualCollection retrieveVirtualCollection(String uuid)
     228                        throws VirtualCollectionRegistryException {
     229                if (uuid == null) {
     230                        throw new NullPointerException("uuid == null");
     231                }
     232                uuid = uuid.trim();
     233                if (uuid.isEmpty()) {
     234                        throw new IllegalArgumentException("uuid is empty");
     235                }
     236
     237                try {
     238                        EntityManager em = datastore.getEntityManager();
     239                        em.getTransaction().begin();
     240                        TypedQuery<VirtualCollection> q =
     241                                em.createNamedQuery("VirtualCollection.byUUID",
     242                                                                        VirtualCollection.class);
     243                        q.setParameter("uuid", uuid);
     244                        VirtualCollection vc = q.getSingleResult();
     245                        em.getTransaction().commit();
     246                        return vc;
     247                } catch (NoResultException e) {
     248                        throw new VirtualCollectionNotFoundException(uuid);
    222249                } catch (Exception e) {
    223250                        logger.log(Level.SEVERE,
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/VirtualCollection.java

    r234 r235  
    4646@Table(name = "virtual_collection")
    4747@NamedQueries({
     48        @NamedQuery(name = "VirtualCollection.byUUID",
     49                                query = "SELECT c FROM VirtualCollection c " +
     50                                            "WHERE c.uuid = :uuid"),
    4851        @NamedQuery(name = "VirtualCollection.findAll",
    4952                                query = "SELECT c FROM VirtualCollection c"),
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionRegistryRestService.java

    r234 r235  
    66import java.net.URI;
    77import java.security.Principal;
     8import java.util.UUID;
    89
    910import javax.ws.rs.Consumes;
     
    210211        @Path("/clarin-virtualcollection/{id}")
    211212        @Produces({ MediaType.TEXT_XML, MediaType.APPLICATION_XML })
    212         public Response getClarinVirtualCollection(
    213                         @PathParam("id") long id) throws VirtualCollectionRegistryException {
    214                 VirtualCollection vc = registry.retrieveVirtualCollection(id);
     213        public Response getClarinVirtualCollection(@PathParam("id") String id)
     214                        throws VirtualCollectionRegistryException {
     215                if (id == null) {
     216                        /*
     217                         * null indicated client error, so use IllegalArgumentException
     218             * here, so we will signal bad request error to client
     219                         */
     220                        throw new IllegalArgumentException("id path argument is missing");
     221                }
     222                VirtualCollection vc = null;
     223                try {
     224                        UUID vc_id = UUID.fromString(id.trim());
     225                        vc = registry.retrieveVirtualCollection(vc_id.toString());
     226                } catch (IllegalArgumentException e) {
     227                        try {
     228                                long vc_id = Long.parseLong(id);
     229                                vc = registry.retrieveVirtualCollection(vc_id);
     230                        } catch (NumberFormatException e1) {
     231                                throw new IllegalArgumentException("invalid id: " +
     232                                                "not nor a number or a uuid");
     233                        }
     234                }
     235
     236                // sanity check
     237                if (vc == null) {
     238                        throw new AssertionError("vc == null");
     239                }
     240
    215241                final ClarinVirtualCollection cvc = new ClarinVirtualCollection(vc);
    216242                StreamingOutput writer = new StreamingOutput() {
Note: See TracChangeset for help on using the changeset viewer.