001
014
015 package com.liferay.portlet.journal.model.impl;
016
017 import com.liferay.portal.LocaleException;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.lar.StagedModelType;
021 import com.liferay.portal.kernel.templateparser.TransformerListener;
022 import com.liferay.portal.kernel.util.LocaleThreadLocal;
023 import com.liferay.portal.kernel.util.LocaleUtil;
024 import com.liferay.portal.kernel.util.LocalizationUtil;
025 import com.liferay.portal.kernel.util.SetUtil;
026 import com.liferay.portal.kernel.util.Validator;
027 import com.liferay.portal.kernel.workflow.WorkflowConstants;
028 import com.liferay.portal.model.Image;
029 import com.liferay.portal.service.ImageLocalServiceUtil;
030 import com.liferay.portal.theme.ThemeDisplay;
031 import com.liferay.portal.webserver.WebServerServletTokenUtil;
032 import com.liferay.portlet.journal.model.JournalArticle;
033 import com.liferay.portlet.journal.model.JournalArticleResource;
034 import com.liferay.portlet.journal.model.JournalFolder;
035 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
036 import com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil;
037 import com.liferay.portlet.journal.service.JournalFolderLocalServiceUtil;
038 import com.liferay.portlet.journal.util.LocaleTransformerListener;
039 import com.liferay.portlet.trash.model.TrashEntry;
040 import com.liferay.portlet.trash.service.TrashEntryLocalServiceUtil;
041
042 import java.util.Locale;
043 import java.util.Map;
044 import java.util.Set;
045
046
050 public class JournalArticleImpl extends JournalArticleBaseImpl {
051
052 public static String getContentByLocale(
053 String content, boolean templateDriven, String languageId) {
054
055 TransformerListener transformerListener =
056 new LocaleTransformerListener();
057
058 return transformerListener.onXml(content, languageId, null);
059 }
060
061 public JournalArticleImpl() {
062 }
063
064 @Override
065 public String buildTreePath() throws PortalException, SystemException {
066 JournalFolder folder = getFolder();
067
068 return folder.buildTreePath();
069 }
070
071 @Override
072 public String getArticleImageURL(ThemeDisplay themeDisplay) {
073 if (!isSmallImage()) {
074 return null;
075 }
076
077 if (Validator.isNotNull(getSmallImageURL())) {
078 return getSmallImageURL();
079 }
080
081 return
082 themeDisplay.getPathImage() + "/journal/article?img_id=" +
083 getSmallImageId() + "&t=" +
084 WebServerServletTokenUtil.getToken(getSmallImageId());
085 }
086
087 @Override
088 public JournalArticleResource getArticleResource()
089 throws PortalException, SystemException {
090
091 return JournalArticleResourceLocalServiceUtil.getArticleResource(
092 getResourcePrimKey());
093 }
094
095 @Override
096 public String getArticleResourceUuid()
097 throws PortalException, SystemException {
098
099 JournalArticleResource articleResource = getArticleResource();
100
101 return articleResource.getUuid();
102 }
103
104 @Override
105 public String[] getAvailableLanguageIds() {
106 Set<String> availableLanguageIds = SetUtil.fromArray(
107 super.getAvailableLanguageIds());
108
109 String[] contentAvailableLanguageIds =
110 LocalizationUtil.getAvailableLanguageIds(getContent());
111
112 for (String availableLanguageId : contentAvailableLanguageIds) {
113 availableLanguageIds.add(availableLanguageId);
114 }
115
116 return availableLanguageIds.toArray(
117 new String[availableLanguageIds.size()]);
118 }
119
120
123 @Override
124 public String[] getAvailableLocales() {
125 return getAvailableLanguageIds();
126 }
127
128 @Override
129 public String getContentByLocale(String languageId) {
130 return getContentByLocale(getContent(), isTemplateDriven(), languageId);
131 }
132
133 @Override
134 public String getDefaultLanguageId() {
135 String defaultLanguageId = super.getDefaultLanguageId();
136
137 if (isTemplateDriven() && Validator.isNull(defaultLanguageId)) {
138 defaultLanguageId = LocaleUtil.toLanguageId(
139 LocaleUtil.getSiteDefault());
140 }
141
142 return defaultLanguageId;
143 }
144
145
148 @Override
149 public String getDefaultLocale() {
150 return getDefaultLanguageId();
151 }
152
153 @Override
154 public JournalFolder getFolder() throws PortalException, SystemException {
155 if (getFolderId() <= 0) {
156 return new JournalFolderImpl();
157 }
158
159 return JournalFolderLocalServiceUtil.getFolder(getFolderId());
160 }
161
162 @Override
163 public String getSmallImageType() throws PortalException, SystemException {
164 if ((_smallImageType == null) && isSmallImage()) {
165 Image smallImage = ImageLocalServiceUtil.getImage(
166 getSmallImageId());
167
168 _smallImageType = smallImage.getType();
169 }
170
171 return _smallImageType;
172 }
173
174 @Override
175 public StagedModelType getStagedModelType() {
176 return new StagedModelType(JournalArticle.class);
177 }
178
179 @Override
180 public Map<Locale, String> getTitleMap() {
181 Locale defaultLocale = LocaleThreadLocal.getDefaultLocale();
182
183 try {
184 Locale articleDefaultLocale = LocaleUtil.fromLanguageId(
185 getDefaultLanguageId());
186
187 LocaleThreadLocal.setDefaultLocale(articleDefaultLocale);
188
189 return super.getTitleMap();
190 }
191 finally {
192 LocaleThreadLocal.setDefaultLocale(defaultLocale);
193 }
194 }
195
196 @Override
197 public long getTrashEntryClassPK() {
198 return getResourcePrimKey();
199 }
200
201 @Override
202 public boolean hasApprovedVersion() throws SystemException {
203 JournalArticle article =
204 JournalArticleLocalServiceUtil.fetchLatestArticle(
205 getGroupId(), getArticleId(),
206 WorkflowConstants.STATUS_APPROVED);
207
208 if (article == null) {
209 return false;
210 }
211
212 return true;
213 }
214
215 @Override
216 public boolean isInTrashExplicitly() throws SystemException {
217 if (!isInTrash()) {
218 return false;
219 }
220
221 TrashEntry trashEntry = TrashEntryLocalServiceUtil.fetchEntry(
222 getModelClassName(), getTrashEntryClassPK());
223
224 if (trashEntry != null) {
225 return true;
226 }
227
228 return false;
229 }
230
231 @Override
232 public boolean isTemplateDriven() {
233 if (Validator.isNull(getStructureId())) {
234 return false;
235 }
236 else {
237 return true;
238 }
239 }
240
241
245 @Override
246 public void prepareLocalizedFieldsForImport(Locale defaultImportLocale)
247 throws LocaleException {
248 }
249
250 @Override
251 public void setSmallImageType(String smallImageType) {
252 _smallImageType = smallImageType;
253 }
254
255 private String _smallImageType;
256
257 }