@Override public void addView(PictureView view) { views.put(view.getTitle(), view); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (PictureView pv : views.values()) { list.add(viewToMap(pv)); } docModel.setPropertyValue(PICTURE_VIEWS_PROPERTY, (Serializable) list); }
@SuppressWarnings("unchecked") public MultiviewPictureAdapter(DocumentModel docModel) { this.docModel = docModel; List<Map<String, Object>> list = (List<Map<String, Object>>) docModel.getPropertyValue(PICTURE_VIEWS_PROPERTY); if (list != null) { for (Map<String, Object> map : list) { PictureView view = mapToView(map); views.put(view.getTitle(), view); } } }
public static Map<String, Object> viewToMap(PictureView view) { Map<String, Object> map = new HashMap<String, Object>(); map.put(PictureView.FIELD_TITLE, view.getTitle()); map.put(PictureView.FIELD_DESCRIPTION, view.getDescription()); map.put(PictureView.FIELD_TAG, view.getTag()); map.put(PictureView.FIELD_HEIGHT, view.getHeight()); map.put(PictureView.FIELD_WIDTH, view.getWidth()); map.put(PictureView.FIELD_FILENAME, view.getFilename()); Blob blob = view.getBlob(); if (blob != null) { map.put(PictureView.FIELD_CONTENT, blob); } map.put(FIELD_INFO, view.getImageInfo().toMap()); return map; }
@Override protected Blob getContentBlob(Blob original, DocumentModel doc) { MultiviewPicture multiviewPicture = doc.getAdapter(MultiviewPicture.class); if (multiviewPicture != null) { for (PictureView view : multiviewPicture.getViews()) { if (view.getTitle().equals("FullHD") && view.getBlob() != null) { return view.getBlob(); } } } return original; } }
@Override public List<RenditionDefinition> getRenditionDefinitions(DocumentModel doc) { MultiviewPicture multiviewPicture = doc.getAdapter(MultiviewPicture.class); if (multiviewPicture == null) { return Collections.emptyList(); } List<RenditionDefinition> renditionDefinitions = new ArrayList<>(); ImagingService imagingService = Framework.getService(ImagingService.class); MimetypeRegistry mimetypeRegistry = Framework.getService(MimetypeRegistry.class); for (PictureView pictureView : multiviewPicture.getViews()) { PictureConversion pictureConversion = imagingService.getPictureConversion(pictureView.getTitle()); if (pictureConversion != null && pictureConversion.isRendition()) { Blob blob = pictureView.getBlob(); if (blob != null) { RenditionDefinition renditionDefinition = new RenditionDefinition(); renditionDefinition.setEnabled(true); renditionDefinition.setName(pictureView.getTitle()); renditionDefinition.setKind(PICTURE_RENDITION_KIND); renditionDefinition.setProvider(new PictureRenditionProvider()); renditionDefinition.setVisible(pictureConversion.isRenditionVisible()); renditionDefinition.setLabel(pictureView.getTitle()); MimetypeEntry mimeType = mimetypeRegistry.getMimetypeEntryByMimeType(blob.getMimeType()); renditionDefinition.setIcon("/icons/" + mimeType.getIconPath()); renditionDefinitions.add(renditionDefinition); } } } return renditionDefinitions; }