Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
24 naveen 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.util;
5
 
25 naveen 6
import java.util.List;
7
 
24 naveen 8
import in.shop2020.metamodel.core.Bullet;
9
import in.shop2020.metamodel.core.CompositeDataObject;
10
import in.shop2020.metamodel.core.EnumDataObject;
25 naveen 11
import in.shop2020.metamodel.core.PrimitiveDataObject;
24 naveen 12
import in.shop2020.metamodel.definitions.BulletDefinition;
13
import in.shop2020.metamodel.definitions.Catalog;
25 naveen 14
import in.shop2020.metamodel.definitions.CompositeDefinition;
24 naveen 15
import in.shop2020.metamodel.definitions.DefinitionsContainer;
16
import in.shop2020.metamodel.definitions.EnumValue;
17
 
18
/**
70 naveen 19
 * Utility class that supports core Bullet class. All related objects are 
20
 * fetched from database and aggregated here.
49 naveen 21
 * 
24 naveen 22
 * @author naveen
23
 *
24
 */
25
public class ExpandedBullet extends Bullet {
49 naveen 26
 
27
	/**
28
	 * 
29
	 */
30
	private static final long serialVersionUID = 1L;
31
 
32
	/**
33
	 * Expanded version of BulletDefinition object
34
	 */
24 naveen 35
	private ExpandedBulletDefinition expandedBulletDefinition;
49 naveen 36
 
37
	/**
38
	 * Expanded version of EnumDataObject
39
	 */
24 naveen 40
	private ExpandedEnumDataObject expandedEnumDataObject;
49 naveen 41
 
42
	/**
43
	 * If bullet contains shop2020 primitive structured data
44
	 */
24 naveen 45
	private boolean primitive;
49 naveen 46
 
47
	/**
48
	 * If bullet contains enumerated type structured data
49
	 */
24 naveen 50
	private boolean enumerated;
51
 
52
	/**
49 naveen 53
	 * If bullet contains composite type structured data
24 naveen 54
	 */
49 naveen 55
	private boolean composite;
24 naveen 56
 
57
	/**
49 naveen 58
	 * Expands references in Bullet object based on BulletDefinition object
59
	 * 
60
	 * @param bullet
61
	 * @param bulletDefinition
62
	 * @throws Exception
24 naveen 63
	 */
64
	public ExpandedBullet(Bullet bullet, BulletDefinition bulletDefinition) 
65
		throws Exception {
66
		super(bullet.getDataObject());
67
 
68
		// Copy rest of the properties
69
		super.setFreeformContent(bullet.getFreeformContent());
70
 
71
		this.expandedBulletDefinition = 
72
			new ExpandedBulletDefinition(bulletDefinition);
73
 
74
		// Expand enum data object
75
		if(super.getDataObject() instanceof EnumDataObject) {
76
			this.enumerated = true;
77
 
78
			EnumDataObject enumDataObject = 
79
				(EnumDataObject)bullet.getDataObject();
80
 
81
			DefinitionsContainer defs = 
82
				Catalog.getInstance().getDefinitionsContainer();
83
 
84
			EnumValue enumValue = 
85
				defs.getEnumValue(enumDataObject.getEnumValueID());
86
 
87
			this.expandedEnumDataObject = new ExpandedEnumDataObject(
88
					enumDataObject, enumValue);
89
		}
90
		else if(super.getDataObject() instanceof CompositeDataObject) {
91
			this.composite = true;
92
		}
93
		else {
94
			this.primitive = true;
95
		}
96
	}
97
 
98
	/**
99
	 * @return the expandedEnumDataObject
100
	 */
101
	public ExpandedEnumDataObject getExpandedEnumDataObject() {
102
		return expandedEnumDataObject;
103
	}
104
 
105
	/**
106
	 * @return the expandedBulletDefinition
107
	 */
108
	public ExpandedBulletDefinition getExpandedBulletDefinition() {
109
		return expandedBulletDefinition;
110
	}
111
 
112
	/**
113
	 * @return the primitive
114
	 */
115
	public boolean isPrimitive() {
116
		return primitive;
117
	}
118
 
119
	/**
120
	 * @return the enumerated
121
	 */
122
	public boolean isEnumerated() {
123
		return enumerated;
124
	}
125
 
126
	/**
127
	 * @return the composite
128
	 */
129
	public boolean isComposite() {
130
		return composite;
131
	}
132
 
25 naveen 133
	/**
49 naveen 134
	 * Encapsulates logic to come up with display-able text out of Bullet object
25 naveen 135
	 * 
49 naveen 136
	 * @return String Display-able text
25 naveen 137
	 */
138
	public String displayText() {
139
		String displayText = "";
140
 
141
		// Enumerated
142
		if(this.isEnumerated()) {
143
			displayText = 
144
				this.getExpandedEnumDataObject().getEnumValue().getValue();
145
		}
146
 
147
		// Composite
148
		else if (this.isComposite()) {
149
			CompositeDefinition compositeDef = (CompositeDefinition)
150
				this.expandedBulletDefinition.getDatatypeDefinition();
151
 
152
			String separator = compositeDef.getSeparator();
153
 
154
			List<PrimitiveDataObject> primitivedataobjects = 
155
				((CompositeDataObject)this.getDataObject()
156
						).getPrimitiveDataObjects();
157
 
158
			for(int i=0;i<primitivedataobjects.size();i++) {
159
				PrimitiveDataObject primitivedataobject = 
160
					primitivedataobjects.get(i);
161
 
162
				displayText += primitivedataobject.getValue();
163
 
164
				if(i != (primitivedataobjects.size() - 1)) {
165
					displayText += separator;
166
				}
167
			}
168
 
169
			if(this.expandedBulletDefinition.getUnit() != null) { 
170
				displayText += " " + 
171
					this.expandedBulletDefinition.getUnit().getShortForm();
172
			}
173
		}
174
 
175
		// Primitive
176
		else {
177
			displayText += ((PrimitiveDataObject)this.getDataObject()
178
					).getValue();
179
 
180
            if (this.getExpandedBulletDefinition().getUnit() != null) {
181
				displayText += " " + 
182
                	this.getExpandedBulletDefinition().getUnit().getShortForm();
183
            }
184
		}
185
 
186
		return displayText;
187
	}
33 naveen 188
 
65 naveen 189
 
190
	/**
191
	 * Encapsulates logic to come up with "value" only part Bullet object
192
	 * 
193
	 * @return String "value" text
194
	 */
195
	public String getValue() {
196
		String value = "";
197
 
198
		// Enumerated
199
		if(this.isEnumerated()) {
200
			value = this.getExpandedEnumDataObject().getEnumValue().getValue();
201
		}
202
 
203
		// Composite
204
		else if (this.isComposite()) {
205
			CompositeDefinition compositeDef = (CompositeDefinition)
206
				this.expandedBulletDefinition.getDatatypeDefinition();
207
 
208
			String separator = compositeDef.getSeparator();
209
 
210
			List<PrimitiveDataObject> primitivedataobjects = 
211
				((CompositeDataObject)this.getDataObject()
212
						).getPrimitiveDataObjects();
213
 
214
			for(int i=0;i<primitivedataobjects.size();i++) {
215
				PrimitiveDataObject primitivedataobject = 
216
					primitivedataobjects.get(i);
217
 
218
				value += primitivedataobject.getValue();
219
 
220
				if(i != (primitivedataobjects.size() - 1)) {
221
					value += separator;
222
				}
223
			}
224
		}
225
 
226
		// Primitive
227
		else {
228
			value += ((PrimitiveDataObject)this.getDataObject()).getValue();
229
		}
230
 
231
		return value;
232
	}
233
 
33 naveen 234
	/* (non-Javadoc)
235
	 * @see java.lang.Object#toString()
236
	 */
237
	@Override
238
	public String toString() {
239
		return "ExpandedBullet [composite=" + composite + ", enumerated="
240
				+ enumerated + ", expandedBulletDefinition="
241
				+ expandedBulletDefinition + ", expandedEnumDataObject="
242
				+ expandedEnumDataObject + ", primitive=" + primitive
243
				+ ", toString()=" + super.toString() + "]";
244
	}
24 naveen 245
}