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
 
110
			if(expSlide != null && i == this.slideNames.length-1) {
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
 
126
						for(ExpandedBullet expBullet : expBullets) {
127
							System.out.println(this.indentation[indent+1] + 
128
									expBullet.displayText());
129
						}
130
 
131
						break;
132
					}
133
				}
134
			}
135
		}
136
	}
137
 
138
	/**
139
	 * 
140
	 * @param expSlides
141
	 * @return
142
	 */
143
	private ExpandedSlide getMatchingSlide(List<ExpandedSlide> expSlides, 
144
			String slideName) {
145
 
146
		for (ExpandedSlide expSlide : expSlides) {
147
			if(expSlide.getSlideDefinition().getLabel().
148
					equalsIgnoreCase(slideName)) {
149
				return expSlide;
150
			}
151
		}
152
 
153
		return null;
154
	}
155
}