Subversion Repositories SmartDukaan

Rev

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