Subversion Repositories SmartDukaan

Rev

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