Rev 3314 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.metamodel.util;import java.util.List;import in.shop2020.metamodel.core.Bullet;import in.shop2020.metamodel.core.CompositeDataObject;import in.shop2020.metamodel.core.EnumDataObject;import in.shop2020.metamodel.core.PrimitiveDataObject;import in.shop2020.metamodel.definitions.BulletDefinition;import in.shop2020.metamodel.definitions.Catalog;import in.shop2020.metamodel.definitions.CompositeDefinition;import in.shop2020.metamodel.definitions.DefinitionsContainer;import in.shop2020.metamodel.definitions.EnumValue;import in.shop2020.metamodel.definitions.Unit;/*** Utility class that supports core Bullet class. All related objects are* fetched from database and aggregated here.** @author naveen**/public class ExpandedBullet extends Bullet {/****/private static final long serialVersionUID = 1L;/*** Expanded version of BulletDefinition object*/private ExpandedBulletDefinition expandedBulletDefinition;/*** Expanded version of EnumDataObject*/private ExpandedEnumDataObject expandedEnumDataObject;/*** Expanded unit ID*/private Unit unit;/*** True, if bullet contains shop2020 primitive structured data*/private boolean primitive;/*** True, if bullet contains enumerated type structured data*/private boolean enumerated;/*** True, if bullet contains composite type structured data*/private boolean composite;/*** Expands references in Bullet object based on BulletDefinition object** @param bullet* @param bulletDefinition* @throws Exception*/public ExpandedBullet(Bullet bullet, BulletDefinition bulletDefinition)throws Exception {super(bullet.getDataObject());// Copy rest of the propertiesthis.setUnitID(bullet.getUnitID());super.setFreeformContent(bullet.getFreeformContent());this.expandedBulletDefinition =new ExpandedBulletDefinition(bulletDefinition);DefinitionsContainer defs =Catalog.getInstance().getDefinitionsContainer();// Expand enum data objectif(super.getDataObject() instanceof EnumDataObject) {this.enumerated = true;EnumDataObject enumDataObject =(EnumDataObject)bullet.getDataObject();EnumValue enumValue =defs.getEnumValue(enumDataObject.getEnumValueID());this.expandedEnumDataObject = new ExpandedEnumDataObject(enumDataObject, enumValue);}else if(super.getDataObject() instanceof CompositeDataObject) {this.composite = true;}else {this.primitive = true;}// Expand unit IDif(bullet.getUnitID() != 0L) {this.unit = defs.getUnit(bullet.getUnitID());}}/*** @return the expandedEnumDataObject*/public ExpandedEnumDataObject getExpandedEnumDataObject() {return expandedEnumDataObject;}/*** @return the expandedBulletDefinition*/public ExpandedBulletDefinition getExpandedBulletDefinition() {return expandedBulletDefinition;}/*** True, if bullet contains shop2020 primitive structured data** @return the primitive*/public boolean isPrimitive() {return primitive;}/*** True, if bullet contains enumerated type structured data** @return the enumerated*/public boolean isEnumerated() {return enumerated;}/*** True, if bullet contains composite type structured data** @return the composite*/public boolean isComposite() {return composite;}/*** Encapsulates logic to come up with display-able text out of Bullet object** @return String Display-able text*/public String displayText() {String displayText = "";boolean contentAvailable = true;// Enumeratedif(this.isEnumerated()) {displayText =this.getExpandedEnumDataObject().getEnumValue().getValue();}// Compositeelse if (this.isComposite()) {CompositeDefinition compositeDef = (CompositeDefinition)this.expandedBulletDefinition.getDatatypeDefinition();String separator = compositeDef.getSeparator();separator = " " + separator + " ";List<PrimitiveDataObject> primitivedataobjects =((CompositeDataObject)this.getDataObject()).getPrimitiveDataObjects();for(int i=0;i<primitivedataobjects.size();i++) {PrimitiveDataObject primitivedataobject =primitivedataobjects.get(i);displayText += primitivedataobject.getValue();if(primitivedataobject.getValue().trim().equals("-1")){contentAvailable = false;}if(i != (primitivedataobjects.size() - 1)) {displayText += separator;}}if(this.getUnit() != null) {displayText += " " + this.getUnit().getShortForm();}}// Primitiveelse {displayText += ((PrimitiveDataObject)this.getDataObject()).getValue();if(((PrimitiveDataObject)this.getDataObject()).getValue().trim().equals("-1")){contentAvailable = contentAvailable && false;}if (this.getUnit() != null) {displayText += " " + this.getUnit().getShortForm();}}if(!contentAvailable){displayText = "Not available";}return displayText;}/*** Encapsulates logic to come up with "value" only part Bullet object** @return String "value" text*/public String getValue() {String value = "";// Enumeratedif(this.isEnumerated()) {ExpandedEnumDataObject expEnumDO = this.getExpandedEnumDataObject();if(expEnumDO != null) {EnumValue enumVal = expEnumDO.getEnumValue();if (enumVal != null) {value = enumVal.getValue();}}}// Compositeelse if (this.isComposite()) {CompositeDefinition compositeDef = (CompositeDefinition)this.expandedBulletDefinition.getDatatypeDefinition();String separator = compositeDef.getSeparator();List<PrimitiveDataObject> primitivedataobjects =((CompositeDataObject)this.getDataObject()).getPrimitiveDataObjects();for(int i=0;i<primitivedataobjects.size();i++) {PrimitiveDataObject primitivedataobject =primitivedataobjects.get(i);value += primitivedataobject.getValue();if(i != (primitivedataobjects.size() - 1)) {value += separator;}}}// Primitiveelse {value += ((PrimitiveDataObject)this.getDataObject()).getValue();}return value;}/*** @param unit the unit to set*/public void setUnit(Unit unit) {this.unit = unit;}/*** @return the unit*/public Unit getUnit() {return unit;}/* (non-Javadoc)* @see java.lang.Object#toString()*/@Overridepublic String toString() {return "ExpandedBullet [composite=" + composite + ", enumerated="+ enumerated + ", expandedBulletDefinition="+ expandedBulletDefinition + ", expandedEnumDataObject="+ expandedEnumDataObject + ", primitive=" + primitive+ ", unit=" + unit + ", getDataObject()=" + getDataObject()+ ", getFreeformContent()=" + getFreeformContent() + "]";}}