⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catalogfacade.java

📁 仿照著名的petstore写的网上书店
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        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 + -