/* * Provided by CSTI Consulting * Following GNU LESSER GENERAL PUBLIC LICENSE * You may obtain more details at * * http://www.csticonsulting.com * Copyright (c) 2006-2010 Consultation CS-TI inc. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.salesmanager.central.catalog; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Map; import org.apache.log4j.Logger; import com.salesmanager.central.PageBaseAction; import com.salesmanager.core.entity.catalog.Product; import com.salesmanager.core.entity.catalog.ProductAttribute; import com.salesmanager.core.entity.catalog.ProductOption; import com.salesmanager.core.entity.catalog.ProductOptionDescriptor; import com.salesmanager.core.entity.catalog.ProductOptionValue; import com.salesmanager.core.entity.merchant.MerchantStore; import com.salesmanager.core.service.ServiceFactory; import com.salesmanager.core.service.catalog.CatalogService; import com.salesmanager.core.service.merchant.MerchantService; import com.salesmanager.core.service.reference.ReferenceService; import com.salesmanager.core.util.ProductUtil; public class ProductPreviewAction extends PageBaseAction { private static Logger log = Logger.getLogger(ProductPreviewAction.class); private Product product; private Collection<ProductOptionDescriptor> specifications = new ArrayList();// read // only // attributes private Collection<ProductOptionDescriptor> options = new ArrayList();// priced // options private String productPrice; private Map storeConfiguration; public String display() { super.setPageTitle("label.product.preview"); try { if (this.getProduct() == null) { return "unauthorized"; } MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); MerchantStore store = mservice.getMerchantStore(super.getContext() .getMerchantid()); // product details CatalogService cservice = (CatalogService) ServiceFactory .getService(ServiceFactory.CatalogService); product = cservice.getProduct(this.getProduct().getProductId()); product.setLocale(super.getLocale()); // options - attributes Collection attributes = cservice.getProductAttributes(product .getProductId(), super.getLocale().getLanguage()); Collection defaultOptions = new ArrayList(); if (attributes != null && attributes.size() > 0) { // extract read only Iterator i = attributes.iterator(); long lastOptionId = -1; long lastSpecificationOptionId = -1; ProductOptionDescriptor pod = null; while (i.hasNext()) { ProductAttribute pa = (ProductAttribute) i.next(); ProductOption po = pa.getProductOption(); ProductOptionValue pov = pa.getProductOptionValue(); if (po != null) { if (pa.isAttributeDisplayOnly()) { if (lastSpecificationOptionId == -1) { lastSpecificationOptionId = po .getProductOptionId(); pod = new ProductOptionDescriptor(); pod.setOptionType(po.getProductOptionType()); pod.setName(po.getName()); specifications.add(pod); } else { if (pa.getOptionId() != lastOptionId) { lastSpecificationOptionId = po .getProductOptionId(); pod = new ProductOptionDescriptor(); pod .setOptionType(po .getProductOptionType()); pod.setName(po.getName()); specifications.add(pod); } } } else {// option if (lastOptionId == -1) { lastOptionId = po.getProductOptionId(); pod = new ProductOptionDescriptor(); pod.setOptionType(po.getProductOptionType()); pod.setName(po.getName()); options.add(pod); if (pa.isAttributeDefault()) { defaultOptions.add(pa); } } else { if (pa.getOptionId() != lastOptionId) { lastOptionId = po.getProductOptionId(); pod = new ProductOptionDescriptor(); pod .setOptionType(po .getProductOptionType()); pod.setName(po.getName()); options.add(pod); if (pa.isAttributeDefault()) { defaultOptions.add(pa); } } } } pod.addValue(pa); pod.setOptionId(pa.getOptionId()); if (pa.isAttributeDefault()) { pod.setDefaultOption(pa.getProductAttributeId()); } } } } ReferenceService rservice = (ReferenceService) ServiceFactory .getService(ServiceFactory.ReferenceService); storeConfiguration = rservice.getModuleConfigurationsKeyValue(store .getTemplateModule(), store.getCountry()); if (defaultOptions != null && defaultOptions.size() > 0) { this.setProductPrice(ProductUtil .formatHTMLProductPriceWithAttributes( super.getLocale(), store.getCurrency(), this .getProduct(), defaultOptions, true)); } else { this.setProductPrice(ProductUtil.formatHTMLProductPrice(super .getLocale(), store.getCurrency(), this.getProduct(), true, false)); } } catch (Exception e) { log.error(e); super.setTechnicalMessage(); } return SUCCESS; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public String getProductPrice() { return productPrice; } public void setProductPrice(String productPrice) { this.productPrice = productPrice; } public Map getStoreConfiguration() { return storeConfiguration; } public void setStoreConfiguration(Map storeConfiguration) { this.storeConfiguration = storeConfiguration; } public Collection<ProductOptionDescriptor> getSpecifications() { return specifications; } public void setSpecifications( Collection<ProductOptionDescriptor> specifications) { this.specifications = specifications; } public Collection<ProductOptionDescriptor> getOptions() { return options; } public void setOptions(Collection<ProductOptionDescriptor> options) { this.options = options; } }