001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Florent Guillaume 011 */ 012package org.nuxeo.ecm.core.opencmis.impl.client; 013 014import java.util.Iterator; 015import java.util.List; 016 017import org.apache.chemistry.opencmis.client.api.ObjectType; 018import org.apache.chemistry.opencmis.client.api.Property; 019import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement; 020import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition; 021import org.apache.chemistry.opencmis.commons.enums.Cardinality; 022import org.apache.chemistry.opencmis.commons.enums.PropertyType; 023import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoPropertyData; 024import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoPropertyDataBase; 025 026/** 027 * Live Nuxeo document property, wrapping a {@link NuxeoPropertyData}. 028 */ 029public class NuxeoProperty<T> implements Property<T> { 030 031 private final NuxeoPropertyDataBase<T> prop; 032 033 @SuppressWarnings("unchecked") 034 public NuxeoProperty(NuxeoObject object, String id) { 035 prop = (NuxeoPropertyDataBase<T>) object.data.getProperty(id); 036 } 037 038 @Override 039 public PropertyDefinition<T> getDefinition() { 040 return prop.getPropertyDefinition(); 041 } 042 043 @Override 044 public String getDisplayName() { 045 return prop.getDisplayName(); 046 } 047 048 @Override 049 public String getId() { 050 return prop.getId(); 051 } 052 053 @Override 054 public String getLocalName() { 055 return prop.getLocalName(); 056 } 057 058 @Override 059 public String getQueryName() { 060 return prop.getQueryName(); 061 } 062 063 @Override 064 public PropertyType getType() { 065 return prop.getPropertyDefinition().getPropertyType(); 066 } 067 068 @SuppressWarnings("unchecked") 069 @Override 070 public <U> U getValue() { 071 // cast needed by Sun compiler 072 return (U) prop.getValue(); 073 } 074 075 @Override 076 public T getFirstValue() { 077 return (T) prop.getFirstValue(); 078 } 079 080 @Override 081 public String getValueAsString() { 082 return String.valueOf(getFirstValue()); 083 } 084 085 @Override 086 public String getValuesAsString() { 087 StringBuilder buf = new StringBuilder(); 088 buf.append('['); 089 for (Iterator<T> it = getValues().iterator(); it.hasNext();) { 090 buf.append(String.valueOf(it.next())); 091 if (it.hasNext()) { 092 buf.append(", "); 093 } 094 } 095 buf.append(']'); 096 return buf.toString(); 097 } 098 099 @Override 100 public List<T> getValues() { 101 return (List<T>) prop.getValues(); 102 } 103 104 @Override 105 public boolean isMultiValued() { 106 return prop.getPropertyDefinition().getCardinality() == Cardinality.MULTI; 107 } 108 109 @Override 110 public List<CmisExtensionElement> getExtensions() { 111 // TODO Auto-generated method stub 112 throw new UnsupportedOperationException(); 113 } 114 115 @Override 116 public void setExtensions(List<CmisExtensionElement> extensions) { 117 // TODO Auto-generated method stub 118 throw new UnsupportedOperationException(); 119 } 120 121}