Community   SpringSource   Projects    Downloads    Documentation    Forums    Training   Exchange   Blogs

Go Back   Spring Community Forums > Core Spring Projects > Web

Reply
 
Thread Tools Display Modes
  #1  
Old Jun 23rd, 2009, 02:36 PM
kormem kormem is offline
Member
 
Join Date: Jan 2009
Posts: 31
Default null value after convert set to list

Env.:Spring 2.5 Hibernate 3 icefaces 1.7
I try to convert all the products items to product beans depends param_catelog id.
but I always get null value in converting method.
I use two backing bean 1.productbean 2.productlistbean
Here is part of backing bean
#backing bean-productbean
Code:
import dao.hibernate.Product;
.
.

public class ProductBean extends BaseBean {
	//the product id
	private String id ;
	
	//the product name
	private String name;
	
	//the product description
	private String description;
	
	//the product price
	private double price;
	
	//the product width
	private double width;
	
	//the product height
	private double height;
	
	//the category ids associated with the product
	private Set productCategories;
	
	//the category id selected by the user on the page
	private List selectedCategoryIds;
.
.
.
.
.
public Set getCategoryIds() {
		return this.productCategories;
	}
	
	public void setCategoryIds(Set newCategoryIds) {
		this.productCategories = newCategoryIds;
		
		if (this.productCategories != null) {
			this.selectedCategoryIds = ViewUtils.convertToList(this.productCategories);
		}
	}
	
	public List getSelectedCategoryIds() {
		return this.selectedCategoryIds;
	}
	
	public void setSelectedCategoryIds(List newSelectedCategoryIds) {
		this.selectedCategoryIds = newSelectedCategoryIds;
		this.productCategories = ViewUtils.convertToSet(selectedCategoryIds);
	}
#backing bean-productlistbean
Code:
public class ProductListBean extends BaseBean {
	
	private static final int DEFAULT_PRODUCTS_PER_PAGE = 6;
	
	
	private List productBeans;
	
	
	private List currentProductBeans;
	
	
	private Map productBeansMap;
	
	
	private String currentCategoryId;
	
	
	private String currentCategoryName;
	

	private int productsPerPage;
	
		private int totalPages;
	
	
	private int pageNo;
	
	
	public ProductListBean() {
		this.productBeans = new ArrayList();
		this.currentProductBeans = new ArrayList();
		this.productBeansMap = new HashMap();
		
		this.logger.debug("ProductListBean is created");
	}
	
	
	protected void init() {
		try {
			List products = this.serviceLocator.getCatalogService().getAllProducts();
			//getCatalogService().getAllProducts();
			log.info("products size = " + products.size());
			for (int i=0; i<products.size(); i++) {
				Product product = (Product)products.get(i);
				
				ProductBean productBean = ProductBuilder.createProductBean(product);
				productBean.setServiceLocator(this.serviceLocator);
				
				this.productBeans.add(productBean);
			}
			
			this.currentProductBeans = this.productBeans;
			
			this.setProductsPerPage();
			
			this.buildProductBeansMap();
		} catch (Exception e) {
			String msg = "Could not initialize ProductListBean";
			log.info("Could not initialize ProductListBean", e);
			throw new FacesException(msg, e);
		}
		
		this.log.info("ProductListBean is initialized"+currentProductBeans);
	}

public String searchByCategoryAction() {
		this.currentCategoryId = FacesUtils.getRequestParameter(RequestParamNames.CATEGORY_ID);
		String pageNoString = FacesUtils.getRequestParameter(RequestParamNames.PAGE_NO);
		
		try {
			this.pageNo = Integer.parseInt(pageNoString);
		} catch (Exception e) {
			this.pageNo = 1;
		}
		
		this.totalPages = 0;
		
		this.currentProductBeans = new ArrayList();
		
		this.logger.debug("searchByCategoryAction is invoked");
		log.info("categoryId = " + this.currentCategoryId);
		log.info("pageNo = " + this.pageNo);
		
		if (this.currentCategoryId == null || this.currentCategoryId.equals("")) {
			//get all products, no pagination
			this.currentProductBeans = this.productBeans;
		
			return NavigationResults.PRODUCT_LIST;
		}
		else {
			//catalog
		
			Map categoryProductBeans = (Map)this.productBeansMap.get(currentCategoryId);
			log.info("categoryProductBeans Map = " + categoryProductBeans);
			if (categoryProductBeans != null) {
				this.totalPages = categoryProductBeans.size();
				log.info("total pages = " + this.totalPages);
				List productBeans = (List)categoryProductBeans.get(new Integer(this.pageNo));
				log.info("List productbeans = " + this.productBeans.size());
				if (productBeans != null) {
					this.currentProductBeans = productBeans;
				}
			}
			
			log.info("currentProductBeans size = " + this.currentProductBeans.size());
			
			//set current category name
			this.currentCategoryName = FacesUtils.getApplicationBean().getCategoryName(this.currentCategoryId);
			log.info("currentCategoryName = " + this.currentCategoryName);
			
			return NavigationResults.CATALOG;
		}
	}
private void buildProductBeansMap() {
		log.info("buildProductBeansMap is invoked");
		
		this.productBeansMap = new HashMap();
		
		Map categoryProductsMap = new HashMap();
		
		for (int i=0; i<this.productBeans.size(); i++) {
			ProductBean product = (ProductBean)this.productBeans.get(i);
			log.info("product_buildMap"+product.getId());
			Set categoryIds = product.getCategoryIds();
			log.info("product_categoryIds"+categoryIds);
			Iterator ite = categoryIds.iterator();
			while (ite.hasNext()) {
				String categoryId = (String)ite.next();
				
				if (! categoryProductsMap.containsKey(categoryId)) {
					//new category
					List list = new ArrayList();
					list.add(product);
					categoryProductsMap.put(categoryId, list);
				}
				else {
					List list = (List) categoryProductsMap.get(categoryId);
					list.add(product);
				}
			}
		}
		
		Iterator ite = categoryProductsMap.keySet().iterator();
		
		while (ite.hasNext()) {
			Object category = ite.next();
			
			List productBeans = (List)categoryProductsMap.get(category);
			this.productBeansMap.put(category, this.pagination(productBeans));
****log result****
Code:
2009-06-23 11:37:50,173: buildProductBeansMap is invoked
2009-06-23 11:37:50,173: product_buildMapL001
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL002
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL003
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL004
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL005
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL006
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL007
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: product_buildMapL008
2009-06-23 11:37:50,173: product_categoryIds[]
2009-06-23 11:37:50,173: ProductListBean is initialized[id=L001 name=Product1, id=L002 name=Product2, id=L003 name=Product3, id=L004 name=Product4, id=L005 name=Product5, id=L006 name=Product6, id=L007 name=Product7, id=L008 name=Product8]
2009-06-23 11:37:50,173: service locator is set
2009-06-23 11:37:50,173: categoryId = 1
2009-06-23 11:37:50,173: pageNo = 1
2009-06-23 11:37:50,173: categoryProductBeans Map = null
2009-06-23 11:37:50,173: currentProductBeans size = 0
2009-06-23 11:37:50,173: currentCategoryName = null
as you known, buildProductBeansMap array has null value. also categoryProductBeans Map = null

so looked the production bean and call ViewUtil pacage
***ViewUtil****
Code:
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;


public class ViewUtils {
	/**
	 * Convert a list to a set.
	 * 
	 * @param orig the list to be converted
	 * @return the set converted from the list
	 */
	public static Set convertToSet(List orig) {
		Set result = new HashSet();
		
		if (orig != null) {
			Iterator ite = orig.iterator();
			
			while (ite.hasNext()) {
				result.add(ite.next());
			}
		}
		
		return result;
	}
	
	/**
	 * Convert a set to a list.
	 * @param orig the set to be converted
	 * @return the list converted from the set
	 */
	public static List convertToList(Set orig) {
		List result = new ArrayList();
		
		if (orig != null) {
			Iterator ite = orig.iterator();
			
			while (ite.hasNext()) {
				result.add(ite.next());
			}
		}
		
		return result;
	}
}
would you help me how to fix this problem

Last edited by kormem; Jun 23rd, 2009 at 03:02 PM.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 05:34 PM.


Contegix provides first-class managed hosting and partial sponsorship of these forums.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.