Subversion Repositories SmartDukaan

Rev

Rev 81 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 81 Rev 82
Line 1... Line 1...
1
/**
1
/**
2
 * 
2
 * 
3
 */
3
 */
4
package in.shop2020.util;
4
package in.shop2020.util;
5
 
5
 
6
import in.shop2020.metamodel.core.Bullet;
-
 
7
import in.shop2020.metamodel.core.Entity;
6
import in.shop2020.metamodel.core.Entity;
8
import in.shop2020.metamodel.core.Feature;
7
import in.shop2020.metamodel.core.Feature;
9
import in.shop2020.metamodel.core.PrimitiveDataObject;
-
 
10
import in.shop2020.metamodel.core.Slide;
8
import in.shop2020.metamodel.core.Slide;
11
import in.shop2020.metamodel.definitions.Catalog;
9
import in.shop2020.metamodel.definitions.Catalog;
12
import in.shop2020.metamodel.definitions.Category;
10
import in.shop2020.metamodel.definitions.Category;
13
import in.shop2020.metamodel.definitions.DefinitionsContainer;
11
import in.shop2020.metamodel.definitions.DefinitionsContainer;
14
import in.shop2020.metamodel.definitions.EntityContainer;
12
import in.shop2020.metamodel.definitions.EntityContainer;
-
 
13
import in.shop2020.metamodel.definitions.FacetDefinition;
15
import in.shop2020.metamodel.definitions.FeatureDefinition;
14
import in.shop2020.metamodel.definitions.FeatureDefinition;
16
import in.shop2020.metamodel.definitions.SlideDefinition;
15
import in.shop2020.metamodel.definitions.SlideDefinition;
17
import in.shop2020.metamodel.util.ExpandedBullet;
16
import in.shop2020.metamodel.util.ExpandedBullet;
18
import in.shop2020.metamodel.util.ExpandedCategoryFacetDefinition;
17
import in.shop2020.metamodel.util.ExpandedCategoryFacetDefinition;
19
import in.shop2020.metamodel.util.ExpandedEntity;
18
import in.shop2020.metamodel.util.ExpandedEntity;
-
 
19
import in.shop2020.metamodel.util.ExpandedFacetDefinition;
20
import in.shop2020.metamodel.util.ExpandedFacetRuleDefinition;
20
import in.shop2020.metamodel.util.ExpandedFacetRuleDefinition;
21
import in.shop2020.metamodel.util.ExpandedFeature;
21
import in.shop2020.metamodel.util.ExpandedFeature;
22
import in.shop2020.metamodel.util.ExpandedSlide;
22
import in.shop2020.metamodel.util.ExpandedSlide;
23
 
23
 
24
import java.util.ArrayList;
24
import java.util.ArrayList;
25
import java.util.List;
25
import java.util.List;
-
 
26
import java.util.Map;
26
 
27
 
27
import org.apache.commons.lang.ArrayUtils;
28
import org.apache.commons.lang.ArrayUtils;
28
import org.apache.commons.lang.StringEscapeUtils;
29
import org.apache.commons.lang.StringEscapeUtils;
29
import org.apache.commons.lang.StringUtils;
30
import org.apache.commons.lang.StringUtils;
30
 
31
 
Line 109... Line 110...
109
	/**
110
	/**
110
	 * 
111
	 * 
111
	 * @throws Exception
112
	 * @throws Exception
112
	 */
113
	 */
113
	public void exportIRMetaData() throws Exception {
114
	public void exportIRMetaData() throws Exception {
114
		/*
-
 
115
		DefinitionsContainer defs = 
115
		DefinitionsContainer defs = 
116
			Catalog.getInstance().getDefinitionsContainer();
116
			Catalog.getInstance().getDefinitionsContainer();
117
		
-
 
118
		EntityContainer ents = 
-
 
119
			Catalog.getInstance().getEntityContainer();
-
 
120
		*/
117
				
121
		
-
 
122
		// <IRMetaData>
118
		// <IRMetaData>
123
		List<String> entityXMLSnippets = new ArrayList<String>();
119
		List<String> xmlSnippets = new ArrayList<String>();
124
		entityXMLSnippets.add("<IRMetaData>");
120
		xmlSnippets.add("<IRMetaData>");
125
		
121
		
126
		// Hard coded Brand facet
-
 
127
		// REVISIT - May be moving it into Python is better idea
-
 
128
		//String brandIRMetaData = this.getBrandIRMetaData();
-
 
129
		//entityXMLSnippets.add(brandIRMetaData);
122
		IRMetaDataJythonWrapper jy = new IRMetaDataJythonWrapper();
130
		
123
		
131
		// Iterate over all facet definitions
124
		// Iterate over all facet definitions
-
 
125
		Map<Long, FacetDefinition> facetDefs = defs.getFacetDefinitions();
-
 
126
		for(FacetDefinition facetDef : facetDefs.values()) {
132
		// TODO
127
			
-
 
128
			jy.reset();
-
 
129
			jy.initialize();
-
 
130
 
-
 
131
			ExpandedFacetDefinition expFacetDef = 
-
 
132
				new ExpandedFacetDefinition(facetDef);
-
 
133
			
-
 
134
			jy.setExpandedFacetDefinition(expFacetDef);
-
 
135
			
-
 
136
			jy.executeRule();
-
 
137
			
-
 
138
			String facetXMLSnip = jy.getXMLSnippet();
-
 
139
			Utils.info("facetXMLSnip=" + facetXMLSnip);
-
 
140
			
-
 
141
			xmlSnippets.add(facetXMLSnip);
-
 
142
		}
133
		
143
		
134
		// Iterate over all feature definitions
144
		// Iterate over all feature definitions
135
		// TODO
145
		// TODO
136
		
146
		
137
		// </IRMetaData>
147
		// </IRMetaData>
138
		entityXMLSnippets.add("</IRMetaData>");
148
		xmlSnippets.add("</IRMetaData>");
139
		
149
		
140
		String irMetaDataXML = StringUtils.join(entityXMLSnippets, "\n");
150
		String irMetaDataXML = StringUtils.join(xmlSnippets, "\n");
141
		Utils.info(irMetaDataXML);
151
		Utils.info(irMetaDataXML);
142
		
152
		
143
		// Write it to file
153
		// Write it to file
144
		String irMetaDataFilename = Utils.EXPORT_IR_PATH + "irmetadata.xml";
154
		String irMetaDataFilename = Utils.EXPORT_IR_PATH + "irmetadata.xml";
145
		DBUtils.store(irMetaDataXML, irMetaDataFilename);
155
		DBUtils.store(irMetaDataXML, irMetaDataFilename);
146
	}
156
	}
147
	
157
	
148
	/**
158
	/**
149
	 * 
-
 
150
	 * @return
-
 
151
	 * @throws Exception 
-
 
152
	 */
-
 
153
	private String getBrandIRMetaData() throws Exception {
-
 
154
		EntityContainer ents = 
-
 
155
			Catalog.getInstance().getEntityContainer();
-
 
156
		
-
 
157
		List<String> brandXMLSnippets = new ArrayList<String>();
-
 
158
		
-
 
159
		// <Facet>
-
 
160
		brandXMLSnippets.add("\t<Facet>");
-
 
161
		
-
 
162
		List<Bullet> brandBullets =  
-
 
163
			ents.getLearnedBullets(Utils.BRAND_FEATURE_DEFINITION_ID);
-
 
164
		
-
 
165
		brandXMLSnippets.add("\t\t<FacetDefinitionID>" + 
-
 
166
				Utils.BRAND_FACET_DEFINITION_ID + "</FacetDefinitionID>");
-
 
167
 
-
 
168
		brandXMLSnippets.add("\t\t<Label>Brand</Label>");
-
 
169
		brandXMLSnippets.add("\t\t<IsMultivalue>false</IsMultivalue>");
-
 
170
		brandXMLSnippets.add("\t\t<HierarchyType>Flat</HierarchyType>");
-
 
171
		brandXMLSnippets.add("\t\t<NullBehavior>Reject</NullBehavior>");
-
 
172
		brandXMLSnippets.add("\t\t<Datatype>string</Datatype>");
-
 
173
		
-
 
174
		brandXMLSnippets.add("\t\t<FacetValues>");
-
 
175
		for(Bullet bullet : brandBullets) {
-
 
176
			PrimitiveDataObject pDO = 
-
 
177
				(PrimitiveDataObject)bullet.getDataObject();
-
 
178
 
-
 
179
			brandXMLSnippets.add("\t\t\t<FacetValue>");
-
 
180
			brandXMLSnippets.add("\t\t\t\t<Value>" + pDO.getValue() + 
-
 
181
					"</Value>");
-
 
182
			
-
 
183
			brandXMLSnippets.add("\t\t\t</FacetValue>");
-
 
184
		}
-
 
185
		
-
 
186
		brandXMLSnippets.add("\t\t</FacetValues>");
-
 
187
		
-
 
188
		// </Facet>
-
 
189
		brandXMLSnippets.add("\t</Facet>");
-
 
190
		
-
 
191
		String brandIRMetaDataXML = StringUtils.join(brandXMLSnippets, "\n");
-
 
192
		Utils.info(brandIRMetaDataXML);
-
 
193
		
-
 
194
		return brandIRMetaDataXML;
-
 
195
	}
-
 
196
 
-
 
197
	
-
 
198
	/**
-
 
199
	 * @throws Exception 
159
	 * @throws Exception 
200
	 * 
160
	 * 
201
	 */
161
	 */
202
	public void exportIRData() throws Exception {
162
	public void exportIRData() throws Exception {
203
		DefinitionsContainer defs = 
163
		DefinitionsContainer defs = 
Line 315... Line 275...
315
			Catalog.getInstance().getEntityContainer();
275
			Catalog.getInstance().getEntityContainer();
316
		
276
		
317
		IRDataJythonWrapper jw = new IRDataJythonWrapper();
277
		IRDataJythonWrapper jw = new IRDataJythonWrapper();
318
		
278
		
319
		jw.setExpandedEntity(expEntity);
279
		jw.setExpandedEntity(expEntity);
320
		jw.setExpandedFacetDefinition(expFacetRuleDef);
280
		jw.setExpandedFacetRuleDefinition(expFacetRuleDef);
321
		
281
		
322
		// Set FeatureDefinition
282
		// Set FeatureDefinition
323
		FeatureDefinition featureDef = 
283
		FeatureDefinition featureDef = 
324
			expFacetRuleDef.getFeatureDefinition();
284
			expFacetRuleDef.getFeatureDefinition();
325
		
285
		
Line 354... Line 314...
354
			
314
			
355
			jw.setExpandedSlide(expSlide);
315
			jw.setExpandedSlide(expSlide);
356
		}
316
		}
357
		
317
		
358
		// Execute Python script
318
		// Execute Python script
359
		jw.execIRDataRule();
319
		jw.executeRule();
360
		
320
		
361
		// Parse returned Python list
321
		// Parse returned Python list
362
		List<Object> values = (List<Object>)jw.getValues();
322
		List<Object> values = (List<Object>)jw.getValues();
363
		Utils.info("values=" + values);
323
		Utils.info("values=" + values);
364
		
324