| 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 |
}
|