Changeset 283
- Timestamp:
- 03/25/10 10:39:14 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistry.java
r278 r283 340 340 EntityManager em = datastore.getEntityManager(); 341 341 try { 342 em.getTransaction().begin(); 343 344 // fetch user 342 List<VirtualCollection> results = null; 343 long totalCount = 0; 344 345 em.getTransaction().begin(); 346 347 /* 348 * fetch user. if user is not found, he has not yet registered 349 * any virtual collections, so just return an empty list 350 */ 345 351 User user = fetchUser(em, principal); 346 if (user == null) { 347 throw new VirtualCollectionRegistryPermissionException("user " + 348 principal.getName() + " does not exist"); 349 } 350 351 // setup queries 352 TypedQuery<Long> cq = null; 353 TypedQuery<VirtualCollection> q = null; 354 if (query != null) { 355 ParsedQuery parsedQuery = ParsedQuery.parseQuery(em, query); 356 cq = parsedQuery.getCountQuery(user); 357 q = parsedQuery.getQuery(user); 358 } else { 359 cq = em.createNamedQuery("VirtualCollection.countByOwner", Long.class); 360 cq.setParameter("owner", user); 361 q = em.createNamedQuery("VirtualCollection.findByOwner", 362 VirtualCollection.class); 363 q.setParameter("owner", user); 364 } 365 366 // commence query ... 367 List<VirtualCollection> results = null; 368 long totalCount = cq.getSingleResult(); 369 370 // optimization; don't query, if we won't get any results 371 if (totalCount > 0) { 372 if (offset > 0) { 373 q.setFirstResult(offset); 352 if (user != null) { 353 // setup queries 354 TypedQuery<Long> cq = null; 355 TypedQuery<VirtualCollection> q = null; 356 if (query != null) { 357 ParsedQuery parsedQuery = ParsedQuery.parseQuery(em, query); 358 cq = parsedQuery.getCountQuery(user); 359 q = parsedQuery.getQuery(user); 360 } else { 361 cq = em.createNamedQuery("VirtualCollection.countByOwner", 362 Long.class); 363 cq.setParameter("owner", user); 364 q = em.createNamedQuery("VirtualCollection.findByOwner", 365 VirtualCollection.class); 366 q.setParameter("owner", user); 374 367 } 375 if (count > 0) { 376 q.setMaxResults(count); 368 369 // commence query ... 370 totalCount = cq.getSingleResult(); 371 372 // optimization; don't query, if we won't get any results 373 if (totalCount > 0) { 374 if (offset > 0) { 375 q.setFirstResult(offset); 376 } 377 if (count > 0) { 378 q.setMaxResults(count); 379 } 380 results = q.getResultList(); 377 381 } 378 results = q.getResultList();379 382 } 380 383 return new VirtualCollectionList(results, offset, (int) totalCount); … … 382 385 throw new VirtualCollectionRegistryUsageException( 383 386 "query invalid", e); 384 } catch (VirtualCollectionRegistryException e) {385 throw e;386 387 } catch (Exception e) { 387 388 logger.error("error while enumerating virtual collections", e);
Note: See TracChangeset
for help on using the changeset viewer.