Advertisement
Guest User

aaaa

a guest
Jan 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.07 KB | None | 0 0
  1. package com.trulia.aem.projects.workflow;
  2.  
  3. import javax.jcr.Node;
  4. import javax.jcr.NodeIterator;
  5.  
  6. import org.apache.sling.api.resource.Resource;
  7. import org.apache.sling.api.resource.ResourceResolver;
  8. import org.apache.sling.api.resource.ResourceResolverFactory;
  9. import org.osgi.service.component.annotations.Component;
  10. import org.osgi.service.component.annotations.Reference;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13.  
  14. import com.day.cq.dam.api.Asset;
  15. import com.day.cq.dam.commons.util.DamUtil;
  16. import com.day.cq.workflow.WorkflowException;
  17. import com.day.cq.workflow.WorkflowSession;
  18. import com.day.cq.workflow.exec.WorkItem;
  19. import com.day.cq.workflow.exec.WorkflowProcess;
  20. import com.day.cq.workflow.metadata.MetaDataMap;
  21. import com.google.gson.Gson;
  22. import com.google.gson.GsonBuilder;
  23. import com.google.gson.JsonElement;
  24. import com.trulia.aem.dam.api.media.model.CollectionsResponse;
  25. import com.trulia.aem.dam.api.media.model.GenerateURLResponse;
  26. import com.trulia.aem.dam.api.media.model.GenerateUrlParams;
  27. import com.trulia.aem.dam.api.media.model.Media;
  28. import com.trulia.aem.dam.api.media.model.MediaItem;
  29. import com.trulia.aem.dam.api.media.model.Metadata;
  30. import com.trulia.aem.dam.api.media.model.PreviewUrlResponse;
  31. import com.trulia.aem.dam.api.media.service.MediaApiClientService;
  32. import com.trulia.aem.dam.core.TruliaMetadataConstants;
  33. import com.trulia.aem.dam.workflow.TruliaAssetUtils;
  34.  
  35. @Component(immediate=true, service=WorkflowProcess.class, property={"process.label=Trulia Gallery Publish Process"})
  36.  
  37. public class TruliaGalleryPublishProcess extends AbstractProjectWorkflowProcess implements WorkflowProcess {
  38.  
  39.  
  40. private static final Logger log = LoggerFactory.getLogger(TruliaGalleryPublishProcess.class);
  41.  
  42. @Reference
  43. private ResourceResolverFactory resolverFactory;
  44.  
  45. @Reference
  46. private MediaApiClientService mediaService;
  47.  
  48. @Override
  49. public void execute(WorkItem item, WorkflowSession session, MetaDataMap map)
  50. throws WorkflowException {
  51.  
  52. Node projectNode = getDamFolderFromPayload(item, session.getSession(), resolverFactory);
  53. try {
  54.  
  55. Node galleryNode = projectNode.getNode("gallery");
  56. if (galleryNode.hasProperty("neighborhoodid")) {
  57. String neighborhoodid = galleryNode.getProperty("neighborhoodid").getString();
  58.  
  59. int nid = Integer.parseInt(neighborhoodid);
  60.  
  61. CollectionsResponse colResponse = mediaService.createCollectionInNeighborhood(nid, false);
  62.  
  63. NodeIterator assets = galleryNode.getNodes();
  64.  
  65. while(assets.hasNext()) {
  66. Node cNode = assets.nextNode();
  67. ResourceResolver rr = getResourceResolver(resolverFactory, session.getSession());
  68. Resource res = rr.getResource(cNode.getPath());
  69. if (DamUtil.isAsset(res)) {
  70. Asset asset = res.adaptTo(Asset.class);
  71.  
  72. String filename = asset.getName();
  73. GenerateUrlParams params = new GenerateUrlParams(filename, asset.getMimeType(), 0);
  74. GenerateURLResponse response = mediaService.generateURL(nid, colResponse.getId(), 0, params);
  75.  
  76. String responseS3Key = response.getS3Key();
  77. String dataUrl = response.getData().getUrl();
  78. Object fields = response.getData().getFields();
  79.  
  80. String resu = fields.toString();
  81. resu = resu.substring(1, resu.length()-1);
  82. boolean isUploadOk = mediaService.uploadObjectToS3(responseS3Key, dataUrl, resu, asset);
  83.  
  84. if (isUploadOk) {
  85. Metadata responseMetadata = new Metadata(Integer.parseInt(asset.getMetadataValue("tiff:ImageWidth")), Integer.parseInt(asset.getMetadataValue("tiff:ImageLength")), Integer.parseInt(asset.getMetadataValue("durationInSeconds")), Integer.parseInt(asset.getMetadataValue("aspectRatio")));
  86.  
  87. String title = asset.getName();
  88. String caption = asset.getMetadataValue("dc:description");
  89. Integer category=1;
  90. Double lat = TruliaAssetUtils.convertGPSStringToDouble(asset.getMetadataValue(TruliaMetadataConstants.GPS_LATITUDE));
  91. Double lon = TruliaAssetUtils.convertGPSStringToDouble(asset.getMetadataValue(TruliaMetadataConstants.GPS_LONGITUDE));
  92. Integer order = 0;
  93. String keywords = "";
  94. String s3Key= responseS3Key;
  95. String altText="";
  96. Boolean isVideo = false;
  97. Boolean isVideoProcessed = false;
  98. Boolean isHero=true;
  99. Boolean isCategoryHero=true;
  100. Boolean isAllPhotosHero=true;
  101. Metadata metadata=responseMetadata;
  102.  
  103. MediaItem mediaItem = new MediaItem(title, caption,category, lat, lon, order, keywords, s3Key, altText, isVideo, isVideoProcessed, isHero, isCategoryHero, isAllPhotosHero, metadata);
  104.  
  105. Media addedItem = mediaService.addMediaItemToCollection(nid, colResponse.getId(), mediaItem);
  106. PreviewUrlResponse preview = mediaService.previewURL(colResponse.getId(), nid);
  107.  
  108. galleryNode.setProperty("previewBase", preview.getBase());
  109. galleryNode.setProperty("previewPath", preview.getPath());
  110. rr.commit();
  111. }else {
  112. log.error("Error uploading object to S3");
  113. }
  114. }
  115. }
  116. }
  117.  
  118. } catch (Exception e) {
  119. log.error("Error publishing the gallery", e);
  120. }
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement