Subversion Repositories SmartDukaan

Rev

Rev 215 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 215 Rev 242
Line 7... Line 7...
7
import in.shop2020.metamodel.core.EnumDataObject;
7
import in.shop2020.metamodel.core.EnumDataObject;
8
import in.shop2020.metamodel.core.Feature;
8
import in.shop2020.metamodel.core.Feature;
9
import in.shop2020.metamodel.core.FreeformContent;
9
import in.shop2020.metamodel.core.FreeformContent;
10
import in.shop2020.metamodel.core.PrimitiveDataObject;
10
import in.shop2020.metamodel.core.PrimitiveDataObject;
11
import in.shop2020.metamodel.core.Slide;
11
import in.shop2020.metamodel.core.Slide;
-
 
12
import in.shop2020.metamodel.definitions.Catalog;
12
import in.shop2020.metamodel.definitions.Category;
13
import in.shop2020.metamodel.definitions.Category;
13
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
14
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
14
import in.shop2020.metamodel.definitions.CompositeDefinition;
15
import in.shop2020.metamodel.definitions.CompositeDefinition;
15
import in.shop2020.metamodel.definitions.CompositePartDefinition;
16
import in.shop2020.metamodel.definitions.CompositePartDefinition;
16
import in.shop2020.metamodel.definitions.DefinitionsContainer;
17
import in.shop2020.metamodel.definitions.DefinitionsContainer;
Line 24... Line 25...
24
import in.shop2020.metamodel.util.ExpandedFeature;
25
import in.shop2020.metamodel.util.ExpandedFeature;
25
import in.shop2020.metamodel.util.ExpandedFeatureDefinition;
26
import in.shop2020.metamodel.util.ExpandedFeatureDefinition;
26
import in.shop2020.metamodel.util.ExpandedSlide;
27
import in.shop2020.metamodel.util.ExpandedSlide;
27
import in.shop2020.metamodel.util.ExpandedSlideDefinition;
28
import in.shop2020.metamodel.util.ExpandedSlideDefinition;
28
import in.shop2020.metamodel.util.SequenceGenerator;
29
import in.shop2020.metamodel.util.SequenceGenerator;
-
 
30
import in.shop2020.ui.util.VUI;
29
import in.shop2020.util.DBUtils;
31
import in.shop2020.util.DBUtils;
30
import in.shop2020.util.Utils;
32
import in.shop2020.util.Utils;
31
 
33
 
32
import java.util.ArrayList;
34
import java.util.ArrayList;
33
import java.util.Arrays;
35
import java.util.Arrays;
Line 43... Line 45...
43
import org.apache.struts2.convention.annotation.Results;
45
import org.apache.struts2.convention.annotation.Results;
44
import org.apache.struts2.interceptor.ParameterAware;
46
import org.apache.struts2.interceptor.ParameterAware;
45
import org.apache.struts2.rest.DefaultHttpHeaders;
47
import org.apache.struts2.rest.DefaultHttpHeaders;
46
import org.apache.struts2.rest.HttpHeaders;
48
import org.apache.struts2.rest.HttpHeaders;
47
 
49
 
-
 
50
import com.opensymphony.xwork2.ValidationAwareSupport;
-
 
51
 
48
@Results({
52
@Results({
49
    @Result(name="success", type="redirectAction", 
53
    @Result(name="success", type="redirectAction", 
50
    		params = {"actionName" , "entity"}),
54
    		params = {"actionName" , "entity"}),
51
    @Result(name="redirect", location="${url}", type="redirect")
55
    @Result(name="redirect", location="${url}", type="redirect")
52
})
56
})
-
 
57
 
53
public class EntityController implements ParameterAware {
58
public class EntityController extends ValidationAwareSupport 
-
 
59
	implements ParameterAware {
54
	
60
	
55
	/**
61
	/**
56
	 * 
62
	 * 
57
	 */
63
	 */
-
 
64
	private static final long serialVersionUID = 1L;
-
 
65
 
-
 
66
	/**
-
 
67
	 * 
-
 
68
	 */
58
	private static Log log = LogFactory.getLog(EntityController.class);
69
	private static Log log = LogFactory.getLog(EntityController.class);
59
	
70
	
60
	/**
71
	/**
61
	 * 
72
	 * 
62
	 */
73
	 */
Line 87... Line 98...
87
	private long newCurrentSlideDefinitionID;
98
	private long newCurrentSlideDefinitionID;
88
	
99
	
89
	private long newNextSlideDefinitionID;
100
	private long newNextSlideDefinitionID;
90
	
101
	
91
	private long newPrevSlideDefinitionID;
102
	private long newPrevSlideDefinitionID;
92
	
103
 
-
 
104
    // GET /entity/1
-
 
105
    public String show() {
-
 
106
    	log.info("EntityController.show");
-
 
107
    	
-
 
108
    	try {
-
 
109
    		long entityID = Long.parseLong(this.getId());
-
 
110
    		log.info("entityID:" + entityID);
-
 
111
    		
-
 
112
			EntityContainer ents = this.getEntityContainer();
-
 
113
			this.expEntity = ents.getExpandedEntity(entityID);
-
 
114
			
-
 
115
			return "show";
-
 
116
		} catch (Exception e) {
-
 
117
			log.error(CreationUtils.getStackTrace(e));
-
 
118
			this.setErrorString(CreationUtils.getStackTrace(e));
-
 
119
			return "fatal";
-
 
120
		}
-
 
121
    }
-
 
122
 
93
	
123
	
94
    // GET /entity
124
    // GET /entity
95
    public HttpHeaders index() {
125
    public HttpHeaders index() {
96
    	log.info("EntityController.index");
126
    	log.info("EntityController.index");
97
    	
127
    	
Line 149... Line 179...
149
    	DefinitionsContainer defs = this.getDefinitionsContainer();
179
    	DefinitionsContainer defs = this.getDefinitionsContainer();
150
    	
180
    	
151
    	try {
181
    	try {
152
			this.expEntity = ents.getExpandedEntity(entityID);
182
			this.expEntity = ents.getExpandedEntity(entityID);
153
			//log.info("this.expEntity:" + this.expEntity);
183
			//log.info("this.expEntity:" + this.expEntity);
154
			
-
 
155
			long catID = this.expEntity.getCategoryID();
-
 
156
			List<Long> slideDefIDs = defs.getCategorySlideSequence(catID);
-
 
157
 
184
 
-
 
185
			String[] inputSlideDefIDs = this.reqparams.get("slideDefID");
-
 
186
			long inputSlideDefID = 0L;
-
 
187
			if(inputSlideDefIDs != null && inputSlideDefIDs.length > 0) {
-
 
188
				try {
-
 
189
					inputSlideDefID = Long.parseLong(inputSlideDefIDs[0]);
-
 
190
				} catch (NumberFormatException nfe) {}
-
 
191
			}
-
 
192
 
-
 
193
			List<Long> slideDefIDs = CreationUtils.getSlideSequence(entityID);
158
			this.firstSlideDefID = slideDefIDs.get(0);
194
			log.info("slideDefIDs:" + slideDefIDs);
159
			
195
			
-
 
196
			// Edit the entity from a specific slide
-
 
197
			if(slideDefIDs != null && inputSlideDefID != 0L) {
-
 
198
				
-
 
199
				// -2 : Not set
-
 
200
				// -1 : Not found
-
 
201
				int currentIndex = slideDefIDs.indexOf(
-
 
202
						new Long(inputSlideDefID));
-
 
203
				
-
 
204
				int nextIndex = -2;
-
 
205
				if(currentIndex != slideDefIDs.size()) {
-
 
206
					nextIndex = currentIndex + 1;
-
 
207
				}
-
 
208
				
-
 
209
				int prevIndex = -2;
-
 
210
				if(currentIndex != 0) {
-
 
211
					prevIndex = currentIndex - 1;
-
 
212
				}
-
 
213
				
-
 
214
				this.setNewCurrentSlideDefinitionID(
-
 
215
						slideDefIDs.get(currentIndex).longValue());
-
 
216
				
-
 
217
				if(nextIndex != -2) {
-
 
218
					this.setNewNextSlideDefinitionID(
-
 
219
							slideDefIDs.get(nextIndex).longValue());
-
 
220
				}
-
 
221
				
-
 
222
				if(prevIndex != -2) {
-
 
223
					this.setNewPrevSlideDefinitionID(
-
 
224
							slideDefIDs.get(prevIndex).longValue());
-
 
225
				}
-
 
226
 
-
 
227
				// Current Slide Definition
-
 
228
				this.expSlideDef = defs.getExpandedSlideDefinition(
-
 
229
						inputSlideDefID);
-
 
230
				
-
 
231
				// Current Slide Instance
-
 
232
				this.expSlide = this.expEntity.getExpandedSlide(
-
 
233
						inputSlideDefID);
-
 
234
				
-
 
235
				return "editSlide";
-
 
236
			}
160
		} catch (Exception e) {
237
		} catch (Exception e) {
161
			log.error(CreationUtils.getStackTrace(e));
238
			log.error(CreationUtils.getStackTrace(e));
162
			this.setErrorString(CreationUtils.getStackTrace(e));
239
			this.setErrorString(CreationUtils.getStackTrace(e));
163
			return "fatal";
240
			return "fatal";
164
		}
241
		}
Line 189... Line 266...
189
    	DefinitionsContainer defs = this.getDefinitionsContainer();
266
    	DefinitionsContainer defs = this.getDefinitionsContainer();
190
    	
267
    	
191
    	try {
268
    	try {
192
			this.expEntity = ents.getExpandedEntity(entityID);
269
			this.expEntity = ents.getExpandedEntity(entityID);
193
			//log.info("this.expEntity:" + this.expEntity);
270
			//log.info("this.expEntity:" + this.expEntity);
-
 
271
 
-
 
272
			// Save and Go to slides selection page
-
 
273
			if (this.reqparams.containsKey("slides")) {
-
 
274
				log.info("Slides");
-
 
275
				
-
 
276
				Entity entity = this.expEntity.getEntity();
-
 
277
 
-
 
278
				String categoryID = this.reqparams.get("category")[0];
-
 
279
				
-
 
280
				entity.setCategoryID(Long.parseLong(categoryID));
-
 
281
				entity.setBrand(this.reqparams.get("brand")[0]);
-
 
282
				entity.setModelName(this.reqparams.get("modelname")[0]);
-
 
283
				entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
-
 
284
				
-
 
285
				this.updateEntity(entity);
-
 
286
				
-
 
287
				this.redirectURL = "/slides/" + this.getId() + "/edit";
-
 
288
				return "redirect";
-
 
289
			}
194
			
290
			
195
			long currentSlideDefID = 0L;
291
			long currentSlideDefID = 0L;
196
			long nextSlideDefID = 0L;
292
			long nextSlideDefID = 0L;
197
			long prevSlideDefID = 0L;
293
			long prevSlideDefID = 0L;
198
			
294
			
Line 234... Line 330...
234
			}
330
			}
235
			log.info("currentSlideDefID:" + currentSlideDefID);
331
			log.info("currentSlideDefID:" + currentSlideDefID);
236
			log.info("nextSlideDefID:" + nextSlideDefID);
332
			log.info("nextSlideDefID:" + nextSlideDefID);
237
			log.info("prevSlideDefID:" + prevSlideDefID);
333
			log.info("prevSlideDefID:" + prevSlideDefID);
238
			
334
			
-
 
335
			
239
			// Save on basic info page
336
			// Save on basic info page
240
			if (this.reqparams.containsKey("save") && currentSlideDefID == 0L) {
337
			if (this.reqparams.containsKey("save") && currentSlideDefID == 0L) {
241
				log.info("Save");
338
				log.info("Save");
242
				
339
				
243
				Entity entity = this.expEntity.getEntity();
340
				Entity entity = this.expEntity.getEntity();
Line 252... Line 349...
252
				this.updateEntity(entity);
349
				this.updateEntity(entity);
253
				
350
				
254
				return "success";
351
				return "success";
255
			}
352
			}
256
			
353
			
257
			long catID = this.expEntity.getCategoryID();
-
 
258
			List<Long> slideIDs = defs.getCategorySlideSequence(catID);
354
			List<Long> slideIDs = CreationUtils.getSlideSequence(entityID);
259
			log.info("slideIDs:"+slideIDs);
355
			log.info("slideIDs:"+slideIDs);
-
 
356
			if(slideIDs == null) {
-
 
357
				this.setErrorString("Slides need to be picked first!");
-
 
358
				return "fatal";
-
 
359
			}
260
			
360
			
261
			boolean skip = false;
361
			boolean skip = false;
262
			if(this.reqparams.containsKey("skipprev") || 
362
			if(this.reqparams.containsKey("skipprev") || 
263
					this.reqparams.containsKey("skipnext")) {
363
					this.reqparams.containsKey("skipnext")) {
264
				skip = true;
364
				skip = true;
Line 266... Line 366...
266
			
366
			
267
			boolean next = this.reqparams.containsKey("skipnext") || 
367
			boolean next = this.reqparams.containsKey("skipnext") || 
268
				this.reqparams.containsKey("next");
368
				this.reqparams.containsKey("next");
269
 
369
 
270
			boolean prev = this.reqparams.containsKey("skipprev") || 
370
			boolean prev = this.reqparams.containsKey("skipprev") || 
271
			this.reqparams.containsKey("prev");
371
				this.reqparams.containsKey("prev");
272
 
372
 
273
			
373
			
274
			// Save or Next or Prev - When editing a slide
374
			// Save or Next or Prev - When editing a slide
275
			int currentSlideIndex = 0;
375
			int currentSlideIndex = 0;
276
			currentSlideIndex = slideIDs.indexOf(new Long(currentSlideDefID));
376
			currentSlideIndex = slideIDs.indexOf(new Long(currentSlideDefID));
Line 384... Line 484...
384
				
484
				
385
				if(newPrevIndex != -2) {
485
				if(newPrevIndex != -2) {
386
					this.setNewPrevSlideDefinitionID(
486
					this.setNewPrevSlideDefinitionID(
387
							slideIDs.get(newPrevIndex).longValue());
487
							slideIDs.get(newPrevIndex).longValue());
388
				}
488
				}
-
 
489
 
-
 
490
				long newCurrentSlideDefID = 
-
 
491
					this.getNewCurrentSlideDefinitionID();
-
 
492
				log.info("newCurrentSlideDefID:" + newCurrentSlideDefID);
389
				
493
				
390
				// Current Slide Definition
494
				// Current Slide Definition
391
				this.expSlideDef = defs.getExpandedSlideDefinition(
495
				this.expSlideDef = defs.getExpandedSlideDefinition(
392
						this.getNewCurrentSlideDefinitionID());
496
						newCurrentSlideDefID);
393
				
497
				
394
				// Current Slide Instance
498
				// Current Slide Instance
395
				this.expSlide = this.expEntity.getExpandedSlide(
499
				this.expSlide = this.expEntity.getExpandedSlide(
396
						this.getNewCurrentSlideDefinitionID());
500
						newCurrentSlideDefID);
-
 
501
				
397
				//log.info("this.expSlide:" + this.expSlide);
502
				log.info("this.expSlide is null: " + (this.expSlide == null));
398
				
503
				
399
				return "editSlide";
504
				return "editSlide";
400
			}
505
			}
401
		}
506
		}
402
    	catch (Exception e) {
507
    	catch (Exception e) {
Line 600... Line 705...
600
		}
705
		}
601
		
706
		
602
		return features;
707
		return features;
603
	}
708
	}
604
 
709
 
-
 
710
    // DELETE /entity/1000001
-
 
711
    /**
-
 
712
     * 
-
 
713
     */
-
 
714
    public String destroy() {
-
 
715
    	log.info("EntityController.destroy");
-
 
716
    	
-
 
717
    	long entityID = Long.parseLong(this.getId());
-
 
718
    	log.info("entityID:" + entityID);
-
 
719
	
-
 
720
		// Store
-
 
721
		try {
-
 
722
	    	EntityContainer ents = this.getEntityContainer();
-
 
723
	    	Entity entity = ents.getEntity(entityID);
-
 
724
	    	
-
 
725
	    	Map<Long, Entity> entities = ents.getEntities();
-
 
726
	    	Map<Long, List<Entity>> entitiesbycat = 
-
 
727
	    		ents.getEntitiesbyCategory();
-
 
728
	    	
-
 
729
	    	entities.remove(new Long(entityID));
-
 
730
	    	
-
 
731
	    	List<Entity> catentities = 
-
 
732
	    		entitiesbycat.get(new Long(entity.getCategoryID()));
-
 
733
	    	
-
 
734
	    	Entity entitytodelete = null;
-
 
735
	    	for(Entity catentity : catentities) {
-
 
736
	    		if(catentity.getID() == entityID) {
-
 
737
	    			entitytodelete = catentity;
-
 
738
	    			break;
-
 
739
	    		}
-
 
740
	    	}
-
 
741
	    	
-
 
742
	    	if(entitytodelete != null) {
-
 
743
	    		catentities.remove(entitytodelete);
-
 
744
	    	}
-
 
745
	    	
-
 
746
			String entitiesDBFile = Utils.ENTITIES_DB_PATH + "entities.ser";
-
 
747
			String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
-
 
748
				"entitiesbycategory.ser";
-
 
749
 
-
 
750
			DBUtils.store(entities, entitiesDBFile);
-
 
751
			DBUtils.store(entitiesbycat, entitiesbycategoryDBFile);
-
 
752
		} catch (Exception e) {
-
 
753
			log.error(CreationUtils.getStackTrace(e));
-
 
754
			this.setErrorString(CreationUtils.getStackTrace(e));
-
 
755
			return "fatal";
-
 
756
		}
-
 
757
		
-
 
758
        addActionMessage("Entity deleted successfully");
-
 
759
        return "success";
-
 
760
    }
605
	/**
761
	/**
606
     * 
762
     * 
607
     * @param ID
763
     * @param ID
608
     * @return
764
     * @return
609
     */
765
     */
Line 634... Line 790...
634
     * 
790
     * 
635
     * @param slideDefinitionID
791
     * @param slideDefinitionID
636
     * @return
792
     * @return
637
     */
793
     */
638
	public ExpandedSlide getChildSlide(long slideDefinitionID) {
794
	public ExpandedSlide getChildSlide(long slideDefinitionID) {
-
 
795
		if(this.expSlide == null) {
-
 
796
			return null;
-
 
797
		}
-
 
798
		
639
		return this.getChildSlide(this.expSlide, slideDefinitionID);
799
		return this.getChildSlide(this.expSlide, slideDefinitionID);
640
	}
800
	}
641
	
801
	
642
	
802
	
643
    /**
803
    /**
Line 769... Line 929...
769
		}
929
		}
770
 
930
 
771
		return brands;
931
		return brands;
772
	}
932
	}
773
 
933
 
774
    private EntityContainer getEntityContainer() {
934
    protected EntityContainer getEntityContainer() {
775
    	if(this.ents == null) {
935
    	if(this.ents == null) {
776
    		this.ents = new EntityContainer();
936
    		this.ents = new EntityContainer();
777
    	}
937
    	}
778
    	
938
    	
779
	    return this.ents;
939
	    return this.ents;
780
    }
940
    }
781
 
941
 
782
    private DefinitionsContainer getDefinitionsContainer() {
942
    protected DefinitionsContainer getDefinitionsContainer() {
783
    	if(this.defs == null) {
943
    	if(this.defs == null) {
784
    		this.defs = new DefinitionsContainer();
944
    		this.defs = new DefinitionsContainer();
785
    	}
945
    	}
786
    	
946
    	
787
	    return this.defs;
947
	    return this.defs;
Line 978... Line 1138...
978
	/**
1138
	/**
979
	 * 
1139
	 * 
980
	 * @return
1140
	 * @return
981
	 */
1141
	 */
982
	public String getEditorialImportance() {
1142
	public String getEditorialImportance() {
-
 
1143
		// Now that slides are selected upfront
-
 
1144
		return "Mandatory";
-
 
1145
		
-
 
1146
		/*
983
		long catID = this.expEntity.getCategoryID();
1147
		long catID = this.expEntity.getCategoryID();
984
		long slideDefID = this.getNewCurrentSlideDefinitionID();
1148
		long slideDefID = this.getNewCurrentSlideDefinitionID();
985
		
1149
		
986
		try {
1150
		try {
987
			List<CategorySlideDefinition> catSlideDefs =
1151
			List<CategorySlideDefinition> catSlideDefs =
Line 994... Line 1158...
994
		} catch (Exception e) {
1158
		} catch (Exception e) {
995
			log.error(CreationUtils.getStackTrace(e));
1159
			log.error(CreationUtils.getStackTrace(e));
996
    	}
1160
    	}
997
		
1161
		
998
		return "";
1162
		return "";
-
 
1163
		*/
999
	}
1164
	}
1000
	
1165
	
1001
	/**
1166
	/**
1002
	 * 
1167
	 * 
1003
	 * @return
1168
	 * @return
Line 1011... Line 1176...
1011
		}
1176
		}
1012
		catch(Exception nfe) {
1177
		catch(Exception nfe) {
1013
			return null;
1178
			return null;
1014
		}
1179
		}
1015
	}
1180
	}
-
 
1181
 
-
 
1182
	/**
-
 
1183
	 * 
-
 
1184
	 * @return
-
 
1185
	 */
-
 
1186
	public String getCategoryName(long categoryID) {
-
 
1187
		try {
-
 
1188
			return this.getDefinitionsContainer().getCategory(categoryID).
-
 
1189
				getLabel();
-
 
1190
		} catch (Exception e) {
-
 
1191
			return null;
-
 
1192
		}
-
 
1193
	}
1016
}
1194
}