001
014
015 package com.liferay.portlet.exportimport.lar;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.MapUtil;
020 import com.liferay.portal.kernel.util.StringBundler;
021 import com.liferay.portal.kernel.xml.Element;
022 import com.liferay.portal.kernel.xml.ElementHandler;
023 import com.liferay.portal.kernel.xml.ElementProcessor;
024 import com.liferay.portal.security.xml.SecureXMLFactoryProviderUtil;
025
026 import java.io.StringReader;
027
028 import java.util.Set;
029
030 import org.xml.sax.InputSource;
031 import org.xml.sax.XMLReader;
032
033
036 public class DeletionSystemEventImporter {
037
038 public static DeletionSystemEventImporter getInstance() {
039 return _instance;
040 }
041
042 public void importDeletionSystemEvents(
043 final PortletDataContext portletDataContext)
044 throws Exception {
045
046 if (!MapUtil.getBoolean(
047 portletDataContext.getParameterMap(),
048 PortletDataHandlerKeys.DELETIONS)) {
049
050 return;
051 }
052
053 String xml = portletDataContext.getZipEntryAsString(
054 ExportImportPathUtil.getSourceRootPath(portletDataContext) +
055 "/deletion-system-events.xml");
056
057 if (xml == null) {
058 return;
059 }
060
061 XMLReader xmlReader = SecureXMLFactoryProviderUtil.newXMLReader();
062
063 ElementHandler elementHandler = new ElementHandler(
064 new ElementProcessor() {
065
066 @Override
067 public void processElement(Element element) {
068 doImportDeletionSystemEvents(portletDataContext, element);
069 }
070
071 },
072 new String[] {"deletion-system-event"});
073
074 xmlReader.setContentHandler(elementHandler);
075
076 xmlReader.parse(new InputSource(new StringReader(xml)));
077 }
078
079 protected void doImportDeletionSystemEvents(
080 PortletDataContext portletDataContext, Element element) {
081
082 Set<StagedModelType> stagedModelTypes =
083 portletDataContext.getDeletionSystemEventStagedModelTypes();
084
085 StagedModelType stagedModelType = new StagedModelType(
086 element.attributeValue("class-name"),
087 element.attributeValue("referrer-class-name"));
088
089 if (!stagedModelTypes.contains(stagedModelType)) {
090 return;
091 }
092
093 try {
094 StagedModelDataHandlerUtil.deleteStagedModel(
095 portletDataContext, element);
096 }
097 catch (Exception e) {
098 if (_log.isWarnEnabled()) {
099 StringBundler sb = new StringBundler(4);
100
101 sb.append("Unable to process deletion for ");
102 sb.append(stagedModelType);
103 sb.append(" with UUID ");
104 sb.append(element.attributeValue("uuid"));
105
106 _log.warn(sb.toString());
107 }
108 }
109 }
110
111 private DeletionSystemEventImporter() {
112 }
113
114 private static final Log _log = LogFactoryUtil.getLog(
115 DeletionSystemEventImporter.class);
116
117 private static final DeletionSystemEventImporter _instance =
118 new DeletionSystemEventImporter();
119
120 }