Advertisement
Guest User

Untitled

a guest
May 30th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.76 KB | None | 0 0
  1. package net.zylk.action.executer;
  2.  
  3.  
  4. import org.alfresco.error.AlfrescoRuntimeException;
  5. import org.alfresco.model.ContentModel;
  6. import org.alfresco.repo.action.ParameterDefinitionImpl;
  7. import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
  8. import org.alfresco.repo.security.authentication.AuthenticationUtil;
  9. import org.alfresco.repo.transaction.RetryingTransactionHelper;
  10. import org.alfresco.service.cmr.action.Action;
  11. import org.alfresco.service.cmr.action.ParameterDefinition;
  12. import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
  13. import org.alfresco.service.cmr.model.*;
  14. import org.alfresco.service.cmr.repository.*;
  15. import org.apache.log4j.Logger;
  16. import org.springframework.transaction.annotation.Propagation;
  17. import org.springframework.transaction.annotation.Transactional;
  18.  
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21.  
  22. public class Folderizer extends ActionExecuterAbstractBase {
  23.  
  24.     private static Logger log = Logger.getLogger(Folderizer.class);
  25.  
  26.     protected NodeService nodeService;
  27.     protected FileFolderService fileFolderService;
  28.     protected RetryingTransactionHelper retryingTransactionHelper;
  29.  
  30.     public static final String NAME = "zylk-folderizer-action";
  31.     public static final String PARAM_DESTINATION_FOLDER = "destination-folder";
  32.     public static final String PARAM_DATE_PATTERN = "date-pattern";
  33.  
  34.     public Folderizer() {
  35.         super();
  36.         log.warn("---------- Folderizer INIT -------");
  37.     }
  38.  
  39.  
  40.     @Override
  41.     protected void addParameterDefinitions(List<ParameterDefinition> paramList) {
  42.         paramList.add(new ParameterDefinitionImpl(PARAM_DESTINATION_FOLDER,
  43.                 DataTypeDefinition.NODE_REF,
  44.                 false,
  45.                 getParamDisplayLabel(PARAM_DESTINATION_FOLDER)));
  46.         paramList.add(new ParameterDefinitionImpl(PARAM_DATE_PATTERN,
  47.                 DataTypeDefinition.TEXT,
  48.                 false,
  49.                 getParamDisplayLabel(PARAM_DATE_PATTERN)));
  50.     }
  51.  
  52.  
  53.     @Override
  54.     protected void executeImpl(final Action action, final NodeRef actionedUponNodeRef) {
  55.  
  56.         final String LOG_FOLDERIZER_HEADER = "[ZK] " + String.valueOf(UUID.randomUUID()).substring(0, 2) + " ";
  57.  
  58.         try {
  59.  
  60.             // get rule params
  61.             final NodeRef destinationFolder = (NodeRef) action.getParameterValue(PARAM_DESTINATION_FOLDER);
  62.             log.warn(LOG_FOLDERIZER_HEADER + "Destination Folder: " + fileFolderService.getFileInfo(destinationFolder).getName());
  63.  
  64.             final String datePathPattern = action.getParameterValue(PARAM_DATE_PATTERN).toString();
  65.             log.warn(LOG_FOLDERIZER_HEADER + "Date Pattern: " + datePathPattern);
  66.  
  67.             // uploaded file info trace
  68.             System.out.printf(LOG_FOLDERIZER_HEADER + "executeImpl");
  69.             log.warn(LOG_FOLDERIZER_HEADER + "Uploaded file: " + actionedUponNodeRef);
  70.             final FileInfo updateFile = fileFolderService.getFileInfo(actionedUponNodeRef);
  71.             logUploadFile(LOG_FOLDERIZER_HEADER, updateFile);
  72.  
  73.             final Date creationDate = (Date) nodeService.getProperty(actionedUponNodeRef, ContentModel.PROP_CREATED);
  74.             log.warn(LOG_FOLDERIZER_HEADER + "Creation date:" + creationDate);
  75.  
  76.  
  77.             // create destination folder
  78.             log.info(LOG_FOLDERIZER_HEADER + "@@@@@ op1. createIfNotExists - retrying transaction ");
  79.             NodeRef destinationDateFolder = createFolderIfNotExistingByDatePattern(destinationFolder, datePathPattern, creationDate, LOG_FOLDERIZER_HEADER);
  80.             log.warn(LOG_FOLDERIZER_HEADER + "Final destination folder: " + destinationDateFolder);
  81.  
  82.  
  83.             if (destinationDateFolder != null && fileFolderService.exists(destinationDateFolder)) {
  84.                 log.info(LOG_FOLDERIZER_HEADER + "@@@@@ op2. move - retrying transaction ");
  85.                 FileInfo movedFile = fileFolderService.move(actionedUponNodeRef, destinationDateFolder, null);
  86.  
  87.                 logUploadFile(LOG_FOLDERIZER_HEADER, movedFile);
  88.                 log.info(LOG_FOLDERIZER_HEADER + "File folderized : " + movedFile.getNodeRef());
  89.                 log.info(LOG_FOLDERIZER_HEADER + "File folderized : " + movedFile);
  90.  
  91.             } else {
  92.                 log.error(LOG_FOLDERIZER_HEADER + "Destination folder not created");
  93.             }
  94.  
  95.         }catch (FileNotFoundException e){
  96.             log.error(LOG_FOLDERIZER_HEADER + "FileNotFoundException", e);
  97.             throw new RuntimeException(e);
  98.  
  99.         }catch(Exception e){
  100.             log.error(LOG_FOLDERIZER_HEADER + "Exception", e);
  101.             throw e;
  102.  
  103.         } catch (Throwable t) {
  104.             log.error(LOG_FOLDERIZER_HEADER + "Throwable", t);
  105.             throw t;
  106.         }
  107.     }
  108.  
  109.  
  110.     private void logUploadFile(String LOG_FOLDERIZER_HEADER, FileInfo file) {
  111.         log.warn("------------------------------------------------------------------------");
  112.         log.warn(LOG_FOLDERIZER_HEADER + "Executing Action for: " + file.getName());
  113.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo name= " + file.getName());
  114.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo noderef= " + file.getNodeRef());
  115.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo createdDate= " + file.getCreatedDate());
  116.         log.warn("------------------------------------------------------------------------");
  117.     }
  118.  
  119.     private NodeRef createFolderIfNotExistingByDatePattern(NodeRef parent, String datePathPattern, Date creationDate, String LOG_FOLDERIZER_HEADER) {
  120.         String formattedDate;
  121.         try {
  122.             SimpleDateFormat formatter = new SimpleDateFormat(datePathPattern, Locale.ENGLISH);
  123.             formattedDate = formatter.format(creationDate);
  124.         } catch (IllegalArgumentException exInvalid) {
  125.             throw new AlfrescoRuntimeException("zylk-folderizer-action.label.error.invalidPattern");
  126.         } catch (NullPointerException exNull) {
  127.             throw new AlfrescoRuntimeException("zylk-folderizer-action.label.error.nullCreationDate");
  128.         }
  129.         List<String> structuredFolders = Arrays.asList(formattedDate.split("/"));
  130.  
  131.         FileInfo lastPathFolder = FileFolderUtil.makeFolders(fileFolderService, parent, structuredFolders, ContentModel.TYPE_FOLDER);
  132.         log.info(LOG_FOLDERIZER_HEADER  + "post makeFolders | " + lastPathFolder.toString());
  133.  
  134.         return lastPathFolder.getNodeRef();
  135.     }
  136.  
  137.  
  138.     public void setNodeService(NodeService nodeService) {
  139.         this.nodeService = nodeService;
  140.     }
  141.  
  142.     public void setFileFolderService(FileFolderService fileFolderService) {
  143.         this.fileFolderService = fileFolderService;
  144.     }
  145.  
  146.     public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper) {
  147.         this.retryingTransactionHelper = retryingTransactionHelper;
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement