use of com.salesmanager.core.model.catalog.product.attribute.ProductOption in project shopizer by shopizer-ecommerce.
the class ProductNextGenTest method createOptions.
/**
* Add possible choices
* @param product
* @throws Exception
*/
private void createOptions(Product product) throws Exception {
/**
* An attribute can be created dynamicaly but the attached Option and Option value need to exist
*/
MerchantStore store = product.getMerchantStore();
Language en = languageService.getByCode("en");
/**
* Create size option
*/
size = new ProductOption();
size.setMerchantStore(store);
size.setCode("SHOESIZE");
size.setProductOptionType(ProductOptionType.Radio.name());
ProductOptionDescription sizeDescription = new ProductOptionDescription();
sizeDescription.setLanguage(en);
sizeDescription.setName("Size");
sizeDescription.setDescription("Show size");
sizeDescription.setProductOption(size);
size.getDescriptions().add(sizeDescription);
// create option
productOptionService.saveOrUpdate(size);
/**
* Create size values (9, 9.5, 10)
*/
// option value 9
nine = new ProductOptionValue();
nine.setMerchantStore(store);
nine.setCode("nine");
ProductOptionValueDescription nineDescription = new ProductOptionValueDescription();
nineDescription.setLanguage(en);
nineDescription.setName("9");
nineDescription.setDescription("Size 9");
nineDescription.setProductOptionValue(nine);
nine.getDescriptions().add(nineDescription);
// create an option value
productOptionValueService.saveOrUpdate(nine);
// option value 9.5
nineHalf = new ProductOptionValue();
nineHalf.setMerchantStore(store);
nineHalf.setCode("nineHalf");
ProductOptionValueDescription nineHalfDescription = new ProductOptionValueDescription();
nineHalfDescription.setLanguage(en);
nineHalfDescription.setName("9.5");
nineHalfDescription.setDescription("Size 9.5");
nineHalfDescription.setProductOptionValue(nineHalf);
nineHalf.getDescriptions().add(nineHalfDescription);
// create an option value
productOptionValueService.saveOrUpdate(nineHalf);
// option value 10
ten = new ProductOptionValue();
ten.setMerchantStore(store);
ten.setCode("ten");
ProductOptionValueDescription tenDescription = new ProductOptionValueDescription();
tenDescription.setLanguage(en);
tenDescription.setName("10");
tenDescription.setDescription("Size 10");
tenDescription.setProductOptionValue(ten);
ten.getDescriptions().add(tenDescription);
// create an option value
productOptionValueService.saveOrUpdate(ten);
// end options / options values
}
use of com.salesmanager.core.model.catalog.product.attribute.ProductOption in project shopizer by shopizer-ecommerce.
the class ProductTest method testAttributes.
private void testAttributes(Product product) throws Exception {
/**
* An attribute can be created dynamicaly but the attached Option and Option value need to exist
*/
MerchantStore store = product.getMerchantStore();
Language en = languageService.getByCode("en");
/**
* Create size option
*/
ProductOption color = new ProductOption();
color.setMerchantStore(store);
color.setCode("COLOR");
color.setProductOptionType(ProductOptionType.Radio.name());
ProductOptionDescription optionDescription = new ProductOptionDescription();
optionDescription.setLanguage(en);
optionDescription.setName("Color");
optionDescription.setDescription("Color of an item");
optionDescription.setProductOption(color);
color.getDescriptions().add(optionDescription);
// create option
productOptionService.saveOrUpdate(color);
/**
* Create size option
*/
ProductOption size = new ProductOption();
size.setMerchantStore(store);
size.setCode("SIZE");
size.setProductOptionType(ProductOptionType.Radio.name());
ProductOptionDescription sizeDescription = new ProductOptionDescription();
sizeDescription.setLanguage(en);
sizeDescription.setName("Size");
sizeDescription.setDescription("Size of an item");
sizeDescription.setProductOption(size);
size.getDescriptions().add(sizeDescription);
// create option
productOptionService.saveOrUpdate(size);
// option value
ProductOptionValue red = new ProductOptionValue();
red.setMerchantStore(store);
red.setCode("red");
ProductOptionValueDescription redDescription = new ProductOptionValueDescription();
redDescription.setLanguage(en);
redDescription.setName("Red");
redDescription.setDescription("Red color");
redDescription.setProductOptionValue(red);
red.getDescriptions().add(redDescription);
// create an option value
productOptionValueService.saveOrUpdate(red);
// another option value
ProductOptionValue blue = new ProductOptionValue();
blue.setMerchantStore(store);
blue.setCode("blue");
ProductOptionValueDescription blueDescription = new ProductOptionValueDescription();
blueDescription.setLanguage(en);
blueDescription.setName("Blue");
blueDescription.setDescription("Color blue");
blueDescription.setProductOptionValue(blue);
blue.getDescriptions().add(blueDescription);
// create another option value
productOptionValueService.saveOrUpdate(blue);
// option value
ProductOptionValue small = new ProductOptionValue();
small.setMerchantStore(store);
small.setCode("small");
ProductOptionValueDescription smallDescription = new ProductOptionValueDescription();
smallDescription.setLanguage(en);
smallDescription.setName("Small");
smallDescription.setDescription("Small size");
smallDescription.setProductOptionValue(small);
small.getDescriptions().add(smallDescription);
// create an option value
productOptionValueService.saveOrUpdate(small);
// another option value
ProductOptionValue medium = new ProductOptionValue();
medium.setMerchantStore(store);
medium.setCode("medium");
ProductOptionValueDescription mediumDescription = new ProductOptionValueDescription();
mediumDescription.setLanguage(en);
mediumDescription.setName("Medium");
mediumDescription.setDescription("Medium size");
mediumDescription.setProductOptionValue(medium);
medium.getDescriptions().add(mediumDescription);
// create another option value
productOptionValueService.saveOrUpdate(medium);
ProductAttribute color_blue = new ProductAttribute();
color_blue.setProduct(product);
color_blue.setProductOption(color);
color_blue.setAttributeDefault(true);
// no price variation
color_blue.setProductAttributePrice(new BigDecimal(0));
// weight variation
color_blue.setProductAttributeWeight(new BigDecimal(1));
color_blue.setProductOptionValue(blue);
productAttributeService.create(color_blue);
product.getAttributes().add(color_blue);
/**
* create attributes *
*/
// attributes
ProductAttribute color_red = new ProductAttribute();
color_red.setProduct(product);
color_red.setProductOption(color);
color_red.setAttributeDefault(true);
// no price variation
color_red.setProductAttributePrice(new BigDecimal(0));
// weight variation
color_red.setProductAttributeWeight(new BigDecimal(1));
color_red.setProductOptionValue(red);
productAttributeService.create(color_red);
product.getAttributes().add(color_red);
ProductAttribute smallAttr = new ProductAttribute();
smallAttr.setProduct(product);
smallAttr.setProductOption(size);
smallAttr.setAttributeDefault(true);
// no price variation
smallAttr.setProductAttributePrice(new BigDecimal(0));
// weight variation
smallAttr.setProductAttributeWeight(new BigDecimal(1));
smallAttr.setProductOptionValue(small);
productAttributeService.create(smallAttr);
product.getAttributes().add(smallAttr);
productService.update(product);
/**
* get options facets
*/
List<ProductAttribute> attributes = productAttributeService.getProductAttributesByCategoryLineage(store, product.getCategories().iterator().next().getLineage(), en);
Assert.assertTrue((long) attributes.size() > 0);
}
use of com.salesmanager.core.model.catalog.product.attribute.ProductOption in project shopizer by shopizer-ecommerce.
the class ProductOptionFacadeImpl method optionExists.
@Override
public boolean optionExists(String code, MerchantStore store) {
Validate.notNull(code, "Option code must not be null");
Validate.notNull(store, "Store code must not be null");
boolean exists = false;
ProductOption option = productOptionService.getByCode(store, code);
if (option != null) {
exists = true;
}
return exists;
}
use of com.salesmanager.core.model.catalog.product.attribute.ProductOption in project shopizer by shopizer-ecommerce.
the class PersistableProductOptionMapper method merge.
@Override
public ProductOption merge(PersistableProductOptionEntity source, ProductOption destination, MerchantStore store, Language language) {
if (destination == null) {
destination = new ProductOption();
}
try {
if (!CollectionUtils.isEmpty(source.getDescriptions())) {
for (com.salesmanager.shop.model.catalog.product.attribute.ProductOptionDescription desc : source.getDescriptions()) {
ProductOptionDescription description = null;
if (!CollectionUtils.isEmpty(destination.getDescriptions())) {
for (ProductOptionDescription d : destination.getDescriptions()) {
if (!StringUtils.isBlank(desc.getLanguage()) && desc.getLanguage().equals(d.getLanguage().getCode())) {
d.setDescription(desc.getDescription());
d.setName(desc.getName());
d.setTitle(desc.getTitle());
description = d;
break;
}
}
}
if (description == null) {
description = description(desc);
description.setProductOption(destination);
destination.getDescriptions().add(description);
}
}
}
destination.setCode(source.getCode());
destination.setMerchantStore(store);
destination.setProductOptionSortOrder(source.getOrder());
destination.setProductOptionType(source.getType());
destination.setReadOnly(source.isReadOnly());
return destination;
} catch (Exception e) {
throw new ServiceRuntimeException("Error while converting product option", e);
}
}
use of com.salesmanager.core.model.catalog.product.attribute.ProductOption in project shopizer by shopizer-ecommerce.
the class PersistableProductVariationMapper method merge.
@Override
public ProductVariation merge(PersistableProductVariation source, ProductVariation destination, MerchantStore store, Language language) {
Validate.notNull(destination, "ProductVariation cannot be null");
destination.setId(source.getId());
destination.setCode(source.getCode());
destination.setMerchantStore(store);
ProductOption option = productOptionService.getById(store, source.getOption());
if (option == null) {
throw new ConversionRuntimeException("ProductOption [" + source.getOption() + "] does not exists");
}
destination.setProductOption(option);
ProductOptionValue optionValue = productOptionValueService.getById(store, source.getOptionValue());
if (optionValue == null) {
throw new ConversionRuntimeException("ProductOptionValue [" + source.getOptionValue() + "] does not exists");
}
destination.setProductOptionValue(optionValue);
return destination;
}
Aggregations