/branches/versions/aipo703/aipo/portlets/cabinet/src/main/java/com/aimluck/eip/cabinet/CabinetFileMultiDelete.java

http://aipo.googlecode.com/ · Java · 152 lines · 85 code · 18 blank · 49 comment · 10 complexity · dd4e24f2032351b9d030f984cff4b2ac MD5 · raw file

  1. /*
  2. * Aipo is a groupware program developed by Aimluck,Inc.
  3. * Copyright (C) 2004-2011 Aimluck,Inc.
  4. * http://www.aipo.com
  5. *
  6. * This program is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU Affero General Public License as
  8. * published by the Free Software Foundation, either version 3 of the
  9. * License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU Affero General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Affero General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package com.aimluck.eip.cabinet;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import org.apache.cayenne.exp.Expression;
  23. import org.apache.cayenne.exp.ExpressionFactory;
  24. import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
  25. import org.apache.jetspeed.services.logging.JetspeedLogger;
  26. import org.apache.turbine.util.RunData;
  27. import org.apache.velocity.context.Context;
  28. import com.aimluck.eip.cabinet.util.CabinetUtils;
  29. import com.aimluck.eip.cayenne.om.portlet.EipTCabinetFile;
  30. import com.aimluck.eip.common.ALAbstractCheckList;
  31. import com.aimluck.eip.orm.Database;
  32. import com.aimluck.eip.orm.query.SelectQuery;
  33. import com.aimluck.eip.services.accessctl.ALAccessControlConstants;
  34. import com.aimluck.eip.services.eventlog.ALEventlogConstants;
  35. import com.aimluck.eip.services.eventlog.ALEventlogFactoryService;
  36. import com.aimluck.eip.services.storage.ALStorageService;
  37. import com.aimluck.eip.util.ALLocalizationUtils;
  38. /**
  39. * ???????????????????????????? <BR>
  40. *
  41. */
  42. public class CabinetFileMultiDelete extends ALAbstractCheckList {
  43. /** logger */
  44. private static final JetspeedLogger logger = JetspeedLogFactoryService
  45. .getLogger(CabinetFileMultiDelete.class.getName());
  46. /**
  47. *
  48. * @param rundata
  49. * @param context
  50. * @param values
  51. * @param msgList
  52. * @return
  53. */
  54. @Override
  55. protected boolean action(RunData rundata, Context context,
  56. List<String> values, List<String> msgList) {
  57. try {
  58. SelectQuery<EipTCabinetFile> query =
  59. Database.query(EipTCabinetFile.class);
  60. Expression exp =
  61. ExpressionFactory.inDbExp(EipTCabinetFile.FILE_ID_PK_COLUMN, values);
  62. query.setQualifier(exp);
  63. List<EipTCabinetFile> filelist = query.fetchList();
  64. if (filelist == null || filelist.size() == 0) {
  65. return false;
  66. }
  67. for (int i = 0; i < filelist.size(); i++) {
  68. if (!CabinetUtils.isEditableFolder(
  69. filelist.get(i).getFolderId(),
  70. rundata)) {
  71. msgList.add(ALLocalizationUtils
  72. .getl10n("CABINET_DONOT_AUTHORITY_FILE"));
  73. return false;
  74. }
  75. List<String> fpaths = new ArrayList<String>();
  76. for (i = 0; i < filelist.size(); i++) {
  77. EipTCabinetFile cabinetfile = filelist.get(i);
  78. fpaths.add(cabinetfile.getFilePath());
  79. }
  80. // ???????
  81. int filelistsize = filelist.size();
  82. for (i = 0; i < filelistsize; i++) {
  83. EipTCabinetFile file = filelist.get(i);
  84. // entityId???
  85. Integer entityId = file.getFileId();
  86. // file????
  87. String fileName = file.getFileTitle();
  88. // file???
  89. Database.delete(file);
  90. Database.commit();
  91. // ?????
  92. ALEventlogFactoryService.getInstance().getEventlogHandler().log(
  93. entityId,
  94. ALEventlogConstants.PORTLET_TYPE_CABINET_FILE,
  95. fileName);
  96. }
  97. int fpathSize = fpaths.size();
  98. if (fpathSize > 0) {
  99. // ??????????????????????????
  100. String orgId = Database.getDomainName();
  101. for (i = 0; i < fpathSize; i++) {
  102. ALStorageService.deleteFile(CabinetUtils.getSaveDirPath(orgId)
  103. + fpaths.get(i));
  104. }
  105. }
  106. }
  107. } catch (Exception ex) {
  108. Database.rollback();
  109. logger.error("cabinet", ex);
  110. return false;
  111. }
  112. return true;
  113. }
  114. /**
  115. * ????????????????<br />
  116. * ????????????
  117. *
  118. * @return
  119. */
  120. @Override
  121. protected int getDefineAclType() {
  122. return ALAccessControlConstants.VALUE_ACL_DELETE;
  123. }
  124. /**
  125. * ????????????????<br />
  126. * ????????????????
  127. *
  128. * @return
  129. */
  130. @Override
  131. public String getAclPortletFeature() {
  132. return ALAccessControlConstants.POERTLET_FEATURE_CABINET_FILE;
  133. }
  134. }