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
040 import java.util.Locale;
041 import java.util.Map;
042 import java.util.Set;
043
044
048 public class JournalArticleImpl extends JournalArticleBaseImpl {
049
050 public static String getContentByLocale(
051 String content, boolean templateDriven, String languageId) {
052
053 TransformerListener transformerListener =
054 new LocaleTransformerListener();
055
056 return transformerListener.onXml(content, languageId, null);
057 }
058
059 public JournalArticleImpl() {
060 }
061
062 @Override
063 public String buildTreePath() throws PortalException, SystemException {
064 JournalFolder folder = getFolder();
065
066 return folder.buildTreePath();
067 }
068
069 @Override
070 public String getArticleImageURL(ThemeDisplay themeDisplay) {
071 if (!isSmallImage()) {
072 return null;
073 }
074
075 if (Validator.isNotNull(getSmallImageURL())) {
076 return getSmallImageURL();
077 }
078
079 return
080 themeDisplay.getPathImage() + "/journal/article?img_id=" +
081 getSmallImageId() + "&t=" +
082 WebServerServletTokenUtil.getToken(getSmallImageId());
083 }
084
085 @Override
086 public JournalArticleResource getArticleResource()
087 throws PortalException, SystemException {
088
089 return JournalArticleResourceLocalServiceUtil.getArticleResource(
090 getResourcePrimKey());
091 }
092
093 @Override
094 public String getArticleResourceUuid()
095 throws PortalException, SystemException {
096
097 JournalArticleResource articleResource = getArticleResource();
098
099 return articleResource.getUuid();
100 }
101
102 @Override
103 public String[] getAvailableLanguageIds() {
104 Set<String> availableLanguageIds = SetUtil.fromArray(
105 super.getAvailableLanguageIds());
106
107 String[] contentAvailableLanguageIds =
108 LocalizationUtil.getAvailableLanguageIds(getContent());
109
110 for (String availableLanguageId : contentAvailableLanguageIds) {
111 availableLanguageIds.add(availableLanguageId);
112 }
113
114 return availableLanguageIds.toArray(
115 new String[availableLanguageIds.size()]);
116 }
117
118
121 @Override
122 public String[] getAvailableLocales() {
123 return getAvailableLanguageIds();
124 }
125
126 @Override
127 public String getContentByLocale(String languageId) {
128 return getContentByLocale(getContent(), isTemplateDriven(), languageId);
129 }
130
131 @Override
132 public String getDefaultLanguageId() {
133 String defaultLanguageId = super.getDefaultLanguageId();
134
135 if (isTemplateDriven() && Validator.isNull(defaultLanguageId)) {
136 defaultLanguageId = LocaleUtil.toLanguageId(
137 LocaleUtil.getSiteDefault());
138 }
139
140 return defaultLanguageId;
141 }
142
143
146 @Override
147 public String getDefaultLocale() {
148 return getDefaultLanguageId();
149 }
150
151 @Override
152 public JournalFolder getFolder() throws PortalException, SystemException {
153 if (getFolderId() <= 0) {
154 return new JournalFolderImpl();
155 }
156
157 return JournalFolderLocalServiceUtil.getFolder(getFolderId());
158 }
159
160 @Override
161 public String getSmallImageType() throws PortalException, SystemException {
162 if ((_smallImageType == null) && isSmallImage()) {
163 Image smallImage = ImageLocalServiceUtil.getImage(
164 getSmallImageId());
165
166 _smallImageType = smallImage.getType();
167 }
168
169 return _smallImageType;
170 }
171
172 @Override
173 public StagedModelType getStagedModelType() {
174 return new StagedModelType(JournalArticle.class);
175 }
176
177 @Override
178 public Map<Locale, String> getTitleMap() {
179 Locale defaultLocale = LocaleThreadLocal.getDefaultLocale();
180
181 try {
182 Locale articleDefaultLocale = LocaleUtil.fromLanguageId(
183 getDefaultLanguageId());
184
185 LocaleThreadLocal.setDefaultLocale(articleDefaultLocale);
186
187 return super.getTitleMap();
188 }
189 finally {
190 LocaleThreadLocal.setDefaultLocale(defaultLocale);
191 }
192 }
193
194 @Override
195 public long getTrashEntryClassPK() {
196 return getResourcePrimKey();
197 }
198
199 @Override
200 public boolean hasApprovedVersion() throws SystemException {
201 JournalArticle article =
202 JournalArticleLocalServiceUtil.fetchLatestArticle(
203 getGroupId(), getArticleId(),
204 WorkflowConstants.STATUS_APPROVED);
205
206 if (article == null) {
207 return false;
208 }
209
210 return true;
211 }
212
213 @Override
214 public boolean isTemplateDriven() {
215 if (Validator.isNull(getStructureId())) {
216 return false;
217 }
218 else {
219 return true;
220 }
221 }
222
223
227 @Override
228 public void prepareLocalizedFieldsForImport(Locale defaultImportLocale)
229 throws LocaleException {
230 }
231
232 @Override
233 public void setSmallImageType(String smallImageType) {
234 _smallImageType = smallImageType;
235 }
236
237 private String _smallImageType;
238
239 }