/* * (C) Copyright 2006-2007 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * Nuxeo - initial API and implementation * * $Id: JOOoConvertPluginImpl.java 18651 2007-05-13 20:28:53Z sfermigier $ */ package org.nuxeo.ecm.platform.picture.api.adapters; import static org.nuxeo.ecm.platform.picture.api.ImagingDocumentConstants.PICTURE_VIEWS_PROPERTY; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.nuxeo.ecm.core.api.Blob; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.platform.picture.api.ImageInfo; import org.nuxeo.ecm.platform.picture.api.PictureView; import org.nuxeo.ecm.platform.picture.api.PictureViewImpl; public class MultiviewPictureAdapter implements MultiviewPicture { public static final String FIELD_HEADLINE = "headline"; public static final String FIELD_SUBHEADLINE = "subheadline"; public static final String FIELD_BYLINE = "byline"; public static final String FIELD_DATELINE = "dateline"; public static final String FIELD_SLUGLINE = "slugline"; public static final String FIELD_CREDIT = "credit"; public static final String FIELD_LANGUAGE = "language"; public static final String FIELD_SOURCE = "source"; public static final String FIELD_ORIGIN = "origin"; public static final String FIELD_GENRE = "genre"; public static final String FIELD_CAPTION = "caption"; public static final String FIELD_TYPAGE = "typage"; public static final String FIELD_INFO = "info"; public static final String SCHEMA_NAME = "picture"; final DocumentModel docModel; final Map<String, PictureView> views = new HashMap<String, PictureView>(); 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; } @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); } } } @Override public PictureView[] getViews() { Collection<PictureView> collection = views.values(); return collection.toArray(new PictureView[collection.size()]); } @Override public PictureView getView(String title) { return views.get(title); } @Override public void removeView(String name) { views.remove(name); List<Map<String, Object>> v = new ArrayList<Map<String, Object>>(); for (PictureView view : views.values()) { v.add(viewToMap(view)); } docModel.setPropertyValue(PICTURE_VIEWS_PROPERTY, v.toArray()); } @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 void removeAllView() { docModel.setPropertyValue(PICTURE_VIEWS_PROPERTY, null); views.clear(); } @Override public String getHeadline() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_HEADLINE); } @Override public void setHeadline(String headline) { docModel.setProperty(SCHEMA_NAME, FIELD_HEADLINE, headline); } @Override public String getSubheadline() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_SUBHEADLINE); } @Override public void setSubheadline(String subheadline) { docModel.setProperty(SCHEMA_NAME, FIELD_SUBHEADLINE, subheadline); } @Override public String getByline() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_BYLINE); } @Override public void setByline(String byline) { docModel.setProperty(SCHEMA_NAME, FIELD_BYLINE, byline); } @Override public String getDateline() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_DATELINE); } @Override public void setDateline(String dateline) { docModel.setProperty(SCHEMA_NAME, FIELD_DATELINE, dateline); } @Override public String getSlugline() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_SLUGLINE); } @Override public void setSlugline(String slugline) { docModel.setProperty(SCHEMA_NAME, FIELD_SLUGLINE, slugline); } @Override public String getCredit() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_CREDIT); } @Override public void setCredit(String credit) { docModel.setProperty(SCHEMA_NAME, FIELD_CREDIT, credit); } @Override public String getLanguage() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_LANGUAGE); } @Override public void setLanguage(String language) { docModel.setProperty(SCHEMA_NAME, FIELD_LANGUAGE, language); } @Override public String getSource() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_SOURCE); } @Override public void setSource(String source) { docModel.setProperty(SCHEMA_NAME, FIELD_SOURCE, source); } @Override public String getOrigin() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_ORIGIN); } @Override public void setOrigin(String origin) { docModel.setProperty(SCHEMA_NAME, FIELD_ORIGIN, origin); } @Override public String getGenre() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_GENRE); } @Override public void setGenre(String genre) { docModel.setProperty(SCHEMA_NAME, FIELD_GENRE, genre); } @Override public String getCaption() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_CAPTION); } @Override public void setCaption(String caption) { docModel.setProperty(SCHEMA_NAME, FIELD_CAPTION, caption); } @Override public String getTypage() { return (String) docModel.getProperty(SCHEMA_NAME, FIELD_TYPAGE); } @Override public void setTypage(String typage) { docModel.setProperty(SCHEMA_NAME, FIELD_TYPAGE, typage); } }