Subversion Repositories SmartDukaan

Rev

Rev 3314 | Details | Compare with Previous | 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;
99 naveen 17
import in.shop2020.metamodel.definitions.Unit;
24 naveen 18
 
19
/**
70 naveen 20
 * Utility class that supports core Bullet class. All related objects are 
21
 * fetched from database and aggregated here.
49 naveen 22
 * 
24 naveen 23
 * @author naveen
24
 *
25
 */
26
public class ExpandedBullet extends Bullet {
49 naveen 27
 
28
	/**
29
	 * 
30
	 */
31
	private static final long serialVersionUID = 1L;
32
 
33
	/**
34
	 * Expanded version of BulletDefinition object
35
	 */
24 naveen 36
	private ExpandedBulletDefinition expandedBulletDefinition;
49 naveen 37
 
38
	/**
39
	 * Expanded version of EnumDataObject
40
	 */
24 naveen 41
	private ExpandedEnumDataObject expandedEnumDataObject;
49 naveen 42
 
43
	/**
99 naveen 44
	 * Expanded unit ID
45
	 */
46
	private Unit unit;
47
 
48
	/**
73 naveen 49
	 * True, if bullet contains shop2020 primitive structured data
49 naveen 50
	 */
24 naveen 51
	private boolean primitive;
49 naveen 52
 
53
	/**
73 naveen 54
	 * True, if bullet contains enumerated type structured data
49 naveen 55
	 */
24 naveen 56
	private boolean enumerated;
57
 
58
	/**
73 naveen 59
	 * True, if bullet contains composite type structured data
24 naveen 60
	 */
49 naveen 61
	private boolean composite;
24 naveen 62
 
63
	/**
49 naveen 64
	 * Expands references in Bullet object based on BulletDefinition object
65
	 * 
66
	 * @param bullet
67
	 * @param bulletDefinition
68
	 * @throws Exception
24 naveen 69
	 */
70
	public ExpandedBullet(Bullet bullet, BulletDefinition bulletDefinition) 
71
		throws Exception {
72
		super(bullet.getDataObject());
73
 
74
		// Copy rest of the properties
99 naveen 75
		this.setUnitID(bullet.getUnitID());
24 naveen 76
		super.setFreeformContent(bullet.getFreeformContent());
77
 
78
		this.expandedBulletDefinition = 
79
			new ExpandedBulletDefinition(bulletDefinition);
99 naveen 80
 
81
		DefinitionsContainer defs = 
82
			Catalog.getInstance().getDefinitionsContainer();
24 naveen 83
 
84
		// Expand enum data object
85
		if(super.getDataObject() instanceof EnumDataObject) {
86
			this.enumerated = true;
87
 
88
			EnumDataObject enumDataObject = 
89
				(EnumDataObject)bullet.getDataObject();
90
 
91
			EnumValue enumValue = 
92
				defs.getEnumValue(enumDataObject.getEnumValueID());
93
 
94
			this.expandedEnumDataObject = new ExpandedEnumDataObject(
95
					enumDataObject, enumValue);
96
		}
97
		else if(super.getDataObject() instanceof CompositeDataObject) {
98
			this.composite = true;
99
		}
100
		else {
101
			this.primitive = true;
102
		}
99 naveen 103
 
104
		// Expand unit ID
105
		if(bullet.getUnitID() != 0L) {
106
			this.unit = defs.getUnit(bullet.getUnitID());
107
		}
24 naveen 108
	}
109
 
110
	/**
111
	 * @return the expandedEnumDataObject
112
	 */
113
	public ExpandedEnumDataObject getExpandedEnumDataObject() {
114
		return expandedEnumDataObject;
115
	}
116
 
117
	/**
118
	 * @return the expandedBulletDefinition
119
	 */
120
	public ExpandedBulletDefinition getExpandedBulletDefinition() {
121
		return expandedBulletDefinition;
122
	}
123
 
124
	/**
73 naveen 125
	 * True, if bullet contains shop2020 primitive structured data
126
	 * 
24 naveen 127
	 * @return the primitive
128
	 */
129
	public boolean isPrimitive() {
130
		return primitive;
131
	}
132
 
133
	/**
73 naveen 134
	 * True, if bullet contains enumerated type structured data
135
	 * 
24 naveen 136
	 * @return the enumerated
137
	 */
138
	public boolean isEnumerated() {
139
		return enumerated;
140
	}
141
 
142
	/**
73 naveen 143
	 * True, if bullet contains composite type structured data
144
	 * 
24 naveen 145
	 * @return the composite
146
	 */
147
	public boolean isComposite() {
148
		return composite;
149
	}
150
 
25 naveen 151
	/**
49 naveen 152
	 * Encapsulates logic to come up with display-able text out of Bullet object
25 naveen 153
	 * 
49 naveen 154
	 * @return String Display-able text
25 naveen 155
	 */
156
	public String displayText() {
157
		String displayText = "";
3314 rajveer 158
		boolean contentAvailable = true;
25 naveen 159
 
160
		// Enumerated
161
		if(this.isEnumerated()) {
162
			displayText = 
163
				this.getExpandedEnumDataObject().getEnumValue().getValue();
164
		}
165
 
166
		// Composite
167
		else if (this.isComposite()) {
168
			CompositeDefinition compositeDef = (CompositeDefinition)
169
				this.expandedBulletDefinition.getDatatypeDefinition();
170
 
171
			String separator = compositeDef.getSeparator();
516 rajveer 172
			separator = " " + separator + " ";
25 naveen 173
			List<PrimitiveDataObject> primitivedataobjects = 
174
				((CompositeDataObject)this.getDataObject()
175
						).getPrimitiveDataObjects();
176
 
177
			for(int i=0;i<primitivedataobjects.size();i++) {
178
				PrimitiveDataObject primitivedataobject = 
179
					primitivedataobjects.get(i);
180
 
181
				displayText += primitivedataobject.getValue();
3314 rajveer 182
 
183
				if(primitivedataobject.getValue().trim().equals("-1")){
9617 amit.gupta 184
					contentAvailable = false;	
3314 rajveer 185
				}
25 naveen 186
 
187
				if(i != (primitivedataobjects.size() - 1)) {
188
					displayText += separator;
189
				}
190
			}
191
 
99 naveen 192
			if(this.getUnit() != null) { 
193
				displayText += " " + this.getUnit().getShortForm();
25 naveen 194
			}
195
		}
196
 
197
		// Primitive
198
		else {
199
			displayText += ((PrimitiveDataObject)this.getDataObject()
200
					).getValue();
3314 rajveer 201
 
202
			if(((PrimitiveDataObject)this.getDataObject()).getValue().trim().equals("-1")){
203
				contentAvailable = contentAvailable && false;	
204
			}
205
 
99 naveen 206
            if (this.getUnit() != null) {
207
				displayText += " " + this.getUnit().getShortForm();
25 naveen 208
            }
209
		}
3314 rajveer 210
 
211
		if(!contentAvailable){
212
			displayText = "Not available";
213
		}
214
 
25 naveen 215
		return displayText;
216
	}
33 naveen 217
 
65 naveen 218
 
219
	/**
220
	 * Encapsulates logic to come up with "value" only part Bullet object
221
	 * 
222
	 * @return String "value" text
223
	 */
224
	public String getValue() {
225
		String value = "";
226
 
227
		// Enumerated
228
		if(this.isEnumerated()) {
243 naveen 229
			ExpandedEnumDataObject expEnumDO = this.getExpandedEnumDataObject();
230
			if(expEnumDO != null) {
231
				EnumValue enumVal = expEnumDO.getEnumValue();
232
				if (enumVal != null) {
233
					value = enumVal.getValue();
234
				}
235
			}
65 naveen 236
		}
237
 
238
		// Composite
239
		else if (this.isComposite()) {
240
			CompositeDefinition compositeDef = (CompositeDefinition)
241
				this.expandedBulletDefinition.getDatatypeDefinition();
242
 
243
			String separator = compositeDef.getSeparator();
244
 
245
			List<PrimitiveDataObject> primitivedataobjects = 
246
				((CompositeDataObject)this.getDataObject()
247
						).getPrimitiveDataObjects();
248
 
249
			for(int i=0;i<primitivedataobjects.size();i++) {
250
				PrimitiveDataObject primitivedataobject = 
251
					primitivedataobjects.get(i);
252
 
253
				value += primitivedataobject.getValue();
254
 
255
				if(i != (primitivedataobjects.size() - 1)) {
256
					value += separator;
257
				}
258
			}
259
		}
260
 
261
		// Primitive
262
		else {
263
			value += ((PrimitiveDataObject)this.getDataObject()).getValue();
264
		}
265
 
266
		return value;
267
	}
268
 
99 naveen 269
	/**
270
	 * @param unit the unit to set
271
	 */
272
	public void setUnit(Unit unit) {
273
		this.unit = unit;
274
	}
275
 
276
	/**
277
	 * @return the unit
278
	 */
279
	public Unit getUnit() {
280
		return unit;
281
	}
282
 
33 naveen 283
	/* (non-Javadoc)
284
	 * @see java.lang.Object#toString()
285
	 */
286
	@Override
287
	public String toString() {
288
		return "ExpandedBullet [composite=" + composite + ", enumerated="
289
				+ enumerated + ", expandedBulletDefinition="
290
				+ expandedBulletDefinition + ", expandedEnumDataObject="
291
				+ expandedEnumDataObject + ", primitive=" + primitive
209 naveen 292
				+ ", unit=" + unit + ", getDataObject()=" + getDataObject()
293
				+ ", getFreeformContent()=" + getFreeformContent() + "]";
33 naveen 294
	}
99 naveen 295
 
24 naveen 296
}