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