Advertisement
Guest User

Untitled

a guest
May 29th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.44 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.transaction.RetryingTransactionHelper;
  9. import org.alfresco.service.cmr.action.Action;
  10. import org.alfresco.service.cmr.action.ParameterDefinition;
  11. import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
  12. import org.alfresco.service.cmr.model.FileFolderService;
  13. import org.alfresco.service.cmr.model.FileFolderUtil;
  14. import org.alfresco.service.cmr.model.FileInfo;
  15. import org.alfresco.service.cmr.model.FileNotFoundException;
  16. import org.alfresco.service.cmr.repository.*;
  17. import org.apache.log4j.Logger;
  18.  
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21.  
  22. public class Folderizer extends ActionExecuterAbstractBase {
  23.  
  24.     private 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.             final NodeRef destinationDateFolder = retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<NodeRef>() {
  79.                 public NodeRef execute() throws Throwable {
  80.                     log.info(LOG_FOLDERIZER_HEADER + "@@@@@ op1. createIfNotExists - retrying transaction ");
  81.                     NodeRef destinationDateFolder = createFolderIfNotExistingByDatePattern(destinationFolder, datePathPattern, creationDate, LOG_FOLDERIZER_HEADER);
  82.                     log.warn(LOG_FOLDERIZER_HEADER + "Final destination folder: " + destinationDateFolder);
  83.  
  84.                     return destinationDateFolder;
  85.  
  86.                 }
  87.             }, false, true);
  88.  
  89.  
  90.             if (destinationDateFolder != null && fileFolderService.exists(destinationDateFolder)) {
  91.                 FileInfo movedFile = retryingTransactionHelper.doInTransaction(
  92.                         new RetryingTransactionHelper.RetryingTransactionCallback<FileInfo>() {
  93.                             public FileInfo execute() throws Throwable {
  94.  
  95.                                 log.info(LOG_FOLDERIZER_HEADER + "@@@@@ op2. move - retrying transaction ");
  96.                                 FileInfo movedFile = fileFolderService.move(actionedUponNodeRef, destinationDateFolder, null);
  97.  
  98.                                 logUploadFile(LOG_FOLDERIZER_HEADER, movedFile);
  99.                                 log.info(LOG_FOLDERIZER_HEADER + "File folderized : " + movedFile.getNodeRef());
  100.                                 log.info(LOG_FOLDERIZER_HEADER + "File folderized : " + movedFile);
  101.                                 return movedFile;
  102.                             }
  103.                         }, false, true);
  104.  
  105.             } else {
  106.                 log.error(LOG_FOLDERIZER_HEADER + "Destination folder not created");
  107.             }
  108.  
  109.         }catch(Exception e){
  110.             log.error(LOG_FOLDERIZER_HEADER + "Exception", e);
  111.             throw e;
  112.  
  113.         } catch (Throwable t) {
  114.             log.error(LOG_FOLDERIZER_HEADER + "Throwable", t);
  115.             throw t;
  116.         }
  117.     }
  118.  
  119.  
  120.     private void logUploadFile(String LOG_FOLDERIZER_HEADER, FileInfo file) {
  121.         log.warn("------------------------------------------------------------------------");
  122.         log.warn(LOG_FOLDERIZER_HEADER + "Executing Action for: " + file.getName());
  123.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo name= " + file.getName());
  124.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo noderef= " + file.getNodeRef());
  125.         log.warn(LOG_FOLDERIZER_HEADER + "UpdateFileInfo createdDate= " + file.getCreatedDate());
  126.         log.warn("------------------------------------------------------------------------");
  127.     }
  128.  
  129.     private NodeRef createFolderIfNotExistingByDatePattern(NodeRef parent, String datePathPattern, Date creationDate, String LOG_FOLDERIZER_HEADER) throws InvalidNodeRefException, IllegalArgumentException, FileNotFoundException {
  130.         String formattedDate;
  131.         try {
  132.             SimpleDateFormat formatter = new SimpleDateFormat(datePathPattern, Locale.ENGLISH);
  133.             formattedDate = formatter.format(creationDate);
  134.         } catch (IllegalArgumentException exInvalid) {
  135.             throw new AlfrescoRuntimeException("zylk-folderizer-action.label.error.invalidPattern");
  136.         } catch (NullPointerException exNull) {
  137.             throw new AlfrescoRuntimeException("zylk-folderizer-action.label.error.nullCreationDate");
  138.         }
  139.         List<String> structuredFolders = Arrays.asList(formattedDate.split("/"));
  140.         FileInfo lastPathFolder = FileFolderUtil.makeFolders(fileFolderService, parent, structuredFolders, ContentModel.TYPE_FOLDER);
  141.         log.info(LOG_FOLDERIZER_HEADER  + "post makeFolders | " + lastPathFolder.toString());
  142.         return lastPathFolder.getNodeRef();
  143.     }
  144.  
  145.  
  146.     public void setNodeService(NodeService nodeService) {
  147.         this.nodeService = nodeService;
  148.     }
  149.  
  150.     public void setFileFolderService(FileFolderService fileFolderService) {
  151.         this.fileFolderService = fileFolderService;
  152.     }
  153.  
  154.     public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper) {
  155.         this.retryingTransactionHelper = retryingTransactionHelper;
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement