@PostConstruct public void init() throws SlingModelsException { Asset asset = resource.adaptTo(Asset.class); if(null == asset){ return; } Rendition rendition = (asset.getRendition("plain") != null) ? asset.getRendition("plain") : asset.getOriginal(); StringWriter writer = new StringWriter(); try { IOUtils.copy(rendition.getStream(), writer, "UTF8"); this.body = writer.toString(); } catch (IOException e) { LOG.error("Error reading rendition: {}", rendition.getPath(), e); } }
throws RepositoryException { String title = asset.getName(); if (StringUtils.isNotBlank(asset.getMetadataValue(DamConstants.DC_TITLE))) { title = asset.getMetadataValue(DamConstants.DC_TITLE); excerpt = StringUtils.stripToEmpty(asset.getMetadataValue(DamConstants.DC_DESCRIPTION)); if (excerpt.length() > MAX_EXCERPT_LENGTH) { excerpt = StringUtils.substring(excerpt, 0, (MAX_EXCERPT_LENGTH - ELLIPSE_LENGTH)) + "..."; map.put(CF_PATH, asset.getPath()); map.put(CF_NAME, asset.getName()); map.put(CF_TITLE, title); map.put(CF_EXCERPT, excerpt); map.put(CF_MIMETYPE, asset.getMimeType()); map.put(CF_SIZE, getSize(asset)); map.put(CF_CACHE_KILLER, getCacheKiller(asset));
/** * Updates AEM System properties of the Asset. * @param asset the asset to update. */ private void updateSystemProperties(final Asset asset) { Resource resource = asset.adaptTo(Resource.class); Resource jcrContentResource = resource.getChild(JcrConstants.JCR_CONTENT); if (jcrContentResource == null) { log.error("Could not find the jcr:content node for asset [ {} ]", asset.getPath()); return; } final ModifiableValueMap properties = jcrContentResource.adaptTo(ModifiableValueMap.class); properties.put("cq:name", asset.getName()); properties.put("cq:parentPath", StringUtils.removeEnd(asset.getPath(), "/" + asset.getName())); }
public String getTitle() { return StringUtils.defaultIfBlank(StringUtils.defaultIfBlank(asset.getMetadataValue("dc:title"), asset.getName()), asset.getName()); }
private long getTotalAssetSize(Asset asset) { long size = asset.getRenditions().stream().collect(Collectors.summingLong(r -> r.getSize())); if (includeSubassets && !asset.isSubAsset()) { size += DamUtil.getSubAssets(asset.adaptTo(Resource.class)).stream().collect(Collectors.summingLong(this::getTotalAssetSize)); } return size; }
if ("gif".equalsIgnoreCase(extension) || "svg".equalsIgnoreCase(extension)) { LOGGER.debug("GIF or SVG asset detected; will render the original rendition."); stream(response, asset.getOriginal().getStream(), imageType, imageName); return; boolean flipVertically = componentProperties.get(Image.PN_FLIP_VERTICAL, Boolean.FALSE); if (rotationAngle != 0 || rectangle != null || resizeWidth > 0 || flipHorizontally || flipVertically) { int originalWidth = getDimension(asset.getMetadataValue(DamConstants.TIFF_IMAGEWIDTH)); int originalHeight = getDimension(asset.getMetadataValue(DamConstants.TIFF_IMAGELENGTH)); AssetHandler assetHandler = assetStore.getAssetHandler(imageType); Layer layer = null; layer = new Layer(assetHandler.getImage(asset.getOriginal())); if (Math.abs(scaling - 1.0D) != 0) { Rectangle scaledRectangle = new Rectangle( layer = new Layer(assetHandler.getImage(asset.getOriginal())); layer = new Layer(assetHandler.getImage(asset.getOriginal())); layer = new Layer(assetHandler.getImage(asset.getOriginal())); Rendition rendition = asset.getRendition(String.format(DamConstants.PREFIX_ASSET_WEB + ".%d.%d.%s", resizeWidth, resizeWidth, extension)); if (rendition != null) { int resizeHeight = calculateResizeHeight(originalWidth, originalHeight, resizeWidth); if (resizeHeight > 0 && resizeHeight != originalHeight) { layer = new Layer(assetHandler.getImage(asset.getOriginal()));
public String getPath() { return asset.getPath(); }
@SuppressWarnings({"PMD.CollapsibleIfStatements", "squid:S1066"}) @Override public final void execute(WorkItem workItem, WorkflowSession wfSession, MetaDataMap metaData) throws WorkflowException { final WorkflowHelper.AssetResourceResolverPair pair = workflowHelper.getAssetFromPayload(workItem, wfSession); if (pair == null) { String wfPayload = workItem.getWorkflowData().getPayload().toString(); String message = "execute: cannot process audio, asset [{" + wfPayload + "}] in payload doesn't exist for workflow [{" + workItem.getId() + "}]."; throw new WorkflowException(message); } final String assetMimeType = pair.asset.getMimeType(); if ((assetMimeType == null || !assetMimeType.startsWith("audio/"))) { if (!pair.asset.getName().endsWith(".wav") || !pair.asset.getName().endsWith(".mp3") || !pair.asset.getName().endsWith(".ogg")) { log.info("execute: asset [{}] is not of a audio mime type, asset ignored.", pair.asset.getPath()); return; } } try { helper.process(pair.asset, pair.resourceResolver, metaData, this); } catch (AudioException e) { throw new WorkflowException("Unable to transcode audio", e); } finally { pair.resourceResolver.close(); } }
renditionName = asset.getName(); imageWidth = Integer.parseInt(StringUtils.defaultString(asset.getMetadataValue(TIFF_IMAGEWIDTH), "0")); imageWidth = Integer.parseInt(StringUtils.defaultString(asset.getMetadataValue(EXIF_PIXELXDIMENSION), "0")); imageHeight = Integer.parseInt(StringUtils.defaultString(asset.getMetadataValue(TIFF_IMAGELENGTH), "0")); imageHeight = Integer.parseInt(StringUtils.defaultString(asset.getMetadataValue(EXIF_PIXELYDIMENSION), "0")); Resource metadataResource = asset.adaptTo(Resource.class).getChild(metadataPath); if (metadataResource != null) { ValueMap props = metadataResource.getValueMap();
/** * Get node for storing the renditions additional metadata. * @param asset Asset * @param createIfNotExists if true the node is (tried to be) created automatically if it does not exist * @return Node or null if it does not exist or could not be created */ @SuppressWarnings("null") private Resource getRenditionsMetadataResource(Asset asset, boolean createIfNotExists) { Resource assetResource = asset.adaptTo(Resource.class); String renditionsMetadataPath = assetResource.getPath() + "/" + JCR_CONTENT + "/" + NN_RENDITIONS_METADATA; try { if (createIfNotExists) { return ResourceUtil.getOrCreateResource(assetResource.getResourceResolver(), renditionsMetadataPath, ImmutableMap.<String, Object>of(JCR_PRIMARYTYPE, NT_UNSTRUCTURED), NT_UNSTRUCTURED, false); } else { return assetResource.getChild(renditionsMetadataPath); } } catch (PersistenceException ex) { log.error("Unable to get/create renditions metadata node at " + asset.getPath(), ex); } return null; }
private void writeAsset(Asset asset, XMLStreamWriter stream, ResourceResolver resolver) throws XMLStreamException { stream.writeStartElement(NS, "url"); String loc = externalizer.externalLink(resolver, externalizerDomain, asset.getPath()); writeElement(stream, "loc", loc); if (includeLastModified) { long lastModified = asset.getLastModified(); if (lastModified > 0) { writeElement(stream, "lastmod", DATE_FORMAT.format(lastModified)); } } Resource contentResource = asset.adaptTo(Resource.class).getChild(JcrConstants.JCR_CONTENT); if (contentResource != null) { final ValueMap properties = contentResource.getValueMap(); writeFirstPropertyValue(stream, "changefreq", changefreqProperties, properties); writeFirstPropertyValue(stream, "priority", priorityProperties, properties); } stream.writeEndElement(); }
final File tmpFile = new File(tmpDir, asset.getName().replace(' ', '_')); fos = new FileOutputStream(tmpFile); is = asset.getOriginal().getStream(); IOUtils.copy(is, fos);
log.info("processing asset [{}]...", asset.getPath()); final File transcodedAudio = ffmpegWrapper.transcode(); fis = new FileInputStream(transcodedAudio); asset.addRendition(renditionName, fis, ffmpegWrapper.getOutputMimetype()); try { Files.delete(transcodedAudio.toPath()); log.info("finished processing asset [{}] in [{}ms].", asset.getPath(), time); wrapper.setExecutableLocator(locator); final Resource assetResource = asset.adaptTo(Resource.class); final Resource metadata = resourceResolver.getResource(assetResource, JcrConstants.JCR_CONTENT + "/" + METADATA_FOLDER); log.warn("Unable to set metadata for asset [" + asset.getPath() + "]", e); asset.getPath());
String hash = asset.getMetadataValue(SHA1); if (hash != null) { observedHashes.add(hash); asset.listRenditions().forEachRemaining(r -> renditions.put(r.getName(), r)); Rendition original = renditions.remove("original"); tabulate(folderPath, Column.rendition_count, renditions.size()); DamUtil.getSubAssets(asset.adaptTo(Resource.class)).stream().forEach(subasset -> { tabulate(folderPath, Column.subasset_count, 1); long size = subasset.getRenditions().stream().collect(Collectors.summingLong(Rendition::getSize)); tabulate(folderPath, Column.subasset_size, size); tabulate(folderPath, Column.combined_size, size); for (Revision rev : asset.getRevisions(null)) { tabulate(folderPath, Column.version_count, 1); Asset assetVersion = FrozenAsset.createFrozenAsset(asset, rev); String versionHash = assetVersion.getMetadataValue(SHA1); if (versionHash != null) { if (observedHashes.contains(versionHash)) {
/** * Update the Assets original rendition. * * @param asset the Asset to update * @param fileInputStream the new binary representation of the Asset * @param mimeType the MIME Type of the asset * @return the updated asset * @throws CsvAssetImportException */ private Asset updateAssetOriginal(Asset asset, InputStream fileInputStream, String mimeType) throws CsvAssetImportException { try { if (asset != null) { final Node originalNode = asset.getOriginal().adaptTo(Node.class); if (originalNode != null) { JcrUtils.putFile(originalNode.getParent(), "original", mimeType, fileInputStream, Calendar.getInstance()); log.info("Updated existing Asset's [ {} ] original rendition.", asset.getPath()); } else { log.warn("Could not find original rendition for Asset [ {} ] to update.", asset.getPath()); } } else { log.warn("Could not update a null asset"); } } catch (Exception e) { throw new CsvAssetImportException("Could not update Asset at [ " + asset.getPath() + " ]", e); } return asset; }
public final Rendition getRendition(final Asset asset) { final List<Rendition> renditions = asset.getRenditions(); final Pattern p = getPattern(); boolean hasOriginal = asset.getOriginal() != null; boolean hasRenditions = renditions.size() > 0; return asset.getOriginal(); } else if (hasRenditions) { return renditions.get(0);
/** * @param asset DAM asset */ DefaultRenditionHandler(Asset asset) { this.asset = asset; Rendition damOriginalRendition = asset.getOriginal(); originalRendition = damOriginalRendition != null ? new RenditionMetadata(damOriginalRendition) : null; }
void saveMigrationInfo(final Source source, final Asset asset) { Resource assetResource = asset.adaptTo(Resource.class); if (assetResource != null) { assetResource = assetResource.getChild(JcrConstants.JCR_CONTENT); } if (assetResource != null) { ValueMap assetProperties = assetResource.adaptTo(ModifiableValueMap.class); if (assetProperties != null) { if (!StringUtils.equals(asset.getName(), source.getName())) { assetProperties.put(JcrConstants.JCR_TITLE, source.getName()); } assetProperties.put(PN_MIGRATED_FROM, source.getElement().getItemName()); } } }
@Override public boolean hasFinished(Serializable serializable, WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) { if (serializable == null) { return true; } ResourceResolver resolver = workflowSession.adaptTo(ResourceResolver.class); Asset asset = getAssetFromPayload(workItem, resolver); if (asset == null) { log.error("job started, but asset no longer exists."); return true; } if (serializable instanceof String) { TranscriptionService.Result result = transcriptionService.getResult((String) serializable); if (result.isCompleted()) { try { asset.addRendition("transcription.txt", new ByteArrayInputStream(result.getContent().getBytes("UTF-8")), "text/plain"); log.info("Transcription for {} created.", asset.getPath()); } catch (UnsupportedEncodingException e) { log.error("Unable to save new rendition", e); } return true; } else { return false; } } else { log.error("Unexpected serializable {}", serializable); return true; } }
@Override public final boolean accepts(@NotNull Media media) { if (!media.isValid()) { return false; } Asset asset = getDamAsset(media); if (asset != null) { return asset.getRendition(new PrefixRenditionPicker(VideoConstants.RENDITION_PREFIX)) != null; } else { return false; } }