1
22
23 package com.liferay.portlet.journal.action;
24
25 import com.liferay.counter.service.CounterLocalServiceUtil;
26 import com.liferay.portal.NoSuchPortletPreferencesException;
27 import com.liferay.portal.NoSuchUserException;
28 import com.liferay.portal.kernel.security.permission.PermissionChecker;
29 import com.liferay.portal.kernel.util.GetterUtil;
30 import com.liferay.portal.kernel.util.ParamUtil;
31 import com.liferay.portal.kernel.util.StringMaker;
32 import com.liferay.portal.kernel.util.StringPool;
33 import com.liferay.portal.kernel.util.StringUtil;
34 import com.liferay.portal.kernel.util.Validator;
35 import com.liferay.portal.kernel.zip.ZipWriter;
36 import com.liferay.portal.model.Image;
37 import com.liferay.portal.model.Layout;
38 import com.liferay.portal.model.LayoutTypePortlet;
39 import com.liferay.portal.model.PortletPreferences;
40 import com.liferay.portal.service.ImageLocalServiceUtil;
41 import com.liferay.portal.service.LayoutLocalServiceUtil;
42 import com.liferay.portal.service.PortletPreferencesLocalServiceUtil;
43 import com.liferay.portal.service.UserLocalServiceUtil;
44 import com.liferay.portal.struts.ActionConstants;
45 import com.liferay.portal.theme.ThemeDisplay;
46 import com.liferay.portal.upgrade.util.IdReplacer;
47 import com.liferay.portal.upgrade.util.MemoryValueMapper;
48 import com.liferay.portal.util.PortletKeys;
49 import com.liferay.portal.util.WebKeys;
50 import com.liferay.portal.util.comparator.LayoutComparator;
51 import com.liferay.portlet.PortletPreferencesImpl;
52 import com.liferay.portlet.PortletPreferencesSerializer;
53 import com.liferay.portlet.imagegallery.NoSuchImageException;
54 import com.liferay.portlet.imagegallery.model.IGFolder;
55 import com.liferay.portlet.imagegallery.model.IGImage;
56 import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
57 import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
58 import com.liferay.portlet.journal.NoSuchArticleImageException;
59 import com.liferay.portlet.journal.model.JournalArticle;
60 import com.liferay.portlet.journal.model.JournalArticleImage;
61 import com.liferay.portlet.journal.model.JournalArticleResource;
62 import com.liferay.portlet.journal.model.JournalContentSearch;
63 import com.liferay.portlet.journal.model.JournalStructure;
64 import com.liferay.portlet.journal.model.JournalTemplate;
65 import com.liferay.portlet.journal.model.impl.JournalArticleImpl;
66 import com.liferay.portlet.journal.service.JournalArticleImageLocalServiceUtil;
67 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
68 import com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil;
69 import com.liferay.portlet.journal.service.JournalStructureLocalServiceUtil;
70 import com.liferay.portlet.journal.service.JournalTemplateLocalServiceUtil;
71 import com.liferay.portlet.journal.service.persistence.JournalContentSearchUtil;
72 import com.liferay.portlet.softwarecatalog.NoSuchProductScreenshotException;
73 import com.liferay.portlet.softwarecatalog.service.SCProductScreenshotLocalServiceUtil;
74 import com.liferay.util.Time;
75 import com.liferay.util.servlet.ServletResponseUtil;
76
77 import java.util.ArrayList;
78 import java.util.Collections;
79 import java.util.Date;
80 import java.util.Iterator;
81 import java.util.List;
82 import java.util.Map;
83 import java.util.Properties;
84
85 import javax.servlet.http.HttpServletRequest;
86 import javax.servlet.http.HttpServletResponse;
87 import javax.servlet.jsp.PageContext;
88
89 import org.apache.commons.logging.Log;
90 import org.apache.commons.logging.LogFactory;
91 import org.apache.struts.action.Action;
92 import org.apache.struts.action.ActionForm;
93 import org.apache.struts.action.ActionForward;
94 import org.apache.struts.action.ActionMapping;
95
96
102 public class ExportAction extends Action {
103
104 public static final String COMPANY_ID = "liferay.com";
105
106 public static final long DEFAULT_GROUP_ID = 14;
107
108 public static final long DEFAULT_USER_ID = 2;
109
110 public static final String DEFAULT_USER_NAME = "Joe Bloggs";
111
112 public ActionForward execute(
113 ActionMapping mapping, ActionForm form, HttpServletRequest req,
114 HttpServletResponse res)
115 throws Exception {
116
117 try {
118 ThemeDisplay themeDisplay =
119 (ThemeDisplay)req.getAttribute(WebKeys.THEME_DISPLAY);
120
121 PermissionChecker permissionChecker =
122 themeDisplay.getPermissionChecker();
123
124 if (permissionChecker.isOmniadmin()) {
125 long groupId = ParamUtil.getLong(
126 req, "groupId", DEFAULT_GROUP_ID);
127
128 _primaryKeys.clear();
129 _primaryKeyCount = 1500;
130
131 ZipWriter zipWriter = new ZipWriter();
132
133 List journalContentSearches = new ArrayList();
134
135 insertDataImage(groupId, zipWriter);
136 insertDataCMSLayout(groupId, zipWriter, journalContentSearches);
137 insertDataCMSContent(
138 groupId, zipWriter, journalContentSearches);
139
140 String fileName = "journal.zip";
141
142 ServletResponseUtil.sendFile(res, fileName, zipWriter.finish());
143 }
144
145 return null;
146 }
147 catch (Exception e) {
148 req.setAttribute(PageContext.EXCEPTION, e);
149
150 return mapping.findForward(ActionConstants.COMMON_ERROR);
151 }
152 }
153
154 protected void addColumn(StringMaker sm, boolean value) {
155
157 if (value) {
158 sm.append("TRUE");
159 }
160 else {
161 sm.append("FALSE");
162 }
163
164 sm.append(", ");
166 }
167
168 protected void addColumn(StringMaker sm, double value) {
169 sm.append(value);
170 sm.append(", ");
171 }
172
173 protected void addColumn(StringMaker sm, float value) {
174 sm.append(value);
175 sm.append(", ");
176 }
177
178 protected void addColumn(StringMaker sm, int value) {
179 sm.append(value);
180 sm.append(", ");
181 }
182
183 protected void addColumn(StringMaker sm, long value) {
184 sm.append(value);
185 sm.append(", ");
186 }
187
188 protected void addColumn(StringMaker sm, short value) {
189 sm.append(value);
190 sm.append(", ");
191 }
192
193 protected void addColumn(StringMaker sm, Date value) {
194 addColumn(sm, value, true);
195 }
196
197 protected void addColumn(StringMaker sm, Date value, boolean current) {
198 if (current) {
199 sm.append("CURRENT_TIMESTAMP, ");
200 }
201 else {
202 sm.append("SPECIFIC_TIMESTAMP_");
203 sm.append(Time.getSimpleDate(value, "yyyyMMddHHmmss"));
204 sm.append(", ");
205 }
206 }
207
208 protected void addColumn(StringMaker sm, String value) {
209 addColumn(sm, value, true);
210 }
211
212 protected void addColumn(StringMaker sm, String value, boolean format) {
213 if (format) {
214 value = StringUtil.replace(
215 value,
216 new String[] {"\\", "'", "\"", "\n", "\r"},
217 new String[] {"\\\\", "\\'", "\\\"", "\\n", "\\r"});
218 }
219
220 value = GetterUtil.getString(value);
221
222 sm.append("'");
223 sm.append(value);
224 sm.append("', ");
225 }
226
227 protected void addPKColumn(StringMaker sm, long value) {
228 sm.append(getNewPrimaryKey(value));
229 sm.append(", ");
230 }
231
232 protected void addPKColumn(StringMaker sm, String value) {
233 sm.append("'");
234 sm.append(getNewPrimaryKey(value));
235 sm.append("', ");
236 }
237
238 protected String getNewPrimaryKey(String pk) {
239 if (Validator.isNumber(pk)) {
240 long pkLong = GetterUtil.getLong(pk);
241
242 return String.valueOf(getNewPrimaryKey(pkLong));
243 }
244 else {
245 return pk;
246 }
247 }
248
249 protected long getNewPrimaryKey(long pk) {
250 Long pkObj = new Long(pk);
251
252 Long newPkObj = (Long)_primaryKeys.get(pkObj);
253
254 if (newPkObj == null) {
255 newPkObj = new Long(_primaryKeyCount);
256
257 _primaryKeyCount++;
258
259 _primaryKeys.put(pkObj, newPkObj);
260 }
261
262 return newPkObj.longValue();
263 }
264
265 protected void insertDataCMSContent(
266 long groupId, ZipWriter zipWriter, List journalContentSearches)
267 throws Exception {
268
269 StringMaker sm = new StringMaker();
270
271 List igImages = new ArrayList();
272
273 Iterator itr = IGFolderLocalServiceUtil.getFolders(groupId).iterator();
274
275 while (itr.hasNext()) {
276 IGFolder folder = (IGFolder)itr.next();
277
278 sm.append("insert into IGFolder (");
279 sm.append("folderId, groupId, companyId, userId, createDate, ");
280 sm.append("modifiedDate, parentFolderId, name");
281 sm.append(") values (");
282 addPKColumn(sm, folder.getFolderId());
283 addColumn(sm, folder.getGroupId());
284 addColumn(sm, folder.getCompanyId());
285 addColumn(sm, DEFAULT_USER_ID);
287 addColumn(sm, folder.getCreateDate());
288 addColumn(sm, folder.getModifiedDate());
289 addColumn(sm, folder.getParentFolderId());
290 addColumn(sm, folder.getName());
291 removeTrailingComma(sm);
292 sm.append(");\n");
293
294 igImages.addAll(
295 IGImageLocalServiceUtil.getImages(folder.getFolderId()));
296 }
297
298 sm.append("\n");
299
300 Collections.sort(igImages);
301
302 itr = igImages.iterator();
303
304 while (itr.hasNext()) {
305 IGImage image = (IGImage)itr.next();
306
307 sm.append("insert into IGImage (");
308 sm.append("imageId, companyId, userId, createDate, modifiedDate, ");
309 sm.append("folderId, description, smallImageId, largeImageId");
310 sm.append(") values (");
311 addPKColumn(sm, image.getImageId());
312 addColumn(sm, image.getCompanyId());
313 addColumn(sm, DEFAULT_USER_ID);
315 addColumn(sm, image.getCreateDate());
316 addColumn(sm, image.getModifiedDate());
317 addPKColumn(sm, image.getFolderId());
318 addColumn(sm, image.getDescription());
319 addPKColumn(sm, image.getSmallImageId());
320 addPKColumn(sm, image.getLargeImageId());
321 removeTrailingComma(sm);
322 sm.append(");\n");
323 }
324
325 sm.append("\n");
326
327 itr = JournalArticleLocalServiceUtil.getArticles(groupId).iterator();
328
329 while (itr.hasNext()) {
330 JournalArticle article = (JournalArticle)itr.next();
331
332 if (article.isApproved() &&
333 JournalArticleLocalServiceUtil.isLatestVersion(
334 article.getGroupId(), article.getArticleId(),
335 article.getVersion())) {
336
337 sm.append("insert into JournalArticle (");
338 sm.append("id_, resourcePrimKey, groupId, companyId, userId, ");
339 sm.append("userName, createDate, modifiedDate, articleId, ");
340 sm.append("version, title, description, content, type_, ");
341 sm.append("structureId, templateId, displayDate, approved, ");
342 sm.append("approvedByUserId, approvedByUserName, expired, ");
343 sm.append("indexable");
344 sm.append(") values (");
345 addPKColumn(sm, article.getId());
346 addPKColumn(sm, article.getResourcePrimKey());
347 addColumn(sm, article.getGroupId());
348 addColumn(sm, article.getCompanyId());
349 addColumn(sm, DEFAULT_USER_ID);
352 addColumn(sm, DEFAULT_USER_NAME);
353 addColumn(sm, article.getCreateDate());
354 addColumn(sm, article.getModifiedDate());
355 addPKColumn(sm, article.getArticleId());
356 addColumn(sm, JournalArticleImpl.DEFAULT_VERSION);
357 addColumn(sm, article.getTitle());
358 addColumn(sm, article.getDescription());
359 addColumn(sm, replaceIds(article.getContent()));
360 addColumn(sm, article.getType());
361 addPKColumn(sm, article.getStructureId());
362 addPKColumn(sm, article.getTemplateId());
363 addColumn(sm, article.getDisplayDate(), false);
364 addColumn(sm, article.getApproved());
365 addColumn(sm, DEFAULT_USER_ID);
368 addColumn(sm, DEFAULT_USER_NAME);
369 addColumn(sm, article.getExpired());
371 addColumn(sm, article.getIndexable());
374 removeTrailingComma(sm);
375 sm.append(");\n");
376 }
377 }
378
379 sm.append("\n");
380
381 itr = JournalArticleImageLocalServiceUtil.getArticleImages(
382 groupId).iterator();
383
384 while (itr.hasNext()) {
385 JournalArticleImage articleImage = (JournalArticleImage)itr.next();
386
387 sm.append("insert into JournalArticleImage (");
388 sm.append("articleImageId, groupId, articleId, version, elName, ");
389 sm.append("languageId, tempImage");
390 sm.append(") values (");
391 addPKColumn(sm, articleImage.getArticleImageId());
392 addColumn(sm, articleImage.getGroupId());
393 addPKColumn(sm, articleImage.getArticleId());
394 addColumn(sm, articleImage.getVersion());
395 addColumn(sm, articleImage.getElName());
396 addColumn(sm, articleImage.getLanguageId());
397 addColumn(sm, articleImage.getTempImage());
398 removeTrailingComma(sm);
399 sm.append(");\n");
400 }
401
402 sm.append("\n");
403
404 itr = JournalArticleResourceLocalServiceUtil.getArticleResources(
405 groupId).iterator();
406
407 while (itr.hasNext()) {
408 JournalArticleResource articleResource =
409 (JournalArticleResource)itr.next();
410
411 sm.append("insert into JournalArticleResource (");
412 sm.append("resourcePrimKey, groupId, articleId");
413 sm.append(") values (");
414 addPKColumn(sm, articleResource.getResourcePrimKey());
415 addColumn(sm, articleResource.getGroupId());
416 addPKColumn(sm, articleResource.getArticleId());
417 removeTrailingComma(sm);
418 sm.append(");\n");
419 }
420
421 sm.append("\n");
422
423 itr = journalContentSearches.iterator();
424
425 while (itr.hasNext()) {
426 JournalContentSearch contentSearch =
427 (JournalContentSearch)itr.next();
428
429 sm.append("insert into JournalContentSearch (");
430 sm.append("contentSearchId, groupId, companyId, privateLayout, ");
431 sm.append("layoutId, portletId, articleId");
432 sm.append(") values (");
433 addPKColumn(sm, contentSearch.getContentSearchId());
434 addColumn(sm, contentSearch.getGroupId());
435 addColumn(sm, contentSearch.getCompanyId());
436 addColumn(sm, contentSearch.isPrivateLayout());
437 addColumn(sm, contentSearch.getLayoutId());
438 addColumn(sm, contentSearch.getPortletId());
439 addPKColumn(sm, contentSearch.getArticleId());
440 removeTrailingComma(sm);
441 sm.append(");\n");
442 }
443
444 sm.append("\n");
445
446 itr = JournalStructureLocalServiceUtil.getStructures(
447 groupId).iterator();
448
449 while (itr.hasNext()) {
450 JournalStructure structure = (JournalStructure)itr.next();
451
452 sm.append("insert into JournalStructure (");
453 sm.append("id_, groupId, companyId, userId, userName, ");
454 sm.append("createDate, modifiedDate, structureId, name, ");
455 sm.append("description, xsd");
456 sm.append(") values (");
457 addPKColumn(sm, structure.getId());
458 addColumn(sm, structure.getGroupId());
459 addColumn(sm, structure.getCompanyId());
460 addColumn(sm, DEFAULT_USER_ID);
463 addColumn(sm, DEFAULT_USER_NAME);
464 addColumn(sm, structure.getCreateDate());
465 addColumn(sm, structure.getModifiedDate());
466 addPKColumn(sm, structure.getStructureId());
467 addColumn(sm, structure.getName());
468 addColumn(sm, structure.getDescription());
469 addColumn(sm, replaceIds(structure.getXsd()));
470 removeTrailingComma(sm);
471 sm.append(");\n");
472 }
473
474 sm.append("\n");
475
476 itr = JournalTemplateLocalServiceUtil.getTemplates(groupId).iterator();
477
478 while (itr.hasNext()) {
479 JournalTemplate template = (JournalTemplate)itr.next();
480
481 sm.append("insert into JournalTemplate (");
482 sm.append("id_, groupId, companyId, userId, userName, ");
483 sm.append("createDate, modifiedDate, templateId, structureId, ");
484 sm.append("name, description, xsl, langType, smallImage, ");
485 sm.append("smallImageId, smallImageURL");
486 sm.append(") values (");
487 addPKColumn(sm, template.getId());
488 addColumn(sm, template.getGroupId());
489 addColumn(sm, template.getCompanyId());
490 addColumn(sm, DEFAULT_USER_ID);
493 addColumn(sm, DEFAULT_USER_NAME);
494 addColumn(sm, template.getCreateDate());
495 addColumn(sm, template.getModifiedDate());
496 addPKColumn(sm, template.getTemplateId());
497 addPKColumn(sm, template.getStructureId());
498 addColumn(sm, template.getName());
499 addColumn(sm, template.getDescription());
500 addColumn(sm, replaceIds(template.getXsl()));
501 addColumn(sm, template.getLangType());
502 addColumn(sm, template.getSmallImage());
503 addPKColumn(sm, template.getSmallImageId());
504 addColumn(sm, template.getSmallImageURL());
505 removeTrailingComma(sm);
506 sm.append(");\n");
507 }
508
509 removeTrailingNewLine(sm);
510
511 zipWriter.addEntry("portal-data-cms-content.sql", sm);
512 }
513
514 protected void insertDataCMSLayout(
515 long groupId, ZipWriter zipWriter, List journalContentSearches)
516 throws Exception {
517
518 StringMaker sm = new StringMaker();
519
520 List layouts = LayoutLocalServiceUtil.getLayouts(groupId, false);
521
522 sm.append("update LayoutSet ");
523 sm.append("set themeId = 'liferayjedi_WAR_liferayjeditheme', ");
524 sm.append("pageCount = ");
525 sm.append(layouts.size());
526 sm.append(" where groupId = ");
527 sm.append(groupId);
528 sm.append(" and privateLayout = FALSE;\n\n");
529
530 Collections.sort(layouts, new LayoutComparator(true));
531
532 Iterator itr = layouts.iterator();
533
534 while (itr.hasNext()) {
535 Layout layout = (Layout)itr.next();
536
537 getNewPrimaryKey(layout.getPlid());
538 }
539
540 itr = layouts.iterator();
541
542 while (itr.hasNext()) {
543 Layout layout = (Layout)itr.next();
544
545 Properties props = layout.getTypeSettingsProperties();
546
547 long linkToPlid = GetterUtil.getLong(
548 props.getProperty("linkToPlid"));
549
550 if (linkToPlid > 0) {
551 long newLinkToPlid = getNewPrimaryKey(linkToPlid);
552
553 props.setProperty("linkToPlid", String.valueOf(newLinkToPlid));
554 }
555
556 sm.append("insert into Layout (");
557 sm.append("plid, groupId, companyId, privateLayout, layoutId, ");
558 sm.append("parentLayoutId, name, title, type_, typeSettings, ");
559 sm.append("hidden_, friendlyURL, iconImage, iconImageId, ");
560 sm.append("css, priority");
562 sm.append(") values (");
563 addPKColumn(sm, layout.getPlid());
564 addColumn(sm, layout.getGroupId());
565 addColumn(sm, layout.getCompanyId());
566 addColumn(sm, layout.isPrivateLayout());
567 addColumn(sm, layout.getLayoutId());
568 addColumn(sm, layout.getParentLayoutId());
569 addColumn(sm, layout.getName());
570 addColumn(sm, layout.getTitle());
571 addColumn(sm, layout.getType());
572 addColumn(sm, layout.getTypeSettings());
573 addColumn(sm, layout.isHidden());
574 addColumn(sm, layout.getFriendlyURL());
575 addColumn(sm, layout.isIconImage());
576 addColumn(sm, layout.getIconImageId());
577 addColumn(sm, layout.getCss());
582 addColumn(sm, layout.getPriority());
583 removeTrailingComma(sm);
584 sm.append(");\n");
585 }
586
587 sm.append("\n");
588
589 itr = layouts.iterator();
590
591 while (itr.hasNext()) {
592 Layout layout = (Layout)itr.next();
593
594 LayoutTypePortlet layoutType =
595 (LayoutTypePortlet)layout.getLayoutType();
596
597 List portletIds = layoutType.getPortletIds();
598
599 Collections.sort(portletIds);
600
601 for (int i = 0; i < portletIds.size(); i++) {
602 String portletId = (String)portletIds.get(i);
603
604 try {
605 PortletPreferences portletPreferences =
606 PortletPreferencesLocalServiceUtil.
607 getPortletPreferences(
608 PortletKeys.PREFS_OWNER_ID_DEFAULT,
609 PortletKeys.PREFS_OWNER_TYPE_LAYOUT,
610 layout.getPlid(), portletId);
611
612 String prefsXml = portletPreferences.getPreferences();
613
614 PortletPreferencesImpl prefs = (PortletPreferencesImpl)
615 PortletPreferencesSerializer.fromDefaultXML(
616 portletPreferences.getPreferences());
617
618 String articleId =
619 prefs.getValue("article-id", StringPool.BLANK);
620
621 articleId = articleId.toUpperCase();
622
623 if (Validator.isNotNull(articleId)) {
624 if (!JournalArticleLocalServiceUtil.hasArticle(
625 layout.getGroupId(), articleId)) {
626
627 continue;
628 }
629
630
633 prefs.setValue(
634 "article-id", getNewPrimaryKey(articleId));
635
636 prefsXml = PortletPreferencesSerializer.toXML(prefs);
637
638
640 long contentSearchId =
641 CounterLocalServiceUtil.increment();
642
643 JournalContentSearch journalContentSearch =
644 JournalContentSearchUtil.create(contentSearchId);
645
646 journalContentSearch.setContentSearchId(
647 contentSearchId);
648 journalContentSearch.setCompanyId(
649 layout.getCompanyId());
650 journalContentSearch.setGroupId(layout.getGroupId());
651 journalContentSearch.setPrivateLayout(
652 layout.isPrivateLayout());
653 journalContentSearch.setPortletId(portletId);
654 journalContentSearch.setLayoutId(layout.getLayoutId());
655 journalContentSearch.setPortletId(portletId);
656 journalContentSearch.setArticleId(
657 getNewPrimaryKey(articleId));
658
659 journalContentSearches.add(journalContentSearch);
660 }
661
662 sm.append("insert into PortletPreferences (");
663 sm.append("portletPreferencesId, ownerId, ownerType, ");
664 sm.append("plid, portletId, preferences");
665 sm.append(") values (");
666 addPKColumn(
667 sm, portletPreferences.getPortletPreferencesId());
668 addColumn(sm, portletPreferences.getOwnerId());
669 addColumn(sm, portletPreferences.getOwnerType());
670 addPKColumn(sm, portletPreferences.getPlid());
671 addColumn(sm, portletId);
672 addColumn(sm, prefsXml);
673 removeTrailingComma(sm);
674 sm.append(");\n");
675 }
676 catch (NoSuchPortletPreferencesException nsppe) {
677 _log.warn(nsppe.getMessage());
678 }
679 }
680
681 sm.append("\n");
682 }
683
684 removeTrailingNewLine(sm);
685 removeTrailingNewLine(sm);
686
687 zipWriter.addEntry("portal-data-cms-layout.sql", sm);
688 }
689
690 protected void insertDataImage(long groupId, ZipWriter zipWriter)
691 throws Exception {
692
693 StringMaker sm1 = new StringMaker();
694 StringMaker sm2 = new StringMaker();
695
696 Iterator itr = ImageLocalServiceUtil.getImagesBySize(70000).iterator();
697
698 while (itr.hasNext()) {
699 Image image = (Image)itr.next();
700
701 long imageId = image.getImageId();
702
703 try {
704 UserLocalServiceUtil.getUserByPortraitId(imageId);
705
706 continue;
707 }
708 catch (NoSuchUserException nsue) {
709 }
710
711 try {
712 IGImage igImage =
713 IGImageLocalServiceUtil.getImageBySmallImageId(imageId);
714
715 IGFolder igFolder = igImage.getFolder();
716
717 if (igFolder.getGroupId() != groupId) {
718 continue;
719 }
720 }
721 catch (NoSuchImageException nsie) {
722 }
723
724 try {
725 IGImage igImage =
726 IGImageLocalServiceUtil.getImageByLargeImageId(imageId);
727
728 IGFolder igFolder = igImage.getFolder();
729
730 if (igFolder.getGroupId() != groupId) {
731 continue;
732 }
733 }
734 catch (NoSuchImageException nsie) {
735 }
736
737 try {
738 JournalArticleImage journalArticleImage =
739 JournalArticleImageLocalServiceUtil.getArticleImage(
740 imageId);
741
742 if (journalArticleImage.getGroupId() != groupId) {
743 continue;
744 }
745 }
746 catch (NoSuchArticleImageException nsaie) {
747 }
748
749 try {
750 SCProductScreenshotLocalServiceUtil.
751 getProductScreenshotByFullImageId(imageId);
752
753 continue;
754 }
755 catch (NoSuchProductScreenshotException nspse) {
756 }
757
758 try {
759 SCProductScreenshotLocalServiceUtil.
760 getProductScreenshotByThumbnailId(imageId);
761
762 continue;
763 }
764 catch (NoSuchProductScreenshotException nspse) {
765 }
766
767 sm1.append("insert into Image (");
768 sm1.append("imageId, modifiedDate, text_, type_, height, width, ");
769 sm1.append("size_");
770 sm1.append(") values (");
771 addPKColumn(sm1, imageId);
772 addColumn(sm1, image.getModifiedDate());
773 addColumn(sm1, image.getText(), false);
774 addColumn(sm1, image.getType());
775 addColumn(sm1, image.getHeight());
776 addColumn(sm1, image.getWidth());
777 addColumn(sm1, image.getSize());
778 removeTrailingComma(sm1);
779 sm1.append(");\n");
780
781 sm2.append("<img src=\"http://localhost:8080/image?img_id=");
782 sm2.append(imageId);
783 sm2.append("\" /><br />\n");
784 }
785
786 removeTrailingNewLine(sm1);
787
788 zipWriter.addEntry("portal-data-image.sql", sm1);
789 zipWriter.addEntry("portal-data-image.html", sm2);
790 }
791
792 protected void removeTrailingComma(StringMaker sm) {
793 sm.delete(sm.length() - 2, sm.length());
794 }
795
796 protected void removeTrailingNewLine(StringMaker sm) {
797 if (sm.length() > 0) {
798 sm.delete(sm.length() - 1, sm.length());
799 }
800 }
801
802 protected String replaceIds(String content) throws Exception {
803 content = IdReplacer.replaceLongIds(content, "?img_id=", _valueMapper);
804
805 return content;
806 }
807
808 private static Log _log = LogFactory.getLog(ExportAction.class);
809
810 private MemoryValueMapper _valueMapper = new MemoryValueMapper();
811 private Map _primaryKeys = _valueMapper.getMap();
812 private int _primaryKeyCount;
813
814 }