📄 categoryeditaction.java
字号:
package com.bluesky.elecall.web.struts.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.bluesky.elecall.domain.CategoryItem;
import com.bluesky.elecall.domain.DiscountPolicy;
import com.bluesky.elecall.domain.Product;
import com.bluesky.elecall.domain.ProductAttribute;
public class CategoryEditAction extends BaseAction {
/**
*
*/
private static final long serialVersionUID = -905631074830993753L;
// form submitted
private int level;
private String submitAction;
private CategoryItem[] selectedItems = new CategoryItem[10];
private List attributes;
private List discountPolicies;
private File productImage;
private String productImageContentType;
private String productImageFileName;
private List manufactories;
// product
Product product;
// actually use 1 to 5
private List levels = new ArrayList(10);
private Set products;
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public Set getProducts() {
return products;
}
public void setProducts(Set products) {
this.products = products;
}
public List getManufactories() {
return manufactories;
}
public void setManufactories(List manufactories) {
this.manufactories = manufactories;
}
public List getAttributes() {
return attributes;
}
public void setAttributes(List attributes) {
this.attributes = attributes;
}
public File getProductImage() {
return productImage;
}
public String getProductImageContentType() {
return productImageContentType;
}
public void setProductImageContentType(String productImageContentType) {
this.productImageContentType = productImageContentType;
}
public String getProductImageFileName() {
return productImageFileName;
}
public void setProductImageFileName(String productImageFileName) {
this.productImageFileName = productImageFileName;
}
public void setProductImage(File productImage) {
this.productImage = productImage;
}
public CategoryEditAction() {
// somehow fill the list, then set by index
levels.add(new ArrayList());
levels.add(new ArrayList());
levels.add(new ArrayList());
levels.add(new ArrayList());
levels.add(new ArrayList());
levels.add(new ArrayList());
levels.add(new ArrayList());
selectedItems[0] = new CategoryItem();
selectedItems[1] = new CategoryItem();
selectedItems[2] = new CategoryItem();
selectedItems[3] = new CategoryItem();
selectedItems[4] = new CategoryItem();
selectedItems[5] = new CategoryItem();
product = new Product();
attributes = new ArrayList();
for (int i = 0; i < 20; i++) {
attributes.add(new ProductAttribute());
}
discountPolicies = new ArrayList();
for (int i = 0; i < 10; i++) {
discountPolicies.add(new DiscountPolicy());
}
products = new HashSet();
}
@Override
public String execute() throws Exception {
// load the root item
selectedItems[0] = productCategory.getRootCategoryItem();
if (submitAction == null) {
// HTTP GET
// the root(level 0) is selected
// set current level to 1.
} else if (submitAction.equals("selectChanged")) {
// prepare level list
// load domain object and update form object
CategoryItem cur_item = productCategory.getCategoryItem(selectedItems[level]
.getId());
// empty option is selected, equals the parent is selected
if (cur_item == null)
level--;
// coz the category changed, no product is selected.
product.setId("-1");
} else if (submitAction.equals("add")) {
CategoryItem parent = productCategory.getCategoryItem(selectedItems[level - 1]
.getId());
CategoryItem newItem = selectedItems[level];
newItem.setName(newItem.getName().trim());
newItem.setParent(parent);
newItem.setLevel(parent.getLevel() + 1);
productCategory.save(newItem);
} else if (submitAction.equals("delete")) {
Set children = productCategory.getChildrenCategoryItems(selectedItems[level]);
if (children != null && children.size() > 0)
addActionError("该目录不为空,所以不能删除。");
else
productCategoryDao.deleteCategoryItem(selectedItems[level].getId());
} else if (submitAction.equals("update")) {
CategoryItem selectedItem = productCategory.getCategoryItem(selectedItems[level]
.getId());
selectedItem.setName(selectedItems[level].getName().trim());
productCategoryDao.update(selectedItem);
} else if (submitAction.equals("add_product")) {
if (selectedItems[4].getId() > 0) {
product.setCategoryItem(selectedItems[4]);
if (product.getFamily().getId() < 0)
product.setFamily(null);
product.getAttributes().clear();
Iterator it = attributes.iterator();
while (it.hasNext()) {
ProductAttribute pa = (ProductAttribute) it.next();
if (pa.validate())
product.addAttribute(pa);
}
product.getDiscountPolicies().clear();
Iterator it2 = discountPolicies.iterator();
while (it.hasNext()) {
DiscountPolicy dp = (DiscountPolicy) it2.next();
if(dp.getBaseQuantity()>1)
product.getDiscountPolicies().put(dp.getBaseQuantity(), dp.getUnitPrice());
}
//save image to db
if(productImage!=null){
InputStream is = new FileInputStream(productImage);
byte[] buffer = new byte[1023*1024*10];
int len = is.read(buffer);
is.close();
byte[] data = new byte[len];
for(int i=0;i<len;i++)
data[i] = buffer[i];
com.bluesky.system.File file = new com.bluesky.system.File();
file.setContentType(productImageContentType);
file.setData(data);
reposity.save(file);
product.setImageFileId(file.getId());
}
productCategory.save(product);
}
} else if (submitAction.equals("update_product")) {
if (selectedItems[4].getId() > 0) {
// category belongs to
product.setCategoryItem(selectedItems[4]);
// family could be null
if (product.getFamily().getId() < 0)
product.setFamily(null);
product.getAttributes().clear();
Iterator it = attributes.iterator();
while (it.hasNext()) {
ProductAttribute pa = (ProductAttribute) it.next();
if (pa.validate())
product.addAttribute(pa);
}
product.getDiscountPolicies().clear();
Iterator it2 = discountPolicies.iterator();
while (it2.hasNext()) {
DiscountPolicy dp = (DiscountPolicy) it2.next();
if(dp.getBaseQuantity()>1)
product.getDiscountPolicies().put(dp.getBaseQuantity(), dp.getUnitPrice());
}
//save image to db
if(productImage!=null){
InputStream is = new FileInputStream(productImage);
byte[] buffer = new byte[1023*1024*10];
int len = is.read(buffer);
is.close();
byte[] data = new byte[len];
for(int i=0;i<len;i++)
data[i] = buffer[i];
com.bluesky.system.File file = new com.bluesky.system.File();
file.setContentType(productImageContentType);
file.setData(data);
reposity.save(file);
if(product.getImageFileId()!=null)
reposity.delete(com.bluesky.system.File.class, product.getImageFileId());
product.setImageFileId(file.getId());
}
productCategory.merge(product);
}
} else if (submitAction.equals("delete_product")) {
productCategory.deleteProduct(product.getId());
} else if (submitAction.equals("selectChanged_product")) {
// change the product series(level5)
// pc.deleteProduct(product.getId());
}
prepareData();
return SUCCESS;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public CategoryItem[] getSelectedItems() {
return selectedItems;
}
public void setSelectedItems(CategoryItem[] selectedItems) {
this.selectedItems = selectedItems;
}
/*
* load data for level 0 to current level
*/
public List getLevels() {
return levels;
}
void prepareData() {
// load levels until current level
for (int i = 0; i < 6; i++) {
// load with domain object, with real data
CategoryItem ci=null;
if(selectedItems[i].getId()!=null)
ci = productCategory.getCategoryItem(selectedItems[i].getId());
if (i > level || ci == null) {
// clear the form bean
selectedItems[i] = new CategoryItem();
} else {
// load domain object for form bean
selectedItems[i] = ci;
Set children = productCategory.getChildrenCategoryItems(selectedItems[i]);
levels.set(i + 1, children);
}
}
// load products
if (selectedItems[4].getId() !=null)
products = productCategory.getProducts(selectedItems[4]);
// load product
Product productEntity = null;
if (product.getId() != null)
productEntity = productCategory.getProduct(product.getId());
// clear formbean attributes, filling it below
attributes.clear();
discountPolicies.clear();
if (productEntity != null) {
product = productEntity;
// copy 'product.attributes' to formbean 'attributes', replace
Iterator it = product.getAttributes().iterator();
int i = 0;
while (it.hasNext()) {
ProductAttribute pa = (ProductAttribute) it.next();
attributes.add(pa);
i++;
}
Iterator it2 = product.getDiscountPolicies().keySet().iterator();
while (it2.hasNext()) {
long key = (Long) it2.next();
BigDecimal unitPrice = (BigDecimal)product.getDiscountPolicies().get(key);
DiscountPolicy dp = new DiscountPolicy();
dp.setBaseQuantity(key);
dp.setUnitPrice(unitPrice);
discountPolicies.add(dp);
}
} else {
product = new Product();
}
// to reach the min_size
while (attributes.size() < 6)
attributes.add(new ProductAttribute());
while (discountPolicies.size() < 5)
discountPolicies.add(new DiscountPolicy());
// load manufactories
manufactories = manufactoryDao.getAll();
}
public List getDiscountPolicies() {
return discountPolicies;
}
public void setDiscountPolicies(List discountPolicies) {
this.discountPolicies = discountPolicies;
}
public void setLevels(List levels) {
this.levels = levels;
}
public String getSubmitAction() {
return submitAction;
}
public void setSubmitAction(String submitAction) {
this.submitAction = submitAction;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -