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;
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();
171
 
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()) {
216
			value = this.getExpandedEnumDataObject().getEnumValue().getValue();
217
		}
218
 
219
		// Composite
220
		else if (this.isComposite()) {
221
			CompositeDefinition compositeDef = (CompositeDefinition)
222
				this.expandedBulletDefinition.getDatatypeDefinition();
223
 
224
			String separator = compositeDef.getSeparator();
225
 
226
			List<PrimitiveDataObject> primitivedataobjects = 
227
				((CompositeDataObject)this.getDataObject()
228
						).getPrimitiveDataObjects();
229
 
230
			for(int i=0;i<primitivedataobjects.size();i++) {
231
				PrimitiveDataObject primitivedataobject = 
232
					primitivedataobjects.get(i);
233
 
234
				value += primitivedataobject.getValue();
235
 
236
				if(i != (primitivedataobjects.size() - 1)) {
237
					value += separator;
238
				}
239
			}
240
		}
241
 
242
		// Primitive
243
		else {
244
			value += ((PrimitiveDataObject)this.getDataObject()).getValue();
245
		}
246
 
247
		return value;
248
	}
249
 
99 naveen 250
	/**
251
	 * @param unit the unit to set
252
	 */
253
	public void setUnit(Unit unit) {
254
		this.unit = unit;
255
	}
256
 
257
	/**
258
	 * @return the unit
259
	 */
260
	public Unit getUnit() {
261
		return unit;
262
	}
263
 
33 naveen 264
	/* (non-Javadoc)
265
	 * @see java.lang.Object#toString()
266
	 */
267
	@Override
268
	public String toString() {
269
		return "ExpandedBullet [composite=" + composite + ", enumerated="
270
				+ enumerated + ", expandedBulletDefinition="
271
				+ expandedBulletDefinition + ", expandedEnumDataObject="
272
				+ expandedEnumDataObject + ", primitive=" + primitive
209 naveen 273
				+ ", unit=" + unit + ", getDataObject()=" + getDataObject()
274
				+ ", getFreeformContent()=" + getFreeformContent() + "]";
33 naveen 275
	}
99 naveen 276
 
24 naveen 277
}