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
	/**
73 naveen 43
	 * True, if bullet contains shop2020 primitive structured data
49 naveen 44
	 */
24 naveen 45
	private boolean primitive;
49 naveen 46
 
47
	/**
73 naveen 48
	 * True, if bullet contains enumerated type structured data
49 naveen 49
	 */
24 naveen 50
	private boolean enumerated;
51
 
52
	/**
73 naveen 53
	 * True, 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
	/**
73 naveen 113
	 * True, if bullet contains shop2020 primitive structured data
114
	 * 
24 naveen 115
	 * @return the primitive
116
	 */
117
	public boolean isPrimitive() {
118
		return primitive;
119
	}
120
 
121
	/**
73 naveen 122
	 * True, if bullet contains enumerated type structured data
123
	 * 
24 naveen 124
	 * @return the enumerated
125
	 */
126
	public boolean isEnumerated() {
127
		return enumerated;
128
	}
129
 
130
	/**
73 naveen 131
	 * True, if bullet contains composite type structured data
132
	 * 
24 naveen 133
	 * @return the composite
134
	 */
135
	public boolean isComposite() {
136
		return composite;
137
	}
138
 
25 naveen 139
	/**
49 naveen 140
	 * Encapsulates logic to come up with display-able text out of Bullet object
25 naveen 141
	 * 
49 naveen 142
	 * @return String Display-able text
25 naveen 143
	 */
144
	public String displayText() {
145
		String displayText = "";
146
 
147
		// Enumerated
148
		if(this.isEnumerated()) {
149
			displayText = 
150
				this.getExpandedEnumDataObject().getEnumValue().getValue();
151
		}
152
 
153
		// Composite
154
		else if (this.isComposite()) {
155
			CompositeDefinition compositeDef = (CompositeDefinition)
156
				this.expandedBulletDefinition.getDatatypeDefinition();
157
 
158
			String separator = compositeDef.getSeparator();
159
 
160
			List<PrimitiveDataObject> primitivedataobjects = 
161
				((CompositeDataObject)this.getDataObject()
162
						).getPrimitiveDataObjects();
163
 
164
			for(int i=0;i<primitivedataobjects.size();i++) {
165
				PrimitiveDataObject primitivedataobject = 
166
					primitivedataobjects.get(i);
167
 
168
				displayText += primitivedataobject.getValue();
169
 
170
				if(i != (primitivedataobjects.size() - 1)) {
171
					displayText += separator;
172
				}
173
			}
174
 
175
			if(this.expandedBulletDefinition.getUnit() != null) { 
176
				displayText += " " + 
177
					this.expandedBulletDefinition.getUnit().getShortForm();
178
			}
179
		}
180
 
181
		// Primitive
182
		else {
183
			displayText += ((PrimitiveDataObject)this.getDataObject()
184
					).getValue();
185
 
186
            if (this.getExpandedBulletDefinition().getUnit() != null) {
187
				displayText += " " + 
188
                	this.getExpandedBulletDefinition().getUnit().getShortForm();
189
            }
190
		}
191
 
192
		return displayText;
193
	}
33 naveen 194
 
65 naveen 195
 
196
	/**
197
	 * Encapsulates logic to come up with "value" only part Bullet object
198
	 * 
199
	 * @return String "value" text
200
	 */
201
	public String getValue() {
202
		String value = "";
203
 
204
		// Enumerated
205
		if(this.isEnumerated()) {
206
			value = this.getExpandedEnumDataObject().getEnumValue().getValue();
207
		}
208
 
209
		// Composite
210
		else if (this.isComposite()) {
211
			CompositeDefinition compositeDef = (CompositeDefinition)
212
				this.expandedBulletDefinition.getDatatypeDefinition();
213
 
214
			String separator = compositeDef.getSeparator();
215
 
216
			List<PrimitiveDataObject> primitivedataobjects = 
217
				((CompositeDataObject)this.getDataObject()
218
						).getPrimitiveDataObjects();
219
 
220
			for(int i=0;i<primitivedataobjects.size();i++) {
221
				PrimitiveDataObject primitivedataobject = 
222
					primitivedataobjects.get(i);
223
 
224
				value += primitivedataobject.getValue();
225
 
226
				if(i != (primitivedataobjects.size() - 1)) {
227
					value += separator;
228
				}
229
			}
230
		}
231
 
232
		// Primitive
233
		else {
234
			value += ((PrimitiveDataObject)this.getDataObject()).getValue();
235
		}
236
 
237
		return value;
238
	}
239
 
33 naveen 240
	/* (non-Javadoc)
241
	 * @see java.lang.Object#toString()
242
	 */
243
	@Override
244
	public String toString() {
245
		return "ExpandedBullet [composite=" + composite + ", enumerated="
246
				+ enumerated + ", expandedBulletDefinition="
247
				+ expandedBulletDefinition + ", expandedEnumDataObject="
248
				+ expandedEnumDataObject + ", primitive=" + primitive
249
				+ ", toString()=" + super.toString() + "]";
250
	}
24 naveen 251
}