📄 productcategory.java
字号:
package com.bluesky.elecall.domain;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.bluesky.common.dao.ICommonDao;
import com.bluesky.elecall.dao.IManufactoryDao;
import com.bluesky.elecall.dao.IProductCategoryDao;
import com.bluesky.elecall.dao.IProductDao;
import com.bluesky.elecall.domain.search.AttributeStatistics;
import com.bluesky.elecall.domain.search.CategoryStatisticsItem;
import com.bluesky.elecall.domain.search.StatisticsItem;
public class ProductCategory implements IProductCategory {
private Log log = LogFactory.getLog(this.getClass());
private List products;
private IProductCategoryDao productCategoryDao;
private IProductDao productDao;
private IManufactoryDao manufactoryDao;
private ICommonDao commonDao;
public IManufactoryDao getManufactoryDao() {
return manufactoryDao;
}
public void setManufactoryDao(IManufactoryDao manufactoryDao) {
this.manufactoryDao = manufactoryDao;
}
public IProductDao getProductDao() {
return productDao;
}
public void setProductDao(IProductDao productDao) {
this.productDao = productDao;
}
public ICommonDao getCommonDao() {
return commonDao;
}
public void setCommonDao(ICommonDao commonDao) {
this.commonDao = commonDao;
}
public ProductCategory() {
}
public CategoryItem getRootCategoryItem() {
List rslt = productCategoryDao.getItemByLevel(0);
if (rslt.size() == 1)
return (CategoryItem) rslt.get(0);
else if (rslt.size() == 0)
return null;
else
throw new RuntimeException("too many item are level 0");
}
public IProductCategoryDao getProductCategoryDao() {
return productCategoryDao;
}
public void setProductCategoryDao(IProductCategoryDao productCategoryDao) {
this.productCategoryDao = productCategoryDao;
}
public Set<CategoryItem> getChildrenCategoryItems(CategoryItem item) {
CategoryItem item2 = (CategoryItem) productCategoryDao
.getCategoryItem(item.getId());
Set children = item2.getChildren();
// load
navigateCategory(item2, 1);
return children;
}
private void navigateCategory(CategoryItem item, int levelDepth) {
if (levelDepth == 0)
return;
if (levelDepth > 0) {
Set children = item.getChildren();
Iterator it = children.iterator();
while (it.hasNext()) {
CategoryItem child = ((CategoryItem) it.next());
child.getName();
if (levelDepth > 1)
navigateCategory(child, levelDepth - 1);
}
}
}
public void save(CategoryItem item) {
// somehow TransientInstanceException thrown
// re-load the parent
if (item.getParent() != null) {
CategoryItem parent = getCategoryItem(item.getParent().getId());
item.setParent(parent);
}
productCategoryDao.save(item);
}
public CategoryItem getCategoryItem(long id) {
return productCategoryDao.getCategoryItem(id);
}
public CategoryItem getCategoryItem(long id, int levelDepth) {
CategoryItem item = productCategoryDao.getCategoryItem(id);
if (item != null)
navigateCategory(item, levelDepth);
return item;
}
public CategoryItem getParentCategoryItem(CategoryItem item) {
CategoryItem it = getCategoryItem(item.getId());
CategoryItem p = it.getParent();
// load
p.getName();
return p;
}
public void deleteProduct(String id) {
productDao.delete(id);
}
public Set getProducts(CategoryItem item) {
CategoryItem ci = getCategoryItem(item.getId());
Set products = ci.getProducts();
// load
Iterator it = products.iterator();
while (it.hasNext())
((Product) it.next()).getName();
return products;
}
public void save(Product product) {
// assign id
log.debug("manufactory.id="+product.getManufactory().getId());
Manufactory m = manufactoryDao.get(product.getManufactory().getId());
long seq = m.increaseCurrentProductSequence();
manufactoryDao.update(m);
product.setManufactory(m);
String productId = String.format("%d-%d", m.getId(), seq);
product.setId(productId);
productDao.save(product);
}
public void update(Product product) {
// delete all attributes
// Product entity = productDao.get(product.getId());
// entity.getAttributes().clear();
// productDao.update(entity);
productDao.update(product);
}
public Product merge(Product product) {
return productDao.merge(product);
}
public Product getProduct(String id) {
Product p = productCategoryDao.getProduct(id);
//load
if(p!=null)
p.getName();
return p;
}
public CategoryItem getRootCategoryItem(int levelDepth) {
CategoryItem root = getRootCategoryItem();
navigateCategory(root, levelDepth);
return root;
}
public AttributeStatistics getAttributeStatistics(CategoryItem subsection,
CategoryItem family, Manufactory manufactory, Map productAttributes, String keywords) {
List list = productCategoryDao.getAttributeStatistics(subsection,
family, manufactory, productAttributes, keywords);
AttributeStatistics as = new AttributeStatistics();
for (int i = 0; i < list.size(); i++) {
Object[] row = (Object[]) list.get(i);
String name = (String) row[0];
String value = (String) row[1];
long count = Long.parseLong(row[2].toString());
StatisticsItem si = new StatisticsItem(null, value, count);
as.put(name, si);
}
return as;
}
public List findProductByFamily(CategoryItem family) {
return commonDao.getHibTemplate().find("from Product p where p.family=?",family);
}
public List<Product> findProduct(CategoryItem subsection,
CategoryItem family, Manufactory manufactory,
Map productAttributes, String keywords) {
return productCategoryDao.findProduct(subsection, family, manufactory,
productAttributes,keywords);
}
public List<StatisticsItem> getFamilyStatistics(CategoryItem subsection,
CategoryItem family, Manufactory manufactory,
Map productAttributes, String keywords) {
List daoResult = productCategoryDao.getFamilyStatistics(subsection,
family, manufactory, productAttributes,keywords);
List items = new ArrayList();
for (int i = 0; i < daoResult.size(); i++) {
Object[] row = (Object[]) daoResult.get(i);
String id = row[0].toString();
String name = (String) row[1];
long count = Long.parseLong(row[2].toString());
StatisticsItem si = new StatisticsItem(id, name, count);
items.add(si);
}
return items;
}
public List<StatisticsItem> getManufactoryStatistics(
CategoryItem subsection, CategoryItem family,
Manufactory manufactory, Map productAttributes, String keywords) {
List daoResult = productCategoryDao.getManufactoryStatistics(
subsection, family, manufactory, productAttributes,keywords);
List items = new ArrayList();
for (int i = 0; i < daoResult.size(); i++) {
Object[] row = (Object[]) daoResult.get(i);
String id = row[0].toString();
String name = (String) row[1];
long count = Long.parseLong(row[2].toString());
StatisticsItem si = new StatisticsItem(id, name, count);
items.add(si);
}
return items;
}
public ProductAttribute getProductAttribute(String id) {
return productDao.getProductAttribute(id);
}
public CategoryStatisticsItem getCategoryStatistics(
CategoryItem level2CategoryItem) {
List daoResult = productCategoryDao.getCategoryStatistics(level2CategoryItem);
CategoryStatisticsItem rslt = new CategoryStatisticsItem();
for (int i = 0; i < daoResult.size(); i++) {
Object[] row = (Object[]) daoResult.get(i);
String level3Id = row[0].toString();
String level3Name = (String) row[1];
String level4Id = row[2].toString();
String level4Name = (String) row[3];
long count = Long.parseLong(row[4].toString());
rslt.addGrandchild(level3Id, level3Name, level4Id, level4Name, count);
}
return rslt;
}
public List<CategoryItem> getCategoryItemByLevel(int level) {
return productCategoryDao.getItemByLevel(level);
}
public CategoryStatisticsItem getCategoryStatistics(CategoryItem level3CategoryItem, String keyWords) {
List daoResult = productCategoryDao.getCategoryStatistics(level3CategoryItem,keyWords);
CategoryStatisticsItem rslt = new CategoryStatisticsItem();
for (int i = 0; i < daoResult.size(); i++) {
Object[] row = (Object[]) daoResult.get(i);
String id1 = row[0].toString();
String name1 = (String) row[1];
String id2 = row[2].toString();
String name2 = (String) row[3];
long count = Long.parseLong(row[4].toString());
rslt.addGrandchild(id1, name1, id2, name2, count);
}
return rslt;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -