/* * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Florent Guillaume */ package org.eclipse.ecr.opencmis.impl.client; import java.util.Iterator; import java.util.List; import org.apache.chemistry.opencmis.client.api.ObjectType; import org.apache.chemistry.opencmis.client.api.Property; import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement; import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition; import org.apache.chemistry.opencmis.commons.enums.Cardinality; import org.apache.chemistry.opencmis.commons.enums.PropertyType; import org.eclipse.ecr.opencmis.impl.server.NuxeoPropertyData; import org.eclipse.ecr.opencmis.impl.server.NuxeoPropertyDataBase; /** * Live Nuxeo document property, wrapping a {@link NuxeoPropertyData}. */ public class NuxeoProperty<T> implements Property<T> { private final NuxeoPropertyDataBase<T> prop; @SuppressWarnings("unchecked") public NuxeoProperty(NuxeoObject object, ObjectType type, String id) { prop = (NuxeoPropertyDataBase<T>) object.data.getProperty(id); } @Override public PropertyDefinition<T> getDefinition() { return prop.getPropertyDefinition(); } @Override public String getDisplayName() { return prop.getDisplayName(); } @Override public String getId() { return prop.getId(); } @Override public String getLocalName() { return prop.getLocalName(); } @Override public String getQueryName() { return prop.getQueryName(); } @Override public PropertyType getType() { return prop.getPropertyDefinition().getPropertyType(); } @SuppressWarnings("unchecked") @Override public <U> U getValue() { // cast needed by Sun compiler return (U) prop.getValue(); } @Override public T getFirstValue() { return (T) prop.getFirstValue(); } @Override public String getValueAsString() { return String.valueOf(getFirstValue()); } @Override public String getValuesAsString() { StringBuilder buf = new StringBuilder(); buf.append('['); for (Iterator<T> it = getValues().iterator(); it.hasNext();) { buf.append(String.valueOf(it.next())); if (it.hasNext()) { buf.append(", "); } } buf.append(']'); return buf.toString(); } @Override public List<T> getValues() { return (List<T>) prop.getValues(); } @Override public boolean isMultiValued() { return prop.getPropertyDefinition().getCardinality() == Cardinality.MULTI; } @Override public List<CmisExtensionElement> getExtensions() { // TODO Auto-generated method stub throw new UnsupportedOperationException(); } @Override public void setExtensions(List<CmisExtensionElement> extensions) { // TODO Auto-generated method stub throw new UnsupportedOperationException(); } }