Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
74 naveen 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.util;
5
 
6
import in.shop2020.metamodel.core.Entity;
7
import in.shop2020.metamodel.definitions.Catalog;
8
import in.shop2020.metamodel.definitions.EntityContainer;
9
import java.util.List;
10
import java.util.Map;
11
 
12
/**
13
 * Utility to query data from Entities DB
14
 * 
15
 * Usage: {Slide Name1, Child Slide Name, Child's Child Slide Name...} {Feature Name}
16
 * @author naveen
17
 *
18
 */
19
public class QRY {
20
 
21
	/**
22
	 * @param args
23
	 * @throws Exception 
24
	 */
25
	public static void main(String[] args) throws Exception {
26
		if(args.length < 1) {
27
			System.out.println("Usage: {Slide Name1, Child Slide Name, " + 
28
					"Child's Child Slide Name...} {Feature Name}");
29
			System.exit(-1);
30
		}
31
 
32
		QRY qry = new QRY(args);
33
		qry.exec();
34
	}
35
 
36
	private String[] slideNames;
37
	private String featureName;
38
 
39
 
40
	/**
41
	 * Level - 4, 8, 12, 16
42
	 */
43
	private String[] indentation = {"", "    ", "        ", "            ", 
44
			"                ", "                    ", 
45
			"                        "};
46
 
47
	/**
48
	 * 
49
	 * @param args
50
	 */
51
	public QRY(String[] args) {
52
		if(args.length == 1) {
53
			this.slideNames = new String[] { args[0] };
54
		}
55
		else {
56
			this.featureName = args[args.length-1];
57
 
58
			this.slideNames = new String[args.length-1];
59
			for(int i=0;i<args.length-1;i++) {
60
				this.slideNames[i] = args[i];
61
			}
62
		}
63
	}
64
 
65
	/**
66
	 * @throws Exception 
67
	 * 
68
	 */
69
	public void exec() throws Exception {
70
		EntityContainer ents = Catalog.getInstance().getEntityContainer();
71
		Map<Long, Entity> entities =  ents.getEntities();
72
 
73
		for(Entity entity : entities.values()) {
74
			ExpandedEntity expEntity = new ExpandedEntity(entity);
75
			String entityName = expEntity.getBrand() + " " + 
76
				expEntity.getModelName() + " " + expEntity.getModelNumber();
77
 
78
			String categoryLabel = expEntity.getCategory().getLabel();
79
			System.out.println(entityName + " (" + categoryLabel + ")");
80
 
81
			List<ExpandedSlide> expSlides = expEntity.getExpandedSlides();
82
 
83
			ExpandedSlide expSlide = null;
84
 
85
			int indent = 1;
86
			int i = 0;
87
			for(;i<this.slideNames.length;i++) {
88
				String slideName = this.slideNames[i];
89
				expSlide = this.getMatchingSlide(expSlides, slideName);
90
 
91
				if(expSlide == null) {
92
					break;
93
				}
94
 
95
				String slideLabel = expSlide.getSlideDefinition().getLabel();
96
				System.out.println(this.indentation[indent] + slideLabel);
97
 
98
				if(!expSlide.hasChildrenSlides()) {
99
					break;
100
				}
101
 
102
				List<ExpandedSlide> expChildrenSlides = 
103
					expSlide.getExpandedChildrenSlides();
104
 
105
				// For next iteration
106
				expSlides = expChildrenSlides;
107
				indent++;
108
			}
109
 
75 naveen 110
			//  && i == this.slideNames.length-1
111
			if(expSlide != null) {
74 naveen 112
				List<ExpandedFeature> expFeatures = 
113
					expSlide.getExpandedFeatures();
114
				indent = indent + 1;
115
				for(ExpandedFeature expFeature : expFeatures) {
116
					if(expFeature.getFeatureDefinition().getLabel().
117
						equalsIgnoreCase(this.featureName)) {
118
 
119
						String featureLabel = 
120
							expFeature.getFeatureDefinition().getLabel();
121
						System.out.println(this.indentation[indent] + 
122
								featureLabel);
123
 
124
						List<ExpandedBullet> expBullets = 
125
							expFeature.getExpandedBullets();
126
 
76 naveen 127
						if(expBullets == null) {
74 naveen 128
							System.out.println(this.indentation[indent+1] + 
76 naveen 129
									"No bullets found");
130
						} 
131
 
132
						else {
133
 
134
							for(ExpandedBullet expBullet : expBullets) {
135
								System.out.println(this.indentation[indent+1] + 
136
										expBullet.displayText());
137
							}
74 naveen 138
						}
139
						break;
140
					}
141
				}
142
			}
143
		}
144
	}
145
 
146
	/**
147
	 * 
148
	 * @param expSlides
149
	 * @return
150
	 */
151
	private ExpandedSlide getMatchingSlide(List<ExpandedSlide> expSlides, 
152
			String slideName) {
153
 
154
		for (ExpandedSlide expSlide : expSlides) {
155
			if(expSlide.getSlideDefinition().getLabel().
156
					equalsIgnoreCase(slideName)) {
157
				return expSlide;
158
			}
159
		}
160
 
161
		return null;
162
	}
163
}