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.StringBundler;
027 import com.liferay.portal.kernel.util.StringPool;
028 import com.liferay.portal.kernel.util.Validator;
029 import com.liferay.portal.kernel.workflow.WorkflowConstants;
030 import com.liferay.portal.model.Image;
031 import com.liferay.portal.service.ImageLocalServiceUtil;
032 import com.liferay.portal.theme.ThemeDisplay;
033 import com.liferay.portal.webserver.WebServerServletTokenUtil;
034 import com.liferay.portlet.journal.model.JournalArticle;
035 import com.liferay.portlet.journal.model.JournalArticleResource;
036 import com.liferay.portlet.journal.model.JournalFolder;
037 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
038 import com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil;
039 import com.liferay.portlet.journal.service.JournalFolderLocalServiceUtil;
040 import com.liferay.portlet.journal.util.LocaleTransformerListener;
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 StringBundler sb = new StringBundler();
067
068 buildTreePath(sb, getFolder());
069
070 return sb.toString();
071 }
072
073 @Override
074 public String getArticleImageURL(ThemeDisplay themeDisplay) {
075 if (!isSmallImage()) {
076 return null;
077 }
078
079 if (Validator.isNotNull(getSmallImageURL())) {
080 return getSmallImageURL();
081 }
082
083 return
084 themeDisplay.getPathImage() + "/journal/article?img_id=" +
085 getSmallImageId() + "&t=" +
086 WebServerServletTokenUtil.getToken(getSmallImageId());
087 }
088
089 @Override
090 public JournalArticleResource getArticleResource()
091 throws PortalException, SystemException {
092
093 return JournalArticleResourceLocalServiceUtil.getArticleResource(
094 getResourcePrimKey());
095 }
096
097 @Override
098 public String getArticleResourceUuid()
099 throws PortalException, SystemException {
100
101 JournalArticleResource articleResource = getArticleResource();
102
103 return articleResource.getUuid();
104 }
105
106 @Override
107 public String[] getAvailableLanguageIds() {
108 Set<String> availableLanguageIds = SetUtil.fromArray(
109 super.getAvailableLanguageIds());
110
111 String[] contentAvailableLanguageIds =
112 LocalizationUtil.getAvailableLanguageIds(getContent());
113
114 for (String availableLanguageId : contentAvailableLanguageIds) {
115 availableLanguageIds.add(availableLanguageId);
116 }
117
118 return availableLanguageIds.toArray(
119 new String[availableLanguageIds.size()]);
120 }
121
122
125 @Override
126 public String[] getAvailableLocales() {
127 return getAvailableLanguageIds();
128 }
129
130 @Override
131 public String getContentByLocale(String languageId) {
132 return getContentByLocale(getContent(), isTemplateDriven(), languageId);
133 }
134
135 @Override
136 public String getDefaultLanguageId() {
137 String defaultLanguageId = super.getDefaultLanguageId();
138
139 if (isTemplateDriven() && Validator.isNull(defaultLanguageId)) {
140 defaultLanguageId = LocaleUtil.toLanguageId(
141 LocaleUtil.getSiteDefault());
142 }
143
144 return defaultLanguageId;
145 }
146
147
150 @Override
151 public String getDefaultLocale() {
152 return getDefaultLanguageId();
153 }
154
155 @Override
156 public JournalFolder getFolder() throws PortalException, SystemException {
157 if (getFolderId() <= 0) {
158 return new JournalFolderImpl();
159 }
160
161 return JournalFolderLocalServiceUtil.getFolder(getFolderId());
162 }
163
164 @Override
165 public String getSmallImageType() throws PortalException, SystemException {
166 if ((_smallImageType == null) && isSmallImage()) {
167 Image smallImage = ImageLocalServiceUtil.getImage(
168 getSmallImageId());
169
170 _smallImageType = smallImage.getType();
171 }
172
173 return _smallImageType;
174 }
175
176 @Override
177 public StagedModelType getStagedModelType() {
178 return new StagedModelType(JournalArticle.class);
179 }
180
181 @Override
182 public Map<Locale, String> getTitleMap() {
183 Locale defaultLocale = LocaleThreadLocal.getDefaultLocale();
184
185 try {
186 Locale articleDefaultLocale = LocaleUtil.fromLanguageId(
187 getDefaultLanguageId());
188
189 LocaleThreadLocal.setDefaultLocale(articleDefaultLocale);
190
191 return super.getTitleMap();
192 }
193 finally {
194 LocaleThreadLocal.setDefaultLocale(defaultLocale);
195 }
196 }
197
198 @Override
199 public long getTrashEntryClassPK() {
200 return getResourcePrimKey();
201 }
202
203 @Override
204 public boolean hasApprovedVersion() throws SystemException {
205 JournalArticle article =
206 JournalArticleLocalServiceUtil.fetchLatestArticle(
207 getGroupId(), getArticleId(),
208 WorkflowConstants.STATUS_APPROVED);
209
210 if (article == null) {
211 return false;
212 }
213
214 return true;
215 }
216
217 @Override
218 public boolean isTemplateDriven() {
219 if (Validator.isNull(getStructureId())) {
220 return false;
221 }
222 else {
223 return true;
224 }
225 }
226
227
231 @Override
232 public void prepareLocalizedFieldsForImport(Locale defaultImportLocale)
233 throws LocaleException {
234 }
235
236 @Override
237 public void setSmallImageType(String smallImageType) {
238 _smallImageType = smallImageType;
239 }
240
241 protected void buildTreePath(StringBundler sb, JournalFolder folder)
242 throws PortalException, SystemException {
243
244 if (folder == null) {
245 sb.append(StringPool.SLASH);
246 }
247 else {
248 buildTreePath(sb, folder.getParentFolder());
249
250 sb.append(folder.getFolderId());
251 sb.append(StringPool.SLASH);
252 }
253 }
254
255 private String _smallImageType;
256
257 }