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 DLFolder getFolder() {
178 DLFolder dlFolder = null;
179
180 if (getFolderId() > 0) {
181 try {
182 dlFolder = DLFolderLocalServiceUtil.getFolder(getFolderId());
183 }
184 catch (Exception e) {
185 dlFolder = new DLFolderImpl();
186
187 _log.error(e, e);
188 }
189 }
190 else {
191 dlFolder = new DLFolderImpl();
192 }
193
194 return dlFolder;
195 }
196
197 public String getIcon() {
198 return DLUtil.getFileIcon(getExtension());
199 }
200
201 public DLFileVersion getLatestFileVersion(boolean trusted)
202 throws PortalException, SystemException {
203
204 if (trusted) {
205 return DLFileVersionLocalServiceUtil.getLatestFileVersion(
206 getFileEntryId(), true);
207 }
208 else {
209 return DLFileVersionServiceUtil.getLatestFileVersion(
210 getFileEntryId());
211 }
212 }
213
214 public Lock getLock() {
215 try {
216 return LockLocalServiceUtil.getLock(
217 DLFileEntry.class.getName(), getFileEntryId());
218 }
219 catch (Exception e) {
220 }
221
222 return null;
223 }
224
225 public String getLuceneProperties() {
226 UnicodeProperties extraSettingsProps = getExtraSettingsProperties();
227
228 Iterator<Map.Entry<String, String>> itr =
229 extraSettingsProps.entrySet().iterator();
230
231 StringBundler sb = new StringBundler(
232 extraSettingsProps.entrySet().size() + 4);
233
234 sb.append(FileUtil.stripExtension(getTitle()));
235 sb.append(StringPool.SPACE);
236 sb.append(getDescription());
237 sb.append(StringPool.SPACE);
238
239 while (itr.hasNext()) {
240 Map.Entry<String, String> entry = itr.next();
241
242 String value = GetterUtil.getString(entry.getValue());
243
244 sb.append(value);
245 }
246
247 return sb.toString();
248 }
249
250 public boolean hasLock() {
251 try {
252 return DLFileEntryServiceUtil.hasFileEntryLock(getFileEntryId());
253 }
254 catch (Exception e) {
255 }
256
257 return false;
258 }
259
260 public boolean isCheckedOut() {
261 try {
262 return DLFileEntryServiceUtil.isFileEntryCheckedOut(
263 getFileEntryId());
264 }
265 catch (Exception e) {
266 }
267
268 return false;
269 }
270
271 @Override
272 public void setExtraSettings(String extraSettings) {
273 _extraSettingsProperties = null;
274
275 super.setExtraSettings(extraSettings);
276 }
277
278 public void setExtraSettingsProperties(
279 UnicodeProperties extraSettingsProperties) {
280
281 _extraSettingsProperties = extraSettingsProperties;
282
283 super.setExtraSettings(_extraSettingsProperties.toString());
284 }
285
286 public void setFileVersion(DLFileVersion dlFileVersion) {
287 _dlFileVersion = dlFileVersion;
288 }
289
290 private static Log _log = LogFactoryUtil.getLog(DLFileEntryImpl.class);
291
292 private DLFileVersion _dlFileVersion;
293 private UnicodeProperties _extraSettingsProperties;
294
295 }