Changeset 189


Ignore:
Timestamp:
02/16/10 19:38:16 (14 years ago)
Author:
oschonef
Message:
  • try to running queries, if result set will be empty
Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry
Files:
2 edited

Legend:

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

    r188 r189  
    267267                try {
    268268                        em.getTransaction().begin();
     269
     270                        List<VirtualCollection> results = null;
    269271                        // FIXME: use TypedQuery variant when migrating to JPA 2.0
    270                         long totalCount =
    271                                 (Long) em.createNamedQuery("VirtualCollection.countAll")
    272                                                         .getSingleResult();
    273                         Query q = em.createNamedQuery("VirtualCollection.findAll");
    274                         if (offset > 0) {
    275                                 q.setFirstResult(offset);
    276                         }
    277                         if (count > 0) {
    278                                 q.setMaxResults(count);
    279                         }
    280                         List<VirtualCollection> results =
    281                                 (List<VirtualCollection>) q.getResultList();
     272                        Query cq = em.createNamedQuery("VirtualCollection.countAll");
     273                        long totalCount = (Long) cq.getSingleResult();
     274
     275                        // optimization; don't query, if we won't get any results
     276                        if ( totalCount > 0) {
     277                                // FIXME: use TypedQuery variant when migrating to JPA 2.0
     278                                Query q  = em.createNamedQuery("VirtualCollection.findAll");
     279
     280                                if (offset > 0) {
     281                                        q.setFirstResult(offset);
     282                                }
     283                                if (count > 0) {
     284                                        q.setMaxResults(count);
     285                                }
     286                                results = (List<VirtualCollection>) q.getResultList();
     287                        }
    282288                        return new VirtualCollectionList(results, offset, (int) totalCount);
    283289                } catch (Exception e) {
     
    298304                try {
    299305                        em.getTransaction().begin();
     306
    300307                        User user = fetchUser(em, principal);
    301308                        if (user == null) {
    302309                                throw new VirtualCollectionRegistryException("user does not exist");
    303310                        }
     311                        List<VirtualCollection> results = null;
    304312
    305313                        // FIXME: use TypedQuery variant when migrating to JPA 2.0
    306                         long totalCount =
    307                                 (Long) em.createNamedQuery("VirtualCollection.countByOwner")
    308                                         .setParameter("owner", user)
    309                                         .getSingleResult();
    310                         Query q = em.createNamedQuery("VirtualCollection.findByOwner");
    311                         q.setParameter("owner", user);
    312                         if (offset > 0) {
    313                                 q.setFirstResult(offset);
    314                         }
    315                         if (count > 0) {
    316                                 q.setMaxResults(count);
    317                         }
    318                         List<VirtualCollection> results =
    319                                 (List<VirtualCollection>) q.getResultList();
     314                        Query cq = em.createNamedQuery("VirtualCollection.countByOwner");
     315                        cq.setParameter("owner", user);
     316                        long totalCount = (Long) cq.getSingleResult();
     317
     318                        // optimization; don't query, if we won't get any results
     319                        if (totalCount > 0) {
     320                                // FIXME: use TypedQuery variant when migrating to JPA 2.0
     321                                Query q  = em.createNamedQuery("VirtualCollection.findByOwner");
     322                                q.setParameter("owner", user);
     323                       
     324                                if (offset > 0) {
     325                                        q.setFirstResult(offset);
     326                                }
     327                                if (count > 0) {
     328                                        q.setMaxResults(count);
     329                                }
     330                                results = (List<VirtualCollection>) q.getResultList();
     331                        }
    320332                        return new VirtualCollectionList(results, offset, (int) totalCount);
    321333                } catch (VirtualCollectionRegistryException e) {
     
    328340                }
    329341        }
    330        
     342
    331343        private static User fetchUser(EntityManager em, Principal principal) {
    332344                User user = null;
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/model/VirtualCollectionList.java

    r188 r189  
    11package eu.clarin.cmdi.virtualcollectionregistry.model;
    22
     3import java.util.Collections;
    34import java.util.Iterator;
    45import java.util.List;
     
    1112        public VirtualCollectionList(List<VirtualCollection> list, int offset,
    1213                        int totalCount) {
    13                 this.collections = list;
     14                if (list != null) {
     15                        this.collections = list;
     16                } else {
     17                        this.collections = Collections.emptyList();
     18                }
    1419                this.offset      = offset;
    1520                this.totalCount  = totalCount;
Note: See TracChangeset for help on using the changeset viewer.