Subversion Repositories SmartDukaan

Rev

Rev 516 | Rev 3314 | Go to most recent revision | 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 = "";
158
 
159
		// Enumerated
160
		if(this.isEnumerated()) {
161
			displayText = 
162
				this.getExpandedEnumDataObject().getEnumValue().getValue();
163
		}
164
 
165
		// Composite
166
		else if (this.isComposite()) {
167
			CompositeDefinition compositeDef = (CompositeDefinition)
168
				this.expandedBulletDefinition.getDatatypeDefinition();
169
 
170
			String separator = compositeDef.getSeparator();
516 rajveer 171
			separator = " " + separator + " ";
25 naveen 172
			List<PrimitiveDataObject> primitivedataobjects = 
173
				((CompositeDataObject)this.getDataObject()
174
						).getPrimitiveDataObjects();
175
 
176
			for(int i=0;i<primitivedataobjects.size();i++) {
177
				PrimitiveDataObject primitivedataobject = 
178
					primitivedataobjects.get(i);
179
 
180
				displayText += primitivedataobject.getValue();
181
 
182
				if(i != (primitivedataobjects.size() - 1)) {
183
					displayText += separator;
184
				}
185
			}
186
 
99 naveen 187
			if(this.getUnit() != null) { 
188
				displayText += " " + this.getUnit().getShortForm();
25 naveen 189
			}
190
		}
191
 
192
		// Primitive
193
		else {
194
			displayText += ((PrimitiveDataObject)this.getDataObject()
195
					).getValue();
196
 
99 naveen 197
            if (this.getUnit() != null) {
198
				displayText += " " + this.getUnit().getShortForm();
25 naveen 199
            }
200
		}
201
 
202
		return displayText;
203
	}
33 naveen 204
 
65 naveen 205
 
206
	/**
207
	 * Encapsulates logic to come up with "value" only part Bullet object
208
	 * 
209
	 * @return String "value" text
210
	 */
211
	public String getValue() {
212
		String value = "";
213
 
214
		// Enumerated
215
		if(this.isEnumerated()) {
243 naveen 216
			ExpandedEnumDataObject expEnumDO = this.getExpandedEnumDataObject();
217
			if(expEnumDO != null) {
218
				EnumValue enumVal = expEnumDO.getEnumValue();
219
				if (enumVal != null) {
220
					value = enumVal.getValue();
221
				}
222
			}
65 naveen 223
		}
224
 
225
		// Composite
226
		else if (this.isComposite()) {
227
			CompositeDefinition compositeDef = (CompositeDefinition)
228
				this.expandedBulletDefinition.getDatatypeDefinition();
229
 
230
			String separator = compositeDef.getSeparator();
231
 
232
			List<PrimitiveDataObject> primitivedataobjects = 
233
				((CompositeDataObject)this.getDataObject()
234
						).getPrimitiveDataObjects();
235
 
236
			for(int i=0;i<primitivedataobjects.size();i++) {
237
				PrimitiveDataObject primitivedataobject = 
238
					primitivedataobjects.get(i);
239
 
240
				value += primitivedataobject.getValue();
241
 
242
				if(i != (primitivedataobjects.size() - 1)) {
243
					value += separator;
244
				}
245
			}
246
		}
247
 
248
		// Primitive
249
		else {
250
			value += ((PrimitiveDataObject)this.getDataObject()).getValue();
251
		}
252
 
253
		return value;
254
	}
255
 
99 naveen 256
	/**
257
	 * @param unit the unit to set
258
	 */
259
	public void setUnit(Unit unit) {
260
		this.unit = unit;
261
	}
262
 
263
	/**
264
	 * @return the unit
265
	 */
266
	public Unit getUnit() {
267
		return unit;
268
	}
269
 
33 naveen 270
	/* (non-Javadoc)
271
	 * @see java.lang.Object#toString()
272
	 */
273
	@Override
274
	public String toString() {
275
		return "ExpandedBullet [composite=" + composite + ", enumerated="
276
				+ enumerated + ", expandedBulletDefinition="
277
				+ expandedBulletDefinition + ", expandedEnumDataObject="
278
				+ expandedEnumDataObject + ", primitive=" + primitive
209 naveen 279
				+ ", unit=" + unit + ", getDataObject()=" + getDataObject()
280
				+ ", getFreeformContent()=" + getFreeformContent() + "]";
33 naveen 281
	}
99 naveen 282
 
24 naveen 283
}