Subversion Repositories SmartDukaan

Rev

Rev 5012 | Rev 5109 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5012 Rev 5059
Line 3... Line 3...
3
import in.shop2020.content.security.UserManager;
3
import in.shop2020.content.security.UserManager;
4
import in.shop2020.creation.util.ContentValidator;
4
import in.shop2020.creation.util.ContentValidator;
5
import in.shop2020.metamodel.core.Entity;
5
import in.shop2020.metamodel.core.Entity;
6
import in.shop2020.metamodel.core.EntityState;
6
import in.shop2020.metamodel.core.EntityState;
7
import in.shop2020.metamodel.core.EntityStatus;
7
import in.shop2020.metamodel.core.EntityStatus;
-
 
8
import in.shop2020.metamodel.core.FreeformContent;
-
 
9
import in.shop2020.metamodel.core.Media;
-
 
10
import in.shop2020.metamodel.core.Media.Type;
8
import in.shop2020.metamodel.core.Slide;
11
import in.shop2020.metamodel.core.Slide;
9
import in.shop2020.metamodel.util.CreationUtils;
12
import in.shop2020.metamodel.util.CreationUtils;
10
import in.shop2020.thrift.clients.CatalogClient;
13
import in.shop2020.thrift.clients.CatalogClient;
-
 
14
import in.shop2020.util.Utils;
11
 
15
 
12
import java.io.ByteArrayInputStream;
16
import java.io.ByteArrayInputStream;
13
import java.io.ByteArrayOutputStream;
17
import java.io.ByteArrayOutputStream;
-
 
18
import java.io.File;
-
 
19
import java.io.FileInputStream;
-
 
20
import java.io.FileOutputStream;
-
 
21
import java.io.InputStream;
14
import java.io.ObjectInputStream;
22
import java.io.ObjectInputStream;
15
import java.io.ObjectOutputStream;
23
import java.io.ObjectOutputStream;
-
 
24
import java.io.OutputStream;
16
import java.util.ArrayList;
25
import java.util.ArrayList;
17
import java.util.Calendar;
26
import java.util.Calendar;
18
import java.util.List;
27
import java.util.List;
-
 
28
import java.util.Map;
19
 
29
 
-
 
30
import org.apache.commons.io.IOUtils;
20
import org.apache.juli.logging.Log;
31
import org.apache.juli.logging.Log;
21
import org.apache.juli.logging.LogFactory;
32
import org.apache.juli.logging.LogFactory;
22
import org.apache.struts2.convention.annotation.InterceptorRef;
33
import org.apache.struts2.convention.annotation.InterceptorRef;
23
import org.apache.struts2.convention.annotation.InterceptorRefs;
34
import org.apache.struts2.convention.annotation.InterceptorRefs;
24
import org.apache.struts2.convention.annotation.Result;
35
import org.apache.struts2.convention.annotation.Result;
Line 114... Line 125...
114
				log.info("Duplicate Entity is " + dupEntityId);
125
				log.info("Duplicate Entity is " + dupEntityId);
115
				try {
126
				try {
116
					Entity newEntity = CreationUtils.getEntity(entityId);
127
					Entity newEntity = CreationUtils.getEntity(entityId);
117
					Entity dupEntity = CreationUtils.getEntity(Long
128
					Entity dupEntity = CreationUtils.getEntity(Long
118
							.parseLong(dupEntityId));
129
							.parseLong(dupEntityId));
-
 
130
					
119
					List<Slide> slides = dupEntity.getSlides();
131
					List<Slide> slides = dupEntity.getSlides();
120
					List<Slide> newSlides = new ArrayList<Slide>();
132
					List<Slide> newSlides = new ArrayList<Slide>();
121
					for (Slide slide : slides) {
133
					for (Slide slide : slides) {
122
						// Serializing and deserializing to clone the slide
134
						// Serializing and deserializing to clone the slide
123
						// serialize
135
						// serialize
Line 130... Line 142...
130
								bos.toByteArray());
142
								bos.toByteArray());
131
						ObjectInputStream in = new ObjectInputStream(bis);
143
						ObjectInputStream in = new ObjectInputStream(bis);
132
						Slide newSlide = (Slide) in.readObject();
144
						Slide newSlide = (Slide) in.readObject();
133
						newSlides.add(newSlide);
145
						newSlides.add(newSlide);
134
					}
146
					}
-
 
147
					//for all new slides update the mediatypes and create new mediastore for this entity
-
 
148
					List<Slide> allSlides = new ArrayList<Slide>();
-
 
149
					allSlides.addAll(newSlides);
-
 
150
					for(Slide sl: newSlides){
-
 
151
						if(sl.hasChildrenSlides()){
-
 
152
							allSlides.addAll(sl.getChildrenSlides());
-
 
153
							for(Slide sl1 : sl.getChildrenSlides()){
-
 
154
								if(sl1.hasChildrenSlides()){
-
 
155
									allSlides.addAll(sl.getChildrenSlides());
-
 
156
								}
-
 
157
							}
-
 
158
						}
135
 
159
					}
-
 
160
					for(Slide sl : allSlides){
-
 
161
						FreeformContent ffc = sl.getFreeformContent();
-
 
162
						Map<String, Media> mediaMap = ffc.getMedias();
-
 
163
						if(mediaMap==null){
-
 
164
							continue;
-
 
165
						}
-
 
166
						for(Media media : mediaMap.values()){
-
 
167
							if(media.getType().equals(Type.IMAGE) || media.getType().equals(Type.DOCUMENT)){
-
 
168
								copyMedia(String.valueOf(entityId), dupEntityId, media);
-
 
169
							}
-
 
170
						}
-
 
171
					}
136
					List<Long> slideSequence = dupEntity.getSlideSequence();
172
					List<Long> slideSequence = dupEntity.getSlideSequence();
137
					List<Long> newSlideSequence = new ArrayList<Long>(slideSequence);
173
					List<Long> newSlideSequence = new ArrayList<Long>(slideSequence);
138
					newEntity.setSlides(newSlides);
174
					newEntity.setSlides(newSlides);
139
					newEntity.setSlideSequence(newSlideSequence);
175
					newEntity.setSlideSequence(newSlideSequence);
140
					CreationUtils.updateEntity(newEntity);
176
					CreationUtils.updateEntity(newEntity);
Line 194... Line 230...
194
	
230
	
195
	public void setId(String id){
231
	public void setId(String id){
196
		this.id = id;
232
		this.id = id;
197
	}
233
	}
198
	
234
	
-
 
235
	/**
-
 
236
	 * 
-
 
237
	 * @throws Exception
-
 
238
	 */
-
 
239
	private void copyMedia(String newEntityId, String oldEntityId, Media media) throws Exception {
-
 
240
		String mediaDirPath = Utils.CONTENT_DB_PATH + "media" + File.separator + newEntityId;
-
 
241
		File mediaDir = new File(mediaDirPath);
-
 
242
		if(!mediaDir.exists()) {
-
 
243
			mediaDir.mkdir();
-
 
244
		} 
-
 
245
 
-
 
246
		String mediaFilePath = mediaDirPath + File.separator + media.getFileName();
-
 
247
		String oldMediaFilePath = media.getLocation();
-
 
248
 
-
 
249
		File mediaFile = new File(mediaFilePath);
-
 
250
		log.info("Media File ---------" + mediaFile);
-
 
251
		mediaFile.createNewFile();
-
 
252
 
-
 
253
		File oldMediaFile = new File(oldMediaFilePath);
-
 
254
 
-
 
255
		InputStream in = new FileInputStream(oldMediaFile);
-
 
256
		
-
 
257
		// appending output stream
-
 
258
		// @rajveer : replacing the existing file 
-
 
259
		OutputStream out = new FileOutputStream(mediaFile); 
-
 
260
		
-
 
261
		try {
-
 
262
			IOUtils.copy(in, out);
-
 
263
		}
-
 
264
		finally {
-
 
265
			IOUtils.closeQuietly(in);
-
 
266
			IOUtils.closeQuietly(out);
-
 
267
		}
-
 
268
		media.setLocation(mediaFilePath);
-
 
269
	}
-
 
270
	
199
}
271
}