001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.model.BaseModelListener;
021 import com.liferay.portal.kernel.model.Group;
022 import com.liferay.portal.kernel.model.Layout;
023 import com.liferay.portal.kernel.model.LayoutSet;
024 import com.liferay.portal.kernel.model.LayoutSetPrototype;
025 import com.liferay.portal.kernel.service.LayoutSetLocalServiceUtil;
026 import com.liferay.portal.kernel.service.LayoutSetPrototypeLocalServiceUtil;
027 import com.liferay.portal.kernel.util.UnicodeProperties;
028 import com.liferay.sites.kernel.util.Sites;
029
030 import java.util.Date;
031
032
035 public class LayoutSetPrototypeLayoutModelListener
036 extends BaseModelListener<Layout> {
037
038 @Override
039 public void onAfterCreate(Layout layout) {
040 updateLayoutSetPrototype(layout, layout.getModifiedDate());
041 }
042
043 @Override
044 public void onAfterRemove(Layout layout) {
045 updateLayoutSetPrototype(layout, new Date());
046 }
047
048 @Override
049 public void onAfterUpdate(Layout layout) {
050 updateLayoutSetPrototype(layout, layout.getModifiedDate());
051 }
052
053 protected void updateLayoutSetPrototype(Layout layout, Date modifiedDate) {
054 if (layout == null) {
055 return;
056 }
057
058 Group group = null;
059
060 try {
061 group = layout.getGroup();
062
063 if (!group.isLayoutSetPrototype()) {
064 return;
065 }
066 }
067 catch (PortalException pe) {
068 return;
069 }
070
071 try {
072 LayoutSetPrototype layoutSetPrototype =
073 LayoutSetPrototypeLocalServiceUtil.getLayoutSetPrototype(
074 group.getClassPK());
075
076 layoutSetPrototype.setModifiedDate(modifiedDate);
077
078 LayoutSetPrototypeLocalServiceUtil.updateLayoutSetPrototype(
079 layoutSetPrototype);
080
081 LayoutSet layoutSet = layoutSetPrototype.getLayoutSet();
082
083 layoutSet.setModifiedDate(layout.getModifiedDate());
084
085 UnicodeProperties settingsProperties =
086 layoutSet.getSettingsProperties();
087
088 settingsProperties.remove(Sites.MERGE_FAIL_COUNT);
089
090 LayoutSetLocalServiceUtil.updateLayoutSet(layoutSet);
091 }
092 catch (Exception e) {
093 _log.error(e, e);
094 }
095 }
096
097 private static final Log _log = LogFactoryUtil.getLog(
098 LayoutSetPrototypeLayoutModelListener.class);
099
100 }