Subversion Repositories SmartDukaan

Rev

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