package com.mozu.test.framework.helper;
import java.util.ArrayList;
import java.util.List;
import com.mozu.api.contracts.productadmin.Attribute;
import com.mozu.api.contracts.productadmin.AttributeInProductType;
import com.mozu.api.contracts.productadmin.AttributeVocabularyValueInProductType;
import com.mozu.api.contracts.productadmin.ProductType;
public class ProductTypeGenerator {
public static ProductType generate(String productTypeName) {
ArrayList<Attribute> attrs = new ArrayList<Attribute>();
return generate(attrs, productTypeName);
}
public static ProductType generate(Attribute attr, String productTypeName) {
ArrayList<Attribute> attrs = new ArrayList<Attribute>();
attrs.add(attr);
return generate(attrs, productTypeName);
}
public static ProductType generate(ArrayList<Attribute> attrs, String productTypeName) {
ArrayList<AttributeInProductType> extras = null;
ArrayList<AttributeInProductType> properties = null;
ArrayList<AttributeInProductType> options = null;
for (int i = 0; i < attrs.size(); i++)
{
AttributeInProductType attrInPT = GenerateAttributeInProductType(attrs.get(i), 0, null, null, null, null);
if (attrs.get(i).getIsOption() != null)
{
if (attrs.get(i).getIsOption())
{
if (options == null)
options = new ArrayList<AttributeInProductType>();
options.add(attrInPT);
}
}
if (attrs.get(i).getIsExtra() != null)
{
if (attrs.get(i).getIsExtra())
{
if (extras == null)
extras = new ArrayList<AttributeInProductType>();
extras.add(attrInPT);
}
}
if (attrs.get(i).getIsProperty() != null)
{
if (attrs.get(i).getIsProperty())
{
if (properties == null)
{
properties = new ArrayList<AttributeInProductType>();
}
attrInPT.setIsMultiValueProperty(true);
properties.add(attrInPT);
}
}
}
return generate(productTypeName, options, properties, extras);
}
public static ProductType generate(String name, ArrayList<AttributeInProductType> options,
ArrayList<AttributeInProductType> properties, ArrayList<AttributeInProductType> extras)
{
ProductType prodt = new ProductType();
prodt.setName(name);
prodt.setOptions(options);
prodt.setProperties(properties);
prodt.setExtras(extras);
List<String> usages = new ArrayList<String>();
usages.add("Standard");
usages.add("Bundle");
prodt.setProductUsages(usages);
return prodt;
}
public static AttributeInProductType GenerateAttributeInProductType(Attribute attr, Integer order, Boolean isHiddenProperty, Boolean isInheritedFromBaseType, Boolean isMultiValueProperty, Boolean IsRequiredByAdmin)
{
AttributeInProductType attrtp = new AttributeInProductType();
attrtp.setAttributeFQN(attr.getAttributeFQN());
attrtp.setIsHiddenProperty(isHiddenProperty);
attrtp.setIsInheritedFromBaseType(isInheritedFromBaseType);
attrtp.setIsMultiValueProperty(isMultiValueProperty);
attrtp.setIsRequiredByAdmin(IsRequiredByAdmin);
attrtp.setOrder(order);
if (attr.getVocabularyValues() != null)
{
attrtp.setVocabularyValues(new ArrayList<AttributeVocabularyValueInProductType>());
for (int i = 0; i < attr.getVocabularyValues().size(); i++)
{
attrtp.getVocabularyValues().add(GenerateAttributeVocabularyValueInProductType(attr.getVocabularyValues().get(i).getValue(), null));
}
}
return attrtp;
}
public static AttributeVocabularyValueInProductType GenerateAttributeVocabularyValueInProductType(Object value, Integer order)
{
AttributeVocabularyValueInProductType type = new AttributeVocabularyValueInProductType();
type.setValue(value);
type.setOrder(order);
return type;
}
}