📄 catalogfacade.java
字号:
return items; } /** * Gets a list of all the zipcode/city/state for autocomplete on user forms * Need to enhance so that returned list is cached for reuse at application scope * and held as member field of facade. * @returns a List of ZipLocation objects */ @SuppressWarnings("unchecked") public List<ZipLocation> getZipCodeLocations(String city, int start, int chunkSize){ EntityManager em = emf.createEntityManager(); String pattern = "'"+city.toUpperCase()+"%'"; Query query = em.createQuery("SELECT z FROM ZipLocation z where UPPER(z.city) LIKE "+pattern); List<ZipLocation> zipCodeLocations = query.setFirstResult(start).setMaxResults(chunkSize).getResultList(); em.close(); return zipCodeLocations; } @SuppressWarnings("unchecked") public List<Product> getProducts(String catID){ EntityManager em = emf.createEntityManager(); List<Product> products = em.createQuery("SELECT p FROM Product p WHERE p.categoryID LIKE :categoryID") .setParameter("categoryID", catID).getResultList(); em.close(); return products; } @SuppressWarnings("unchecked") public List<Item> getItems(String prodID){ EntityManager em = emf.createEntityManager(); List<Item> items = em.createQuery("SELECT i FROM Item i WHERE i.productID LIKE :productID AND i.disabled = 0") .setParameter("productID", prodID).getResultList(); em.close(); return items; } public Category getCategory(String categoryID){ EntityManager em = emf.createEntityManager(); Category result = em.find(Category.class,categoryID); em.close(); return result; } public Item getItem(String itemID){ EntityManager em = emf.createEntityManager(); Item result = em.find(Item.class,itemID); em.close(); return result; } /** * Method to add an item with tags that are added using the addTag method * */ public String addItem(Item item){ EntityManager em = emf.createEntityManager(); try{ utx.begin(); em.joinTransaction(); for(Tag tag : item.getTags()) { tag.incrementRefCount(); tag.getItems().add(item); em.merge(tag); } em.persist(item); utx.commit(); // index item if(bDebug) System.out.println("\n***Item id of new item is : " + item.getItemID()); indexItem(new IndexDocument(item)); } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error persisting item", exe); } finally { em.close(); } return item.getItemID(); } public void updateItem(Item item){ EntityManager em = emf.createEntityManager(); try{ utx.begin(); em.merge(item); utx.commit(); // update index using delete/insert method (only one available) UpdateIndex.deleteIndex(PetstoreConstants.PETSTORE_INDEX_DIRECTORY, item.getItemID()); indexItem(new IndexDocument(item)); } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error updating rating", exe); } finally { em.close(); } } public Collection doSearch(String querryString){ EntityManager em = emf.createEntityManager(); Query searchQuery = em.createNativeQuery("SELECT * FROM Item WHERE (name LIKE ? OR description LIKE ?) AND disabled = 0" ); searchQuery.setParameter(1, "%"+querryString+"%"); searchQuery.setParameter(2,"%"+querryString+"%"); Collection results = searchQuery.getResultList(); em.close(); return results; } public void addTagsToItemId(String sxTags, String itemId) { EntityManager em = emf.createEntityManager(); // now parse tags for item Item item=getItem(itemId); StringTokenizer stTags=new StringTokenizer(sxTags, " "); String tagx=null; Tag tag=null; while(stTags.hasMoreTokens()) { tagx=stTags.nextToken().toLowerCase(); if(!item.containsTag(tagx)) { // tag doesn't exist so add tag if(bDebug) System.out.println("Adding TAG = " + tagx); tag=addTag(tagx); //tag.incrementRefCount(); tag.getItems().add(item); tag.incrementRefCount(); item.getTags().add(tag); } } try { // persist data utx.begin(); em.joinTransaction(); em.merge(item); for( Tag tagz : item.getTags()) { if(bDebug) System.out.println("\n***Merging tag = " + tagz.getTag()); em.merge(tagz); } utx.commit(); // update indexes UpdateIndex update=new UpdateIndex(); update.updateDocTag(PetstoreConstants.PETSTORE_INDEX_DIRECTORY, "tag" , item.tagsAsString(), item.getItemID(), UpdateIndex.REPLACE_FIELD); } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error persisting tag", exe); } finally { em.close(); } } @SuppressWarnings("unchecked") public Tag addTag(String sxTag){ EntityManager em = emf.createEntityManager(); Tag tag=null; try { List<Tag> tags=em.createQuery("SELECT t FROM Tag t WHERE t.tag = :tag").setParameter("tag", sxTag).getResultList(); if(tags.isEmpty()) { // need to create tag and set flag to add reference item tag=new Tag(sxTag); // persist data utx.begin(); em.joinTransaction(); em.persist(tag); utx.commit(); } else { // see if item already exists in tag tag=tags.get(0); } } catch(Exception exe){ try { utx.rollback(); } catch (Exception e) {} throw new RuntimeException("Error persisting tag", exe); } finally { em.close(); } return tag; } @SuppressWarnings("unchecked") public List<Tag> getTagsInChunk(int start, int chunkSize) { EntityManager em = emf.createEntityManager(); Query query = em.createQuery("SELECT t FROM Tag t ORDER BY t.refCount DESC, t.tag"); List<Tag> tags = query.setFirstResult(start).setMaxResults(chunkSize).getResultList(); em.close(); return tags; } @SuppressWarnings("unchecked") public Tag getTag(String sxTag) { Tag tag=null; EntityManager em = emf.createEntityManager(); List<Tag> tags=em.createQuery("SELECT t FROM Tag t WHERE t.tag = :tag").setParameter("tag", sxTag).getResultList(); em.close(); if(tags != null && !tags.isEmpty()) { tag=tags.get(0); } return tag; } private void indexItem(IndexDocument indexDoc) { // Add document to index if(bDebug) System.out.println("\n*** document to index - " + indexDoc); Indexer indexer=null; try { indexer=new Indexer(PetstoreConstants.PETSTORE_INDEX_DIRECTORY, false); PetstoreUtil.getLogger().log(Level.FINE, "Adding document to index: " + indexDoc.toString()); indexer.addDocument(indexDoc); } catch (Exception e) { PetstoreUtil.getLogger().log(Level.WARNING, "index.exception", e); e.printStackTrace(); } finally { try { // must close file or will not be able to reindex if(indexer != null) { indexer.close(); } } catch (Exception ee) { ee.printStackTrace(); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -