2 * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
\r
4 * This library is free software; you can redistribute it and/or modify it under
\r
5 * the terms of the GNU Lesser General Public License as published by the Free
\r
6 * Software Foundation; either version 2.1 of the License, or (at your option)
\r
9 * This library is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
\r
15 package com.liferay.portlet.documentlibrary.store;
\r
17 import java.io.File;
\r
18 import java.io.IOException;
\r
19 import java.io.InputStream;
\r
20 import java.util.ArrayList;
\r
21 import java.util.List;
\r
23 import com.liferay.portal.kernel.bean.BeanReference;
\r
24 import com.liferay.portal.kernel.exception.PortalException;
\r
25 import com.liferay.portal.kernel.exception.SystemException;
\r
26 import com.liferay.portal.kernel.io.ByteArrayFileInputStream;
\r
27 import com.liferay.portal.kernel.search.BooleanClauseOccur;
\r
28 import com.liferay.portal.kernel.search.BooleanQuery;
\r
29 import com.liferay.portal.kernel.search.BooleanQueryFactoryUtil;
\r
30 import com.liferay.portal.kernel.search.Field;
\r
31 import com.liferay.portal.kernel.search.Hits;
\r
32 import com.liferay.portal.kernel.search.Indexer;
\r
33 import com.liferay.portal.kernel.search.IndexerRegistryUtil;
\r
34 import com.liferay.portal.kernel.search.SearchContext;
\r
35 import com.liferay.portal.kernel.search.SearchEngineUtil;
\r
36 import com.liferay.portal.kernel.search.SolrQueryUtil;
\r
37 import com.liferay.portal.kernel.search.TermQuery;
\r
38 import com.liferay.portal.kernel.search.TermQueryFactoryUtil;
\r
39 import com.liferay.portal.kernel.util.FileUtil;
\r
40 import com.liferay.portal.kernel.util.PropsKeys;
\r
41 import com.liferay.portal.kernel.util.StringPool;
\r
42 import com.liferay.portal.kernel.util.StringUtil;
\r
43 import com.liferay.portal.kernel.util.Validator;
\r
44 import com.liferay.portal.model.User;
\r
45 import com.liferay.portal.service.GroupLocalService;
\r
46 import com.liferay.portal.service.RoleLocalServiceUtil;
\r
47 import com.liferay.portal.service.UserLocalServiceUtil;
\r
48 import com.liferay.portal.util.PrefsPropsUtil;
\r
49 import com.liferay.portal.util.PropsValues;
\r
50 import com.liferay.portlet.documentlibrary.DirectoryNameException;
\r
51 import com.liferay.portlet.documentlibrary.FileExtensionException;
\r
52 import com.liferay.portlet.documentlibrary.FileNameException;
\r
53 import com.liferay.portlet.documentlibrary.FileSizeException;
\r
54 import com.liferay.portlet.documentlibrary.SourceFileNameException;
\r
55 import com.liferay.portlet.documentlibrary.antivirus.AntivirusScannerUtil;
\r
56 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
\r
57 import com.liferay.portlet.documentlibrary.service.DLFolderServiceUtil;
\r
58 import com.pentila.entSavoie.ENTRolesConstants;
\r
59 import com.pentila.entSavoie.directory.OrganizationFinderServiceUtil;
\r
60 import com.pentila.entSavoie.search.util.IndexerUtil;
\r
61 import com.pentila.entSavoie.utils.ENTOrganizationsUtil;
\r
64 * @author Brian Wing Shun Chan
\r
65 * @author Alexander Chow
\r
66 * @author Edward Han
\r
68 public class DLStoreImpl implements DLStore {
\r
70 public void addDirectory(long companyId, long repositoryId, String dirName)
\r
71 throws PortalException, SystemException {
\r
73 if (!isValidName(dirName) || dirName.equals("/")) {
\r
74 throw new DirectoryNameException(dirName);
\r
77 store.addDirectory(companyId, repositoryId, dirName);
\r
80 public void addFile(
\r
81 long companyId, long repositoryId, String fileName,
\r
82 boolean validateFileExtension, byte[] bytes)
\r
83 throws PortalException, SystemException {
\r
85 validate(fileName, validateFileExtension, bytes);
\r
87 if (!PropsValues.DL_STORE_ANTIVIRUS_ENABLED) {
\r
88 AntivirusScannerUtil.scan(bytes);
\r
91 store.addFile(companyId, repositoryId, fileName, bytes);
\r
94 public void addFile(
\r
95 long companyId, long repositoryId, String fileName,
\r
96 boolean validateFileExtension, File file)
\r
97 throws PortalException, SystemException {
\r
99 validate(fileName, validateFileExtension, file);
\r
101 if (PropsValues.DL_STORE_ANTIVIRUS_ENABLED) {
\r
102 AntivirusScannerUtil.scan(file);
\r
105 store.addFile(companyId, repositoryId, fileName, file);
\r
108 public void addFile(
\r
109 long companyId, long repositoryId, String fileName,
\r
110 boolean validateFileExtension, InputStream is)
\r
111 throws PortalException, SystemException {
\r
113 if (is instanceof ByteArrayFileInputStream) {
\r
114 ByteArrayFileInputStream byteArrayFileInputStream =
\r
115 (ByteArrayFileInputStream)is;
\r
117 File file = byteArrayFileInputStream.getFile();
\r
120 companyId, repositoryId, fileName, validateFileExtension, file);
\r
125 validate(fileName, validateFileExtension, is);
\r
127 if (!PropsValues.DL_STORE_ANTIVIRUS_ENABLED ||
\r
128 !AntivirusScannerUtil.isActive()) {
\r
130 store.addFile(companyId, repositoryId, fileName, is);
\r
133 File tempFile = null;
\r
136 if (is.markSupported()) {
\r
137 is.mark(is.available() + 1);
\r
139 AntivirusScannerUtil.scan(is);
\r
143 store.addFile(companyId, repositoryId, fileName, is);
\r
146 tempFile = FileUtil.createTempFile();
\r
148 FileUtil.write(tempFile, is);
\r
150 AntivirusScannerUtil.scan(tempFile);
\r
152 store.addFile(companyId, repositoryId, fileName, tempFile);
\r
155 catch (IOException ioe) {
\r
156 throw new SystemException(
\r
157 "Unable to scan file " + fileName, ioe);
\r
160 if (tempFile != null) {
\r
167 public void addFile(
\r
168 long companyId, long repositoryId, String fileName, byte[] bytes)
\r
169 throws PortalException, SystemException {
\r
171 addFile(companyId, repositoryId, fileName, true, bytes);
\r
174 public void addFile(
\r
175 long companyId, long repositoryId, String fileName, File file)
\r
176 throws PortalException, SystemException {
\r
178 addFile(companyId, repositoryId, fileName, true, file);
\r
181 public void addFile(
\r
182 long companyId, long repositoryId, String fileName, InputStream is)
\r
183 throws PortalException, SystemException {
\r
185 addFile(companyId, repositoryId, fileName, true, is);
\r
188 public void checkRoot(long companyId) throws SystemException {
\r
189 store.checkRoot(companyId);
\r
192 public void copyFileVersion(
\r
193 long companyId, long repositoryId, String fileName,
\r
194 String fromVersionLabel, String toVersionLabel)
\r
195 throws PortalException, SystemException {
\r
197 store.copyFileVersion(
\r
198 companyId, repositoryId, fileName, fromVersionLabel,
\r
202 public void deleteDirectory(
\r
203 long companyId, long repositoryId, String dirName)
\r
204 throws PortalException, SystemException {
\r
206 store.deleteDirectory(companyId, repositoryId, dirName);
\r
209 public void deleteFile(long companyId, long repositoryId, String fileName)
\r
210 throws PortalException, SystemException {
\r
212 store.deleteFile(companyId, repositoryId, fileName);
\r
215 public void deleteFile(
\r
216 long companyId, long repositoryId, String fileName,
\r
217 String versionLabel)
\r
218 throws PortalException, SystemException {
\r
220 store.deleteFile(companyId, repositoryId, fileName, versionLabel);
\r
223 public File getFile(long companyId, long repositoryId, String fileName)
\r
224 throws PortalException, SystemException {
\r
226 validate(fileName, false);
\r
228 return store.getFile(companyId, repositoryId, fileName);
\r
231 public File getFile(
\r
232 long companyId, long repositoryId, String fileName,
\r
233 String versionLabel)
\r
234 throws PortalException, SystemException {
\r
236 validate(fileName, false);
\r
238 return store.getFile(companyId, repositoryId, fileName, versionLabel);
\r
241 public byte[] getFileAsBytes(
\r
242 long companyId, long repositoryId, String fileName)
\r
243 throws PortalException, SystemException {
\r
245 validate(fileName, false);
\r
247 return store.getFileAsBytes(companyId, repositoryId, fileName);
\r
250 public byte[] getFileAsBytes(
\r
251 long companyId, long repositoryId, String fileName,
\r
252 String versionLabel)
\r
253 throws PortalException, SystemException {
\r
255 validate(fileName, false);
\r
257 return store.getFileAsBytes(
\r
258 companyId, repositoryId, fileName, versionLabel);
\r
261 public InputStream getFileAsStream(
\r
262 long companyId, long repositoryId, String fileName)
\r
263 throws PortalException, SystemException {
\r
265 validate(fileName, false);
\r
267 return store.getFileAsStream(companyId, repositoryId, fileName);
\r
270 public InputStream getFileAsStream(
\r
271 long companyId, long repositoryId, String fileName,
\r
272 String versionLabel)
\r
273 throws PortalException, SystemException {
\r
275 validate(fileName, false);
\r
277 return store.getFileAsStream(
\r
278 companyId, repositoryId, fileName, versionLabel);
\r
281 public String[] getFileNames(
\r
282 long companyId, long repositoryId, String dirName)
\r
283 throws PortalException, SystemException {
\r
285 if (!isValidName(dirName)) {
\r
286 throw new DirectoryNameException(dirName);
\r
289 return store.getFileNames(companyId, repositoryId, dirName);
\r
292 public long getFileSize(long companyId, long repositoryId, String fileName)
\r
293 throws PortalException, SystemException {
\r
295 validate(fileName, false);
\r
297 return store.getFileSize(companyId, repositoryId, fileName);
\r
300 public boolean hasDirectory(
\r
301 long companyId, long repositoryId, String dirName)
\r
302 throws PortalException, SystemException {
\r
304 if (!isValidName(dirName)) {
\r
305 throw new DirectoryNameException(dirName);
\r
308 return store.hasDirectory(companyId, repositoryId, dirName);
\r
311 public boolean hasFile(long companyId, long repositoryId, String fileName)
\r
312 throws PortalException, SystemException {
\r
314 validate(fileName, false);
\r
316 return store.hasFile(companyId, repositoryId, fileName);
\r
319 public boolean hasFile(
\r
320 long companyId, long repositoryId, String fileName,
\r
321 String versionLabel)
\r
322 throws PortalException, SystemException {
\r
324 validate(fileName, false);
\r
326 return store.hasFile(companyId, repositoryId, fileName, versionLabel);
\r
329 public void move(String srcDir, String destDir) throws SystemException {
\r
330 store.move(srcDir, destDir);
\r
333 public Hits search(
\r
334 long companyId, long userId, String portletId, long groupId,
\r
335 long[] repositoryIds, String keywords, int start, int end)
\r
336 throws SystemException {
\r
339 SearchContext searchContext = new SearchContext();
\r
341 searchContext.setCompanyId(companyId);
\r
342 searchContext.setEnd(end);
\r
343 searchContext.setEntryClassNames(
\r
344 new String[] {DLFileEntryConstants.getClassName()});
\r
345 searchContext.setGroupIds(new long[] {groupId});
\r
347 Indexer indexer = IndexerRegistryUtil.getIndexer(
\r
348 DLFileEntryConstants.getClassName());
\r
350 searchContext.setSearchEngineId(indexer.getSearchEngineId());
\r
352 searchContext.setStart(start);
\r
353 searchContext.setUserId(userId);
\r
355 BooleanQuery contextQuery = BooleanQueryFactoryUtil.create(
\r
358 contextQuery.addRequiredTerm(Field.PORTLET_ID, portletId);
\r
360 List<String> solrFilters = new ArrayList<String>();
\r
362 User user = UserLocalServiceUtil.getUser(userId);
\r
364 boolean canViewAllOrganization = false;
\r
365 if (RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
366 ENTRolesConstants.NATIONAL_21, false) ||
\r
367 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
368 ENTRolesConstants.NATIONAL_23, false) ||
\r
369 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
370 ENTRolesConstants.NATIONAL_24, false) ||
\r
371 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
372 ENTRolesConstants.NATIONAL_25, false)) {
\r
373 canViewAllOrganization= true;
\r
377 solrFilters.add(Field.GROUP_ID + ":" + groupId);
\r
378 } else if (canViewAllOrganization) {
\r
379 solrFilters.add(Field.ETAB_ID + ":" + "(" + OrganizationFinderServiceUtil.getEtabRatachement(user).getGroupId() + " OR " + ENTOrganizationsUtil.getOrCreateRootOrg(companyId).getGroupId() + ")");
\r
381 String listGroupId = IndexerUtil.getSearchGroupsQuery(user, true, true, true);
\r
382 solrFilters.add(Field.GROUP_ID + ":" + listGroupId);
\r
385 if ((repositoryIds != null) && (repositoryIds.length > 0)) {
\r
386 BooleanQuery repositoryIdsQuery =
\r
387 BooleanQueryFactoryUtil.create(searchContext);
\r
389 boolean repositoryIdsQueryValid = false;
\r
391 for (long repositoryId : repositoryIds) {
\r
392 if(repositoryId > 0){
\r
396 DLFolderServiceUtil.getFolder(repositoryId);
\r
397 repositoryIdsQueryValid = true;
\r
399 catch (Exception e) {
\r
404 TermQuery termQuery = TermQueryFactoryUtil.create(
\r
405 searchContext, "repositoryId", repositoryId);
\r
407 repositoryIdsQuery.add(
\r
408 termQuery, BooleanClauseOccur.SHOULD);
\r
410 catch (Exception e) {
\r
415 if(repositoryIdsQueryValid){
\r
416 contextQuery.add(repositoryIdsQuery, BooleanClauseOccur.MUST);
\r
420 String query = SolrQueryUtil.getQueryFromKeywords(keywords, true);
\r
421 String queryWithoutFuzzySearch = SolrQueryUtil.getQueryFromKeywords(keywords, false);
\r
423 solrFilters.add("(" + Field.TITLE + ":" + query + ") "
\r
424 + "OR (" + Field.CONTENT + ":" + queryWithoutFuzzySearch + ") "
\r
425 + "OR (" + Field.PROPERTIES + ":" + queryWithoutFuzzySearch + ") "
\r
426 + "OR (" + Field.ASSET_TAG_NAMES + ":" + query + ")");
\r
428 BooleanQuery fullQuery = BooleanQueryFactoryUtil.create(searchContext);
\r
430 fullQuery.add(contextQuery, BooleanClauseOccur.MUST);
\r
432 //userId a 0 car on gere nous meme les permissions
\r
433 return SearchEngineUtil.search(
\r
434 indexer.getSearchEngineId(), companyId, fullQuery, solrFilters, start, end);
\r
436 catch (Exception e) {
\r
437 throw new SystemException(e);
\r
441 public Hits searchByDate(
\r
442 long companyId, String portletId, long groupId,
\r
443 long userId, long[] repositoryIds, String keywords, int start,
\r
444 int end) throws SystemException {
\r
447 SearchContext searchContext = new SearchContext();
\r
449 searchContext.setCompanyId(companyId);
\r
450 searchContext.setEnd(end);
\r
451 searchContext.setEntryClassNames(
\r
452 new String[] {DLFileEntryConstants.getClassName()});
\r
453 searchContext.setGroupIds(new long[] {groupId});
\r
455 Indexer indexer = IndexerRegistryUtil.getIndexer(
\r
456 DLFileEntryConstants.getClassName());
\r
458 searchContext.setSearchEngineId(indexer.getSearchEngineId());
\r
460 searchContext.setStart(start);
\r
461 searchContext.setUserId(userId);
\r
463 BooleanQuery contextQuery = BooleanQueryFactoryUtil.create(
\r
466 contextQuery.addRequiredTerm(Field.PORTLET_ID, portletId);
\r
468 List<String> solrFilters = new ArrayList<String>();
\r
470 User user = UserLocalServiceUtil.getUser(userId);
\r
472 boolean canViewAllOrganization = false;
\r
473 if (RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
474 ENTRolesConstants.NATIONAL_21, false) ||
\r
475 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
476 ENTRolesConstants.NATIONAL_23, false) ||
\r
477 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
478 ENTRolesConstants.NATIONAL_24, false) ||
\r
479 RoleLocalServiceUtil.hasUserRole(user.getUserId(), user.getCompanyId(),
\r
480 ENTRolesConstants.NATIONAL_25, false)) {
\r
481 canViewAllOrganization= true;
\r
485 solrFilters.add(Field.GROUP_ID + ":" + groupId);
\r
486 } else if (canViewAllOrganization) {
\r
487 solrFilters.add(Field.ETAB_ID + ":" + "(" + OrganizationFinderServiceUtil.getEtabRatachement(user).getGroupId() + " OR " + ENTOrganizationsUtil.getOrCreateRootOrg(companyId).getGroupId() + ")");
\r
489 String listGroupId = IndexerUtil.getSearchGroupsQuery(user, true, true, true);
\r
490 solrFilters.add(Field.GROUP_ID + ":" + listGroupId);
\r
494 if ((repositoryIds != null) && (repositoryIds.length > 0)) {
\r
495 BooleanQuery repositoryIdsQuery =
\r
496 BooleanQueryFactoryUtil.create(searchContext);
\r
498 for (long repositoryId : repositoryIds) {
\r
502 DLFolderServiceUtil.getFolder(repositoryId);
\r
504 catch (Exception e) {
\r
509 TermQuery termQuery = TermQueryFactoryUtil.create(
\r
510 searchContext, "repositoryId", repositoryId);
\r
512 repositoryIdsQuery.add(
\r
513 termQuery, BooleanClauseOccur.SHOULD);
\r
515 catch (Exception e) {
\r
519 contextQuery.add(repositoryIdsQuery, BooleanClauseOccur.MUST);
\r
522 if (!keywords.isEmpty()) {
\r
523 //Field.MODIFIED_DATE = "modified" only
\r
524 solrFilters.add("modifiedDate" + ":" + keywords);
\r
527 BooleanQuery fullQuery = BooleanQueryFactoryUtil.create(searchContext);
\r
529 fullQuery.add(contextQuery, BooleanClauseOccur.MUST);
\r
531 //userId a 0 car on gere nous meme les permissions
\r
532 return SearchEngineUtil.search(
\r
533 indexer.getSearchEngineId(), companyId, fullQuery, solrFilters, start, end);
\r
535 catch (Exception e) {
\r
536 throw new SystemException(e);
\r
540 public void updateFile(
\r
541 long companyId, long repositoryId, long newRepositoryId,
\r
543 throws PortalException, SystemException {
\r
545 store.updateFile(companyId, repositoryId, newRepositoryId, fileName);
\r
548 public void updateFile(
\r
549 long companyId, long repositoryId, String fileName,
\r
550 String newFileName)
\r
551 throws PortalException, SystemException {
\r
553 store.updateFile(companyId, repositoryId, fileName, newFileName);
\r
556 public void updateFile(
\r
557 long companyId, long repositoryId, String fileName,
\r
558 String fileExtension, boolean validateFileExtension,
\r
559 String versionLabel, String sourceFileName, File file)
\r
560 throws PortalException, SystemException {
\r
563 fileName, fileExtension, sourceFileName, validateFileExtension,
\r
566 if (!PropsValues.DL_STORE_ANTIVIRUS_ENABLED) {
\r
567 AntivirusScannerUtil.scan(file);
\r
570 store.updateFile(companyId, repositoryId, fileName, versionLabel, file);
\r
573 public void updateFile(
\r
574 long companyId, long repositoryId, String fileName,
\r
575 String fileExtension, boolean validateFileExtension,
\r
576 String versionLabel, String sourceFileName, InputStream is)
\r
577 throws PortalException, SystemException {
\r
579 if (is instanceof ByteArrayFileInputStream) {
\r
580 ByteArrayFileInputStream byteArrayFileInputStream =
\r
581 (ByteArrayFileInputStream)is;
\r
583 File file = byteArrayFileInputStream.getFile();
\r
586 companyId, repositoryId, fileName, fileExtension,
\r
587 validateFileExtension, versionLabel, sourceFileName, file);
\r
593 fileName, fileExtension, sourceFileName, validateFileExtension, is);
\r
595 if (!PropsValues.DL_STORE_ANTIVIRUS_ENABLED ||
\r
596 !AntivirusScannerUtil.isActive()) {
\r
599 companyId, repositoryId, fileName, versionLabel, is);
\r
602 File tempFile = null;
\r
605 if (is.markSupported()) {
\r
606 is.mark(is.available() + 1);
\r
608 AntivirusScannerUtil.scan(is);
\r
613 companyId, repositoryId, fileName, versionLabel, is);
\r
616 tempFile = FileUtil.createTempFile();
\r
618 FileUtil.write(tempFile, is);
\r
620 AntivirusScannerUtil.scan(tempFile);
\r
623 companyId, repositoryId, fileName, versionLabel,
\r
627 catch (IOException ioe) {
\r
628 throw new SystemException(
\r
629 "Unable to scan file " + fileName, ioe);
\r
632 if (tempFile != null) {
\r
639 public void updateFileVersion(
\r
640 long companyId, long repositoryId, String fileName,
\r
641 String fromVersionLabel, String toVersionLabel)
\r
642 throws PortalException, SystemException {
\r
644 store.updateFileVersion(
\r
645 companyId, repositoryId, fileName, fromVersionLabel,
\r
649 public void validate(String fileName, boolean validateFileExtension)
\r
650 throws PortalException, SystemException {
\r
652 if (!isValidName(fileName)) {
\r
653 throw new FileNameException(fileName);
\r
656 if (validateFileExtension) {
\r
657 boolean validFileExtension = false;
\r
659 String[] fileExtensions = PrefsPropsUtil.getStringArray(
\r
660 PropsKeys.DL_FILE_EXTENSIONS, StringPool.COMMA);
\r
662 for (String fileExtension : fileExtensions) {
\r
663 if (StringPool.STAR.equals(fileExtension) ||
\r
664 StringUtil.endsWith(fileName, fileExtension)) {
\r
666 validFileExtension = true;
\r
672 if (!validFileExtension) {
\r
673 throw new FileExtensionException(fileName);
\r
678 public void validate(
\r
679 String fileName, boolean validateFileExtension, byte[] bytes)
\r
680 throws PortalException, SystemException {
\r
682 validate(fileName, validateFileExtension);
\r
684 if ((PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE) > 0) &&
\r
685 ((bytes == null) ||
\r
687 PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE)))) {
\r
689 throw new FileSizeException(fileName);
\r
693 public void validate(
\r
694 String fileName, boolean validateFileExtension, File file)
\r
695 throws PortalException, SystemException {
\r
697 validate(fileName, validateFileExtension);
\r
699 if ((PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE) > 0) &&
\r
702 PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE)))) {
\r
704 throw new FileSizeException(fileName);
\r
708 public void validate(
\r
709 String fileName, boolean validateFileExtension, InputStream is)
\r
710 throws PortalException, SystemException {
\r
712 validate(fileName, validateFileExtension);
\r
717 if ((is == null) ||
\r
718 ((PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE) > 0) &&
\r
720 PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE)))) {
\r
722 throw new FileSizeException(fileName);
\r
725 catch (IOException ioe) {
\r
726 throw new FileSizeException(ioe.getMessage());
\r
730 public void validate(
\r
731 String fileName, String fileExtension, String sourceFileName,
\r
732 boolean validateFileExtension, File file)
\r
733 throws PortalException, SystemException {
\r
736 fileName, fileExtension, sourceFileName, validateFileExtension);
\r
738 if ((file != null) &&
\r
739 (PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE) > 0) &&
\r
741 PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE))) {
\r
743 throw new FileSizeException(fileName);
\r
747 public void validate(
\r
748 String fileName, String fileExtension, String sourceFileName,
\r
749 boolean validateFileExtension, InputStream is)
\r
750 throws PortalException, SystemException {
\r
753 fileName, fileExtension, sourceFileName, validateFileExtension);
\r
756 if ((is != null) &&
\r
757 (PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE) > 0) &&
\r
759 PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE))) {
\r
761 throw new FileSizeException(fileName);
\r
764 catch (IOException ioe) {
\r
765 throw new FileSizeException(ioe.getMessage());
\r
769 protected boolean isValidName(String name) {
\r
770 if ((name == null) ||
\r
771 name.contains("\\") ||
\r
772 name.contains("\\\\") ||
\r
773 name.contains("//") ||
\r
774 name.contains(":") ||
\r
775 name.contains("*") ||
\r
776 name.contains("?") ||
\r
777 name.contains("\"") ||
\r
778 name.contains("<") ||
\r
779 name.contains(">") ||
\r
780 name.contains("|") ||
\r
781 name.contains("[") ||
\r
782 name.contains("]") ||
\r
783 name.contains("../") ||
\r
784 name.contains("/..")) {
\r
792 protected void validate(
\r
793 String fileName, String fileExtension, String sourceFileName,
\r
794 boolean validateFileExtension)
\r
795 throws PortalException, SystemException {
\r
797 String sourceFileExtension = FileUtil.getExtension(sourceFileName);
\r
799 if (Validator.isNotNull(sourceFileName) &&
\r
800 PropsValues.DL_FILE_EXTENSIONS_STRICT_CHECK &&
\r
801 !fileExtension.equals(sourceFileExtension)) {
\r
803 throw new SourceFileNameException(sourceFileExtension);
\r
806 validate(fileName, validateFileExtension);
\r
809 @BeanReference(type = GroupLocalService.class)
\r
810 protected GroupLocalService groupLocalService;
\r
812 @BeanReference(type = Store.class)
\r
813 protected Store store;
\r
815 private static final String[] _KEYWORDS_FIELDS = {
\r
816 Field.ASSET_TAG_NAMES, Field.CONTENT, Field.PROPERTIES
\r