Subversion Repositories SmartDukaan

Rev

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

Rev 249 Rev 250
Line 1... Line 1...
1
/**
1
/**
2
 * 
2
 * 
3
 */
3
 */
4
package in.shop2020.creation.controllers;
4
package in.shop2020.creation.controllers;
5
 
5
 
-
 
6
import in.shop2020.creation.util.ContentValidator;
6
import in.shop2020.creation.util.CreationUtils;
7
import in.shop2020.creation.util.CreationUtils;
7
import in.shop2020.metamodel.core.Entity;
8
import in.shop2020.metamodel.core.Entity;
8
import in.shop2020.metamodel.core.Slide;
9
import in.shop2020.metamodel.core.Slide;
9
import in.shop2020.metamodel.definitions.Category;
10
import in.shop2020.metamodel.definitions.Category;
10
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
11
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
Line 12... Line 13...
12
import in.shop2020.metamodel.definitions.EntityContainer;
13
import in.shop2020.metamodel.definitions.EntityContainer;
13
 
14
 
14
import java.util.ArrayList;
15
import java.util.ArrayList;
15
import java.util.Arrays;
16
import java.util.Arrays;
16
import java.util.HashMap;
17
import java.util.HashMap;
-
 
18
import java.util.LinkedHashMap;
17
import java.util.List;
19
import java.util.List;
18
import java.util.Map;
20
import java.util.Map;
19
 
21
 
20
import org.apache.juli.logging.Log;
22
import org.apache.juli.logging.Log;
21
import org.apache.juli.logging.LogFactory;
23
import org.apache.juli.logging.LogFactory;
Line 45... Line 47...
45
	 * 
47
	 * 
46
	 */
48
	 */
47
	private String id;
49
	private String id;
48
	private String redirectURL;
50
	private String redirectURL;
49
	private Map<String, String[]> reqparams;
51
	private Map<String, String[]> reqparams;
50
	private String errorString;
-
 
51
	private EntityContainer ents;
52
	private EntityContainer ents;
52
	private DefinitionsContainer defs;
53
	private DefinitionsContainer defs;
53
	private List<List<String[]>> allSlidesData = 
54
	private List<List<String[]>> allSlidesData = 
54
		new ArrayList<List<String[]>>();
55
		new ArrayList<List<String[]>>();
55
	
56
	
56
	Map<Long, CategorySlideDefinition> mapAllCatSlideDefs = 
57
	private Map<Long, CategorySlideDefinition> mapAllCatSlideDefs = 
57
		new HashMap<Long, CategorySlideDefinition>();
58
		new HashMap<Long, CategorySlideDefinition>();
58
 
59
 
-
 
60
	private Map<Long, List<Long>> catSlides;
-
 
61
 
-
 
62
	private Entity entity;
59
	/**
63
	/**
60
	 * 
64
	 * 
61
	 * @return
65
	 * @return
62
	 */
66
	 */
63
    public String edit() {
67
    public String edit() {
64
    	log.info("SlidesController.edit");
68
    	log.info("SlidesController.edit");
65
 
69
 
66
    	long entityID = Long.parseLong(this.getId());
70
    	long entityID = Long.parseLong(this.getId());
67
    	log.info("entityID:" + entityID);
71
    	log.info("entityID:" + entityID);
68
    	
72
    	
69
    	EntityContainer ents = this.getEntityContainer();
-
 
70
    	DefinitionsContainer defs = this.getDefinitionsContainer();
73
    	DefinitionsContainer defs = this.getDefinitionsContainer();
71
    	
74
    	
72
    	try {
75
    	try {
73
    		Entity entity = ents.getEntity(entityID);
76
    		Entity entity = this.getEntity(entityID);
74
			
77
			
75
    		List<Long> selection = CreationUtils.getSlideSequence(entityID);
78
    		List<Long> selection = CreationUtils.getSlideSequence(entityID);
76
    		log.info("selection:" + selection);
79
    		log.info("selection:" + selection);
77
    		
80
    		
78
    		// Entity's category first
81
    		// Entity's category first
Line 106... Line 109...
106
     * @return
109
     * @return
107
     */
110
     */
108
    public String update() {
111
    public String update() {
109
    	log.info("SlidesController.update");
112
    	log.info("SlidesController.update");
110
    	
113
    	
111
    	String[] strSlideDefIDs = this.reqparams.get("slides");
-
 
112
    	log.info("strSlideDefIDs:" + Arrays.toString(strSlideDefIDs));
-
 
113
    	
-
 
114
    	try {
114
    	try {
-
 
115
    		long entityID = Long.parseLong(this.getId());    		
-
 
116
	    	EntityContainer ents = this.getEntityContainer();
-
 
117
	    	Entity entity = this.getEntity(entityID);
-
 
118
	    	
-
 
119
	    	// Slides of entity's category
-
 
120
	    	String[] strSlideDefIDs = this.reqparams.get(
-
 
121
	    			new Long(entity.getCategoryID()).toString());
-
 
122
	    	
-
 
123
	    	log.info("strSlideDefIDs:" + Arrays.toString(strSlideDefIDs));
-
 
124
	    	
-
 
125
	    	// To restore order of keys
-
 
126
	    	this.catSlides = new LinkedHashMap<Long, List<Long>>();
-
 
127
        	
-
 
128
	    	List<Long> allSlideDefIDs = new ArrayList<Long>();
-
 
129
	    	
-
 
130
	    	// Add entity's category slides first
115
    		List<Long> slideDefIDs = new ArrayList<Long>();
131
    		List<Long> slideDefIDs = new ArrayList<Long>();
116
    		for(String strSlideDefID : strSlideDefIDs) {
132
    		for(String strSlideDefID : strSlideDefIDs) {
117
    			slideDefIDs.add(new Long(Long.parseLong(strSlideDefID)));
133
    			slideDefIDs.add(new Long(Long.parseLong(strSlideDefID)));
118
    		}
134
    		}
-
 
135
    		this.catSlides.put(new Long(entity.getCategoryID()), slideDefIDs);
-
 
136
    		allSlideDefIDs.addAll(slideDefIDs);
119
    		
137
    		
-
 
138
        	DefinitionsContainer defs = this.getDefinitionsContainer();
-
 
139
        	List<Category> cats = defs.getChildrenCategories(10001L);
-
 
140
        	
-
 
141
        	// Add slides borrowed from other categories
-
 
142
        	for(Category cat : cats) {
-
 
143
        		Long lCat = new Long(cat.getID());
-
 
144
        		String[] strCatSlideDefIDs = this.reqparams.get(
-
 
145
        				lCat.toString());
-
 
146
 
-
 
147
        		List<Long> catSlideDefIDs = new ArrayList<Long>();
-
 
148
        		if(strCatSlideDefIDs != null && strCatSlideDefIDs.length > 0) {
-
 
149
            		for(String strCatSlideDefID : strCatSlideDefIDs) {
-
 
150
            			catSlideDefIDs.add(new Long(Long.parseLong(
-
 
151
            					strCatSlideDefID)));
-
 
152
            		}
-
 
153
        		}
-
 
154
        		
-
 
155
        		this.catSlides.put(lCat, catSlideDefIDs);
-
 
156
        		allSlideDefIDs.addAll(catSlideDefIDs);
-
 
157
        	}
-
 
158
        	log.info("this.catSlides:" + this.catSlides);
-
 
159
        	
120
    		// Store for sequence reference
160
    		// Store for sequence reference
121
    		long entityID = Long.parseLong(this.getId());
-
 
122
	    	CreationUtils.storeSlideSequence(entityID, slideDefIDs);
161
	    	CreationUtils.storeSlideSequence(entityID, this.catSlides);
123
    		
162
    		
124
	    	// Delete slides no longer present in the list
163
	    	// Delete slides no longer present in the list
125
	    	EntityContainer ents = this.getEntityContainer();
-
 
126
	    	Entity entity = ents.getEntity(entityID);
-
 
127
	    	
-
 
128
	    	List<Slide> deletedSlides = new ArrayList<Slide>();
-
 
129
	    	
-
 
130
	    	List<Slide> slides = entity.getSlides();
164
	    	List<Slide> slides = entity.getSlides();
-
 
165
	    	if(slides != null) {
-
 
166
		    	List<Slide> deletedSlides = new ArrayList<Slide>();
131
	    	for(Slide slide : slides) {
167
		    	for(Slide slide : slides) {
132
	    		Long lSlideDefID = new Long(slide.getSlideDefinitionID());
168
		    		Long lSlideDefID = new Long(slide.getSlideDefinitionID());
133
	    		
169
		    		
134
	    		if(!slideDefIDs.contains(lSlideDefID)) {
170
		    		if(!allSlideDefIDs.contains(lSlideDefID)) {
135
	    			log.info("deleted lSlideDefID:" + lSlideDefID);
171
		    			log.info("deleted lSlideDefID:" + lSlideDefID);
136
	    			deletedSlides.add(slide);
172
		    			deletedSlides.add(slide);
137
	    		}
173
		    		}
138
	    	}
174
		    	}
139
	    	
175
		    	
140
	    	for(Slide deletedSlide : deletedSlides) {
176
		    	for(Slide deletedSlide : deletedSlides) {
141
	    		slides.remove(deletedSlide);
177
		    		slides.remove(deletedSlide);
-
 
178
		    	}
142
	    	}
179
	    	}
-
 
180
 
-
 
181
			ContentValidator validator = new ContentValidator();
-
 
182
			if(!validator.validate(entity)) {
-
 
183
				CreationUtils.addToIncomplete(entity);
143
	    	
184
				
-
 
185
				// Delete from repository if incomplete
144
	    	//entity.setSlides(slides);
186
				ents.deleteEntity(entity);
-
 
187
			}
-
 
188
			else {
145
	    	//ents.updateEntity(entity);
189
				ents.updateEntity(entity);
-
 
190
			}
146
	    	
191
			
147
	    	// Store
192
	    	// Store
148
	    	CreationUtils.rewriteEntityDB(ents.getEntities(), 
193
	    	CreationUtils.rewriteRepository(ents.getEntities(), 
149
	    			ents.getEntitiesbyCategory());
194
	    			ents.getEntitiesbyCategory());
150
	    	
195
	    	
-
 
196
	    	if(this.reqparams.containsKey("save")) {
-
 
197
		    	this.redirectURL = "/entity";
-
 
198
	    	}
-
 
199
	    	else {
151
	    	this.redirectURL = "/entity/" + this.getId() + "/edit" +
200
		    	this.redirectURL = "/entity/" + this.getId() + "/edit" +
152
	    		"?slideDefID=130001";
201
		    		"?slideDefID=" + slideDefIDs.get(0);
-
 
202
	    	}
153
			
203
	    	
154
	        return "redirect";
204
	        return "redirect";
155
		} catch (Exception e) {
205
		} catch (Exception e) {
156
			log.error(CreationUtils.getStackTrace(e));
206
			log.error(CreationUtils.getStackTrace(e));
157
			this.setErrorString(CreationUtils.getStackTrace(e));
207
			this.setErrorString(CreationUtils.getStackTrace(e));
158
			return "fatal";
208
			return "fatal";
Line 201... Line 251...
201
    
251
    
202
	/**
252
	/**
203
	 * @param errorString the exceptionString to set
253
	 * @param errorString the exceptionString to set
204
	 */
254
	 */
205
	public void setErrorString(String errorString) {
255
	public void setErrorString(String errorString) {
206
		this.errorString = errorString;
-
 
207
	}
256
	}
208
    
257
    
209
	/**
258
	/**
210
	 * 
259
	 * 
211
	 * @return
260
	 * @return
Line 230... Line 279...
230
	 * @return
279
	 * @return
231
	 * @throws Exception
280
	 * @throws Exception
232
	 */
281
	 */
233
    private List<String[]> getSlidesData(long catID, List<Long> selection, 
282
    private List<String[]> getSlidesData(long catID, List<Long> selection, 
234
    		boolean isEntityCategory) throws Exception {
283
    		boolean isEntityCategory) throws Exception {
-
 
284
    	log.info("catID:" + catID);
235
    	DefinitionsContainer defs = this.getDefinitionsContainer();
285
    	DefinitionsContainer defs = this.getDefinitionsContainer();
236
		List<Long> slideDefIDs = defs.getCategorySlideSequence(catID);
286
		List<Long> slideDefIDs = defs.getCategorySlideSequence(catID);
-
 
287
		log.info("slideDefIDs:" + slideDefIDs);
237
		
288
		
238
		List<CategorySlideDefinition> catSlideDefs = 
289
		List<CategorySlideDefinition> catSlideDefs = 
239
			defs.getCategorySlideDefinitions(catID);
290
			defs.getCategorySlideDefinitions(catID);
-
 
291
		log.info("catSlideDefs:" + catSlideDefs);
240
		
292
		
241
		// Convert it into Map, this will help put CategorySlideDefinition
293
		// Convert it into Map, this will help put CategorySlideDefinition
242
		// objects in sequence
294
		// objects in sequence
243
		// FIXME - Quick and dirty
295
		// FIXME - Quick and dirty
244
		List<Long> excludeList = new ArrayList<Long>();
296
		List<Long> excludeList = new ArrayList<Long>();
Line 250... Line 302...
250
			}
302
			}
251
			else {
303
			else {
252
				excludeList.add(slideDefID);
304
				excludeList.add(slideDefID);
253
			}
305
			}
254
		}
306
		}
-
 
307
		log.info("excludeList:" + excludeList);
255
		
308
		
256
		List<String[]> slidesData = new ArrayList<String[]>();
309
		List<String[]> slidesData = new ArrayList<String[]>();
257
		
310
		
258
		String categoryLabel = defs.getCategory(catID).getLabel();
311
		String categoryLabel = defs.getCategory(catID).getLabel();
259
		
312
		
Line 317... Line 370...
317
    		this.defs = new DefinitionsContainer();
370
    		this.defs = new DefinitionsContainer();
318
    	}
371
    	}
319
    	
372
    	
320
	    return this.defs;
373
	    return this.defs;
321
    }
374
    }
-
 
375
 
-
 
376
    /**
-
 
377
     * 
-
 
378
     * @param entityID
-
 
379
     * @return
-
 
380
     * @throws Exception 
-
 
381
     */
-
 
382
    private Entity getEntity(long entityID) throws Exception {
-
 
383
    	log.info("#### SlidesController.getEntity ####");
-
 
384
		if(this.entity == null) {
-
 
385
			this.entity = CreationUtils.getEntity(entityID);
-
 
386
		}
-
 
387
		
-
 
388
		return this.entity;
-
 
389
	}
322
}
390
}