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

📄 categoryeditaction.java

📁 工厂版本管理系统,STRUTS2框架,用于管理商品的版本,便于有效的控制版本
💻 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 + -