001
014
015 package com.liferay.portlet.documentlibrary.model.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.log.Log;
020 import com.liferay.portal.kernel.log.LogFactoryUtil;
021 import com.liferay.portal.kernel.util.FileUtil;
022 import com.liferay.portal.kernel.util.GetterUtil;
023 import com.liferay.portal.kernel.util.StringBundler;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.util.UnicodeProperties;
026 import com.liferay.portal.model.Lock;
027 import com.liferay.portal.service.LockLocalServiceUtil;
028 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
029 import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
030 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
031 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
032 import com.liferay.portlet.documentlibrary.model.DLFolder;
033 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
034 import com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalServiceUtil;
035 import com.liferay.portlet.documentlibrary.service.DLFileEntryServiceUtil;
036 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil;
037 import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalServiceUtil;
038 import com.liferay.portlet.documentlibrary.service.DLFileVersionServiceUtil;
039 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
040 import com.liferay.portlet.documentlibrary.util.DLUtil;
041 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
042 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
043 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
044 import com.liferay.portlet.expando.model.ExpandoBridge;
045
046 import java.io.IOException;
047 import java.io.InputStream;
048
049 import java.util.HashMap;
050 import java.util.Iterator;
051 import java.util.List;
052 import java.util.Map;
053
054
058 public class DLFileEntryImpl extends DLFileEntryBaseImpl {
059
060 public DLFileEntryImpl() {
061 }
062
063 public InputStream getContentStream()
064 throws PortalException, SystemException {
065
066 return getContentStream(getVersion());
067 }
068
069 public InputStream getContentStream(String version)
070 throws PortalException, SystemException {
071
072 return DLFileEntryServiceUtil.getFileAsStream(
073 getFileEntryId(), version);
074 }
075
076 public long getDataRepositoryId() {
077 return DLFolderConstants.getDataRepositoryId(
078 getGroupId(), getFolderId());
079 }
080
081 @Override
082 public ExpandoBridge getExpandoBridge() {
083 try {
084 DLFileVersion dlFileVersion = getFileVersion();
085
086 return dlFileVersion.getExpandoBridge();
087 }
088 catch (Exception e) {
089 _log.error(e, e);
090 }
091
092 return null;
093 }
094
095 @Override
096 public String getExtraSettings() {
097 if (_extraSettingsProperties == null) {
098 return super.getExtraSettings();
099 }
100 else {
101 return _extraSettingsProperties.toString();
102 }
103 }
104
105 public UnicodeProperties getExtraSettingsProperties() {
106 if (_extraSettingsProperties == null) {
107 _extraSettingsProperties = new UnicodeProperties(true);
108
109 try {
110 _extraSettingsProperties.load(super.getExtraSettings());
111 }
112 catch (IOException ioe) {
113 _log.error(ioe, ioe);
114 }
115 }
116
117 return _extraSettingsProperties;
118 }
119
120 public Map<String, Fields> getFieldsMap(long fileVersionId)
121 throws PortalException, SystemException {
122
123 Map<String, Fields> fieldsMap = new HashMap<String, Fields>();
124
125 DLFileVersion dlFileVersion =
126 DLFileVersionLocalServiceUtil.getFileVersion(fileVersionId);
127
128 long fileEntryTypeId = dlFileVersion.getFileEntryTypeId();
129
130 if (fileEntryTypeId <= 0) {
131 return fieldsMap;
132 }
133
134 DLFileEntryType dlFileEntryType =
135 DLFileEntryTypeLocalServiceUtil.getFileEntryType(fileEntryTypeId);
136
137 List<DDMStructure> ddmStructures = dlFileEntryType.getDDMStructures();
138
139 for (DDMStructure ddmStructure : ddmStructures) {
140 DLFileEntryMetadata dlFileEntryMetadata =
141 DLFileEntryMetadataLocalServiceUtil.getFileEntryMetadata(
142 ddmStructure.getStructureId(), fileVersionId);
143
144 Fields fields = StorageEngineUtil.getFields(
145 dlFileEntryMetadata.getDDMStorageId());
146
147 fieldsMap.put(ddmStructure.getStructureKey(), fields);
148 }
149
150 return fieldsMap;
151 }
152
153 public DLFileVersion getFileVersion()
154 throws PortalException, SystemException {
155
156 if (_dlFileVersion == null) {
157 _dlFileVersion = getFileVersion(getVersion());
158 }
159
160 return _dlFileVersion;
161 }
162
163 public DLFileVersion getFileVersion(String version)
164 throws PortalException, SystemException {
165
166 return DLFileVersionLocalServiceUtil.getFileVersion(
167 getFileEntryId(), version);
168 }
169
170 public List<DLFileVersion> getFileVersions(int status)
171 throws SystemException {
172
173 return DLFileVersionLocalServiceUtil.getFileVersions(
174 getFileEntryId(), status);
175 }
176
177 public int getFileVersionsCount(int status) throws SystemException {
178 return DLFileVersionLocalServiceUtil.getFileVersionsCount(
179 getFileEntryId(), status);
180 }
181
182 public DLFolder getFolder() {
183 DLFolder dlFolder = null;
184
185 if (getFolderId() > 0) {
186 try {
187 dlFolder = DLFolderLocalServiceUtil.getFolder(getFolderId());
188 }
189 catch (Exception e) {
190 dlFolder = new DLFolderImpl();
191
192 _log.error(e, e);
193 }
194 }
195 else {
196 dlFolder = new DLFolderImpl();
197 }
198
199 return dlFolder;
200 }
201
202 public String getIcon() {
203 return DLUtil.getFileIcon(getExtension());
204 }
205
206 public DLFileVersion getLatestFileVersion(boolean trusted)
207 throws PortalException, SystemException {
208
209 if (trusted) {
210 return DLFileVersionLocalServiceUtil.getLatestFileVersion(
211 getFileEntryId(), true);
212 }
213 else {
214 return DLFileVersionServiceUtil.getLatestFileVersion(
215 getFileEntryId());
216 }
217 }
218
219 public Lock getLock() {
220 try {
221 return LockLocalServiceUtil.getLock(
222 DLFileEntry.class.getName(), getFileEntryId());
223 }
224 catch (Exception e) {
225 }
226
227 return null;
228 }
229
230 public String getLuceneProperties() {
231 UnicodeProperties extraSettingsProps = getExtraSettingsProperties();
232
233 Iterator<Map.Entry<String, String>> itr =
234 extraSettingsProps.entrySet().iterator();
235
236 StringBundler sb = new StringBundler(
237 extraSettingsProps.entrySet().size() + 4);
238
239 sb.append(FileUtil.stripExtension(getTitle()));
240 sb.append(StringPool.SPACE);
241 sb.append(getDescription());
242 sb.append(StringPool.SPACE);
243
244 while (itr.hasNext()) {
245 Map.Entry<String, String> entry = itr.next();
246
247 String value = GetterUtil.getString(entry.getValue());
248
249 sb.append(value);
250 }
251
252 return sb.toString();
253 }
254
255 public boolean hasLock() {
256 try {
257 return DLFileEntryServiceUtil.hasFileEntryLock(getFileEntryId());
258 }
259 catch (Exception e) {
260 }
261
262 return false;
263 }
264
265 public boolean isCheckedOut() {
266 try {
267 return DLFileEntryServiceUtil.isFileEntryCheckedOut(
268 getFileEntryId());
269 }
270 catch (Exception e) {
271 }
272
273 return false;
274 }
275
276 @Override
277 public void setExtraSettings(String extraSettings) {
278 _extraSettingsProperties = null;
279
280 super.setExtraSettings(extraSettings);
281 }
282
283 public void setExtraSettingsProperties(
284 UnicodeProperties extraSettingsProperties) {
285
286 _extraSettingsProperties = extraSettingsProperties;
287
288 super.setExtraSettings(_extraSettingsProperties.toString());
289 }
290
291 public void setFileVersion(DLFileVersion dlFileVersion) {
292 _dlFileVersion = dlFileVersion;
293 }
294
295 private static Log _log = LogFactoryUtil.getLog(DLFileEntryImpl.class);
296
297 private DLFileVersion _dlFileVersion;
298 private UnicodeProperties _extraSettingsProperties;
299
300 }