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; }
public static PictureView mapToView(Map<String, Object> map) { PictureView view = new PictureViewImpl(); view.setTitle((String) map.get(PictureView.FIELD_TITLE)); view.setDescription((String) map.get(PictureView.FIELD_DESCRIPTION)); view.setTag((String) map.get(PictureView.FIELD_TAG)); Object o = map.get(PictureView.FIELD_WIDTH); if (o != null) { view.setWidth(((Number) o).intValue()); } o = map.get(PictureView.FIELD_HEIGHT); if (o != null) { view.setHeight(((Number) o).intValue()); } view.setFilename((String) map.get(PictureView.FIELD_FILENAME)); Blob blob = (Blob) map.get(PictureView.FIELD_CONTENT); view.setBlob(blob); view.setImageInfo(ImageInfo.fromMap((Map<String, Serializable>) map.get(FIELD_INFO))); return view; }
@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; } }
@OperationMethod public Blob run(DocumentModel doc) { MultiviewPicture mvp = doc.getAdapter(MultiviewPicture.class); if (mvp == null) { return null; } if (viewName == null) { viewName = mvp.getOrigin(); } PictureView pv = mvp.getView(viewName); if (pv == null) { return null; } return pv.getBlob(); }
@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); }
@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; }
@Override public Blob getThumbnail(DocumentModel doc, CoreSession session) { if (!doc.hasFacet("Picture")) { throw new NuxeoException("Document is not a picture"); } // Choose the nuxeo default thumbnail of the picture views if exists MultiviewPicture mViewPicture = doc.getAdapter(MultiviewPicture.class); PictureView thumbnailView = mViewPicture.getView("Small"); if (thumbnailView == null || thumbnailView.getBlob() == null) { // try thumbnail view thumbnailView = mViewPicture.getView("Thumbnail"); if (thumbnailView == null || thumbnailView.getBlob() == null) { TypeInfo docType = doc.getAdapter(TypeInfo.class); try { return Blobs.createBlob(FileUtils.getResourceFileFromContext("nuxeo.war" + File.separator + docType.getBigIcon())); } catch (IOException e) { throw new NuxeoException(e); } } } return thumbnailView.getBlob(); }
@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); } } }
protected PictureView computeViewWithoutConversion(Blob blob, PictureConversion pictureConversion, ImageInfo imageInfo) { PictureView view = new PictureViewImpl(); view.setBlob(blob); view.setWidth(imageInfo.getWidth()); view.setHeight(imageInfo.getHeight()); view.setFilename(blob.getFilename()); view.setTitle(pictureConversion.getId()); view.setDescription(pictureConversion.getDescription()); view.setTag(pictureConversion.getTag()); view.setImageInfo(imageInfo); return view; }
protected boolean migratePicture(CoreSession session, String docId) { DocumentModel picture = session.getDocument(new IdRef(docId)); if (log.isDebugEnabled()) { log.debug(String.format("Migrating %s", picture)); } MultiviewPicture multiviewPicture = picture.getAdapter(MultiviewPicture.class); PictureView originalView = multiviewPicture.getView(ORIGINAL_VIEW_TITLE); Blob blob = originalView.getBlob(); if (blob == null) { if (log.isWarnEnabled()) { log.warn(String.format("No Original view Blob found for %s", picture)); } return false; } String filename = blob.getFilename(); filename = StringUtils.defaultString(filename).replaceAll("^Original_", ""); blob.setFilename(filename); picture.setPropertyValue(FILE_CONTENT_PROPERTY, (Serializable) blob); multiviewPicture.removeView(ORIGINAL_VIEW_TITLE); if (picture.isVersion()) { picture.putContextData(ALLOW_VERSION_WRITE, Boolean.TRUE); } // disable quota if installed picture.putContextData(DISABLE_QUOTA_CHECK_LISTENER, Boolean.TRUE); session.saveDocument(picture); return true; }
@OperationMethod public Blob run(DocumentModel doc) { Blob pictureBlob = null; MultiviewPicture mvp = doc.getAdapter(MultiviewPicture.class); if (mvp != null) { pictureBlob = mvp.getView(mvp.getOrigin()).getBlob(); } else { BlobHolder bh = doc.getAdapter(BlobHolder.class); if (bh != null) { pictureBlob = bh.getBlob(); } } if (pictureBlob == null) { Blob blob = Blobs.createBlob("Unable to find a picture in the Document"); blob.setFilename(doc.getName() + ".null"); return blob; } else { return run(pictureBlob); } }