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 {
1050 rajveer 70
		Map<Long, Entity> entities =  CreationUtils.getEntities();
74 naveen 71
 
72
		for(Entity entity : entities.values()) {
73
			ExpandedEntity expEntity = new ExpandedEntity(entity);
74
			String entityName = expEntity.getBrand() + " " + 
75
				expEntity.getModelName() + " " + expEntity.getModelNumber();
76
 
77
			String categoryLabel = expEntity.getCategory().getLabel();
78
			System.out.println(entityName + " (" + categoryLabel + ")");
79
 
80
			List<ExpandedSlide> expSlides = expEntity.getExpandedSlides();
81
 
82
			ExpandedSlide expSlide = null;
83
 
84
			int indent = 1;
85
			int i = 0;
86
			for(;i<this.slideNames.length;i++) {
87
				String slideName = this.slideNames[i];
88
				expSlide = this.getMatchingSlide(expSlides, slideName);
89
 
90
				if(expSlide == null) {
91
					break;
92
				}
93
 
94
				String slideLabel = expSlide.getSlideDefinition().getLabel();
95
				System.out.println(this.indentation[indent] + slideLabel);
96
 
97
				if(!expSlide.hasChildrenSlides()) {
98
					break;
99
				}
100
 
101
				List<ExpandedSlide> expChildrenSlides = 
102
					expSlide.getExpandedChildrenSlides();
103
 
104
				// For next iteration
105
				expSlides = expChildrenSlides;
106
				indent++;
107
			}
108
 
75 naveen 109
			//  && i == this.slideNames.length-1
110
			if(expSlide != null) {
74 naveen 111
				List<ExpandedFeature> expFeatures = 
112
					expSlide.getExpandedFeatures();
113
				indent = indent + 1;
114
				for(ExpandedFeature expFeature : expFeatures) {
115
					if(expFeature.getFeatureDefinition().getLabel().
116
						equalsIgnoreCase(this.featureName)) {
117
 
118
						String featureLabel = 
119
							expFeature.getFeatureDefinition().getLabel();
120
						System.out.println(this.indentation[indent] + 
121
								featureLabel);
122
 
123
						List<ExpandedBullet> expBullets = 
124
							expFeature.getExpandedBullets();
125
 
76 naveen 126
						if(expBullets == null) {
74 naveen 127
							System.out.println(this.indentation[indent+1] + 
76 naveen 128
									"No bullets found");
129
						} 
130
 
131
						else {
132
 
133
							for(ExpandedBullet expBullet : expBullets) {
134
								System.out.println(this.indentation[indent+1] + 
135
										expBullet.displayText());
136
							}
74 naveen 137
						}
138
						break;
139
					}
140
				}
141
			}
142
		}
143
	}
144
 
145
	/**
146
	 * 
147
	 * @param expSlides
148
	 * @return
149
	 */
150
	private ExpandedSlide getMatchingSlide(List<ExpandedSlide> expSlides, 
151
			String slideName) {
152
 
153
		for (ExpandedSlide expSlide : expSlides) {
154
			if(expSlide.getSlideDefinition().getLabel().
155
					equalsIgnoreCase(slideName)) {
156
				return expSlide;
157
			}
158
		}
159
 
160
		return null;
161
	}
162
}