Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
457 rajveer 1
package in.shop2020.util;
2
 
479 rajveer 3
import java.io.BufferedOutputStream;
791 rajveer 4
import java.io.BufferedReader;
479 rajveer 5
import java.io.BufferedWriter;
791 rajveer 6
import java.io.DataInputStream;
479 rajveer 7
import java.io.File;
791 rajveer 8
import java.io.FileInputStream;
479 rajveer 9
import java.io.FileWriter;
791 rajveer 10
import java.io.InputStreamReader;
479 rajveer 11
import java.util.ArrayList;
12
import java.util.HashMap;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.StringTokenizer;
791 rajveer 16
import java.util.TreeMap;
479 rajveer 17
 
18
import in.shop2020.metamodel.core.Entity;
19
import in.shop2020.metamodel.core.FreeformContent;
20
import in.shop2020.metamodel.core.Media;
21
import in.shop2020.metamodel.core.Slide;
580 rajveer 22
import in.shop2020.metamodel.definitions.BulletDefinition;
457 rajveer 23
import in.shop2020.metamodel.definitions.Catalog;
580 rajveer 24
import in.shop2020.metamodel.definitions.Category;
25
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
457 rajveer 26
import in.shop2020.metamodel.definitions.DefinitionsContainer;
27
import in.shop2020.metamodel.definitions.EntityContainer;
580 rajveer 28
import in.shop2020.metamodel.definitions.FeatureDefinition;
29
import in.shop2020.metamodel.definitions.SlideDefinition;
30
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
479 rajveer 31
import in.shop2020.metamodel.util.CreationUtils;
32
//import in.shop2020.metamodel.util.OldCreationUtils;
1050 rajveer 33
import in.shop2020.metamodel.util.OldCreationUtils;
457 rajveer 34
 
580 rajveer 35
 
457 rajveer 36
/*
37
 * @author rajveer 
38
 * 
39
 *
40
 */
41
 
42
public class ContentMigrator {
43
	private String sourceDbPath;
44
	private String destinationDbPath;
45
 
46
	public static void main(String[] args) throws Exception {
47
		String usage = "Usage: ContentMigrator {source db path}{destination db path}";
48
 
49
		String sourceDbPath = null, destinationDbPath = null;
50
		if(args.length < 2) {
51
			System.out.println(usage);
52
			System.exit(-1);
53
		}else{
54
			sourceDbPath = args[0];
55
			destinationDbPath = args[1];
56
		}
57
 
791 rajveer 58
		ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);
1050 rajveer 59
		//contentmigrator.makeEntitiesObject();
60
		System.out.println(OldCreationUtils.getSlideSequence(1000194));
61
		List<Slide> slides =  OldCreationUtils.getEntity(1000194).getSlides();
62
		for(Slide slide: slides){
63
			System.out.println(slide.getSlideDefinitionID());
64
		}
65
 
580 rajveer 66
		//ContentMigrator contentmigrator = new ContentMigrator(sourceDbPath, destinationDbPath);
67
		//boolean result = contentmigrator.migrate();
68
		//System.out.println("Content migration status:  "+ result);
457 rajveer 69
	}
70
 
71
	public ContentMigrator(String sourceDbPath, String destinationDbPath) {
72
		this.sourceDbPath = sourceDbPath;
73
		this.destinationDbPath = destinationDbPath;
74
	}
473 rajveer 75
	/**
76
	 * this function will read source definition and source entities, and will convert
77
	 * source entities to destination entities according to destination definitions.  
78
	 * 
79
	 * @return boolean
479 rajveer 80
	 * @throws Exception 
473 rajveer 81
	 */
580 rajveer 82
 
479 rajveer 83
	public boolean migrate() throws Exception{
580 rajveer 84
	/*	 
473 rajveer 85
		DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
86
		DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
87
		EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
88
		EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
89
 
479 rajveer 90
		Map<Long, Entity> entities = sourceEnts.getEntities();
473 rajveer 91
 
479 rajveer 92
		File f = new File("/home/rajveer/Desktop/info.txt");
93
		FileWriter fstream = new FileWriter(f);
94
        BufferedWriter out = new BufferedWriter(fstream);
95
        StringBuilder sb = new StringBuilder();
96
 
97
 
98
		for(Entity entity: entities.values()){
99
			List<Slide> slides = entity.getSlides();
100
 
101
			//List<String> vidLabels = CreationUtils.getMediaLabels(entity.getID(),"youtube");
102
			//List<String> imgLabels = CreationUtils.getMediaLabels(entity.getID(),"image");
103
 
104
			//Map<String, Media> rawMedia = CreationUtils.getRawMedia(entity.getID());
105
 
106
 
107
//			List<String> vidLabels = OldCreationUtils.getMediaLabels(entity.getID(),"youtube");
108
//			List<String> imgLabels = OldCreationUtils.getMediaLabels(entity.getID(),"image");
109
 
110
			Entity newEntity = new Entity(entity.getID(), entity.getCategoryID());
111
			newEntity.setBrand(entity.getBrand());
112
			newEntity.setModelName(entity.getModelName());
113
			newEntity.setModelNumber(entity.getModelNumber());
114
 
115
 
116
			Map<String, in.shop2020.creation.util.Media> rawMedia = OldCreationUtils.getRawMedia(entity.getID());
117
 
118
			Map<String, Media> newrawMedia = new HashMap<String, Media>();
119
 
120
 
121
			int totalRawVideos = 0;
122
			int totalRawImages = 0;
123
 
124
			if(rawMedia!=null){
125
				for(String label: rawMedia.keySet()){
126
					in.shop2020.creation.util.Media media = rawMedia.get(label);
127
 
128
					label = media.getLabel();
129
					String type = media.getType();
130
					String location = media.getLocation();
131
 
132
					Media newMedia = new Media(label, type, location);
133
 
134
					newMedia.setTitle("Title");
135
					if(type.equals("image")){
136
						totalRawImages++;
137
						newMedia.setFileName(media.getFileName());
138
						newMedia.setVideoType("");
139
					}else{
140
						totalRawVideos++;
141
						newMedia.setVideoType("withoutskin");
142
						newMedia.setFileName("");
143
					}
144
 
145
					newrawMedia.put(label, newMedia);
146
					System.out.println("old " + media.toString());
147
	//				System.out.println("new " + newMedia.toString());
148
	//				OldCreationUtils.removeMedia(entity.getID(), label);
580 rajveer 149
	//				CreationUtils.addMedia(entity.getID(), newMedia);
479 rajveer 150
				}
151
			}
152
 
153
			int totalVideos = 0;
154
			int totalImages = 0;
580 rajveer 155
			if(rawMedia==null){
479 rajveer 156
			for(Slide slide: slides ){
580 rajveer 157
			*/
158
				/*
479 rajveer 159
				FreeformContent ffc = slide.getFreeformContent();
160
				List<String> vidList = new ArrayList<String>();
161
				List<String> imgList = new ArrayList<String>();
162
 
163
				if(ffc!=null){
164
					List<String> vidFfcLabels = ffc.getYoutubeRefs();
165
					if(vidFfcLabels!=null){
166
						for(String vidFfcLabel: vidFfcLabels){
167
							StringTokenizer strTkn = new StringTokenizer(vidFfcLabel,"~!~");
168
							String vidLabel = null;
169
							if(strTkn.hasMoreTokens()){
170
								vidLabel = strTkn.nextToken();
171
								vidList.add(vidFfcLabel);
172
 
173
//								ffc.removeMedia("youtube", vidFfcLabel);
174
//								ffc.addMedia("youtube", vidLabel);
175
							}
176
							if(vidLabel == null){
177
								System.out.println("Something is really breaking .. bu ha ha !!!");
178
							}
179
							totalVideos++;
180
						}
181
					}
182
					List<String> imgFfcLabels = ffc.getImageRefs();
183
					if(imgFfcLabels!=null){
184
						for(String imgFfcLabel: imgFfcLabels){
185
							StringTokenizer strTkn = new StringTokenizer(imgFfcLabel,"~!~");
186
							String imgLabel = null;
187
							if(strTkn.hasMoreTokens()){
188
								imgLabel = strTkn.nextToken();
189
								imgList.add(imgFfcLabel);
190
 
191
//								ffc.removeMedia("image", imgFfcLabel);
192
//								ffc.addMedia("image", imgLabel);							
193
							}
194
							if(imgLabel == null){
195
								System.out.println("Something is really breaking .. bu ha ha !!!");
196
							}
197
							totalImages++;
198
						}
199
					}
200
 
201
					for(String vidlab : vidList){
202
						ffc.removeMedia("youtube", vidlab);
203
						ffc.addMedia("youtube", (new StringTokenizer(vidlab, "~!~")).nextToken());
204
					}
205
					for(String imglab : imgList){
206
						ffc.removeMedia("image",imglab);
207
						ffc.addMedia("image", (new StringTokenizer(imglab, "~!~")).nextToken());
208
					}
209
					slide.setFreeformContent(ffc);
210
					System.out.println("Slide id is " + slide.getSlideDefinitionID() + "   vid labels:  " + vidFfcLabels + "   img labels" + imgFfcLabels);
211
				}
580 rajveer 212
			*/
213
		/*
479 rajveer 214
				newEntity.addSlide(slide);
215
			}
216
 
580 rajveer 217
//			System.out.println("entity:"+ entity.getID() + ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos +":ti:" + totalImages);
218
//			sb.append("entity:"+ entity.getID() + ":trv:" + totalRawVideos + ":tri:" + totalRawImages +":tv:" + totalVideos +":ti:" + totalImages+ ":tr:" +(totalRawVideos+totalRawImages) + ":t:" +(totalVideos+totalImages) + ":vd:" +(totalRawVideos-totalVideos) + ":id:" +(totalRawImages-totalImages) + "\n");
219
			sb.append(entity.getID() + "\n");		
220
 
221
 
479 rajveer 222
			destinationEnts.updateEntity(newEntity);
223
			CreationUtils.storeEntity(newEntity);
224
 
225
			Map<Long, List<Entity>> entitiesByCategory = 
226
				sourceEnts.getEntitiesbyCategory();
227
 
580 rajveer 228
			Map<Long, Entity> xentities = destinationEnts.getEntities();
479 rajveer 229
 
230
			CreationUtils.rewriteRepository(xentities, entitiesByCategory);
580 rajveer 231
			}
232
			else{
233
				sb.append("				" + entity.getID() + "\n");
234
			}
479 rajveer 235
		}
236
 
237
 
238
		out.write(sb.toString());
239
		out.close();
240
		*/
457 rajveer 241
		return true;
242
	}
580 rajveer 243
 
791 rajveer 244
	private boolean makeEntitiesObject() throws Exception{
245
		//DefinitionsContainer sourceDefs = new DefinitionsContainer(sourceDbPath);
246
		//DefinitionsContainer destinationDefs = new DefinitionsContainer(destinationDbPath);
247
		EntityContainer sourceEnts = new EntityContainer(sourceDbPath);
248
		//EntityContainer destinationEnts = new EntityContainer(destinationDbPath);
249
 
250
	/*
251
		Map<Long, List<Entity>> catEntities = sourceEnts.getEntitiesbyCategory();
252
 
253
		Map<Long, Entity> entities = sourceEnts.getEntities();
254
		for(Long catId: catEntities.keySet()){
255
			List<Entity> ents = catEntities.get(catId);
256
			for(Entity entity: ents){
257
				entities.put(entity.getID(), entity);
258
				System.out.println(entity.getID() + ":"  + entity.getCategoryID() + ":"+  entity.getBrand() + " "+ entity.getModelName() + " " + entity.getModelNumber());
259
			}
260
		}
261
 
262
		*/
263
 
264
		Map<Long, List<Entity>> catEntities = new TreeMap<Long, List<Entity>>();
265
		Map<Long, Entity> entities = new TreeMap<Long, Entity>();
266
 
267
	    FileInputStream fstream = new FileInputStream("/home/rajveer/Desktop/1");
268
	    DataInputStream in = new DataInputStream(fstream);
269
	    BufferedReader br = new BufferedReader(new InputStreamReader(in));
270
	    String strLine;
271
 
272
	    while ((strLine = br.readLine()) != null)   {
273
	    	long entityID = Long.parseLong(strLine);
274
	    	String entityDBFile = sourceDbPath + "entities" + File.separator + entityID +"/entity.ser";
275
	    	System.out.println (entityDBFile);
276
	    	Entity entity =  (Entity)DBUtils.read(entityDBFile);
277
	    	entities.put(entityID, entity);
278
 
279
	    	List<Entity> catent = catEntities.get(entity.getCategoryID());
280
	    	if(catent == null){
281
	    		catent = new ArrayList<Entity>();
282
	    	}
283
	    	catent.add(entity);
284
	    	catEntities.put(entity.getCategoryID(), catent);
285
	    }
286
	    in.close();
287
 
288
 
289
 
290
 
291
 
292
		String entitiesDBFile = sourceDbPath + "entities" + File.separator + "entities.ser";
293
		String entitiesbycategoryDBFile = sourceDbPath + "entities" + File.separator + "entitiesbycategory.ser";
294
 
295
		DBUtils.delete(entitiesDBFile);
296
		DBUtils.store(entities, entitiesDBFile);
297
 
298
		// Remove existing
299
		DBUtils.delete(entitiesbycategoryDBFile);
300
		DBUtils.store(catEntities, entitiesbycategoryDBFile);
301
 
302
		return false;
303
 
304
	}
305
 
580 rajveer 306
	private boolean printDataModel() throws Exception{
307
		DefinitionsContainer dfc = Catalog.getInstance().getDefinitionsContainer();
308
 
309
		Map<Long, Category> categories = dfc.getCategories();
310
		for(Category category: categories.values()){
311
			if(category.getChildrenCategory() != null){
312
				continue;
313
			}
314
			System.out.println(category.getLabel());
315
			List<CategorySlideDefinition> slideDefs =  dfc.getCategorySlideDefinitions(category.getID());
316
			for(CategorySlideDefinition slideDef: slideDefs){
317
				System.out.println("	"+ dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getLabel() +  "	" + slideDef.getEditorialImportance());
318
				//List<FeatureDefinition> featureDefs = dfc.getFeatureDefinitions(slideDef.getSlideDefintionID());
319
 
320
				List<SlideFeatureDefinition> slideFeatureDefs = dfc.getSlideDefinition(slideDef.getSlideDefintionID()).getSlideFeatureDefinitions();
321
 
322
				for(SlideFeatureDefinition slideFeatureDef: slideFeatureDefs){
323
					FeatureDefinition featureDef = dfc.getFeatureDefinition(slideFeatureDef.getFeatureDefintionID());
324
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
325
					System.out.println("			" + slideFeatureDef.getEditorialImportance() + "	" + featureDef.getLabel() + " 	" +  featureDef.allowsBlank() + "	" + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
326
					List<Long> units = bulletDef.getUnitIDs();
327
					if(units!=null){
328
						for(Long unit: units){
329
							System.out.println("									"+ dfc.getUnit(unit).getFullForm() + "	"+ dfc.getUnit(unit).getShortForm());
330
						}
331
					}
332
					if(bulletDef.getDatatypeDefinitionID()!=null){
333
						System.out.println("											"  + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
334
 
335
					}
336
 
337
				}
338
 
339
				/*
340
				for(FeatureDefinition featureDef: featureDefs){
341
					BulletDefinition bulletDef = featureDef.getBulletDefinition();
342
					System.out.println("			" + featureDef.getLabel() + " 	" +  featureDef.allowsBlank() + "	" + bulletDef.isLearned() + "	" + bulletDef.isMultivalue());
343
					List<Long> units = bulletDef.getUnitIDs();
344
					if(units!=null){
345
						for(Long unit: units){
346
							System.out.println("								"+ dfc.getUnit(unit).getFullForm() + "	"+ dfc.getUnit(unit).getShortForm());
347
						}
348
					}
349
					if(bulletDef.getDatatypeDefinitionID()!=null){
350
						System.out.println("										"  + dfc.getDatatypeDefinition(bulletDef.getDatatypeDefinitionID()).getName());
351
 
352
					}
353
				}
354
				*/
355
			}
356
		}
357
		return true;
358
	}
457 rajveer 359
}