001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Florent Guillaume 018 */ 019package org.nuxeo.ecm.core.opencmis.impl.client; 020 021import java.util.Iterator; 022import java.util.List; 023 024import org.apache.chemistry.opencmis.client.api.ObjectType; 025import org.apache.chemistry.opencmis.client.api.Property; 026import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement; 027import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition; 028import org.apache.chemistry.opencmis.commons.enums.Cardinality; 029import org.apache.chemistry.opencmis.commons.enums.PropertyType; 030import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoPropertyData; 031import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoPropertyDataBase; 032 033/** 034 * Live Nuxeo document property, wrapping a {@link NuxeoPropertyData}. 035 */ 036public class NuxeoProperty<T> implements Property<T> { 037 038 private final NuxeoPropertyDataBase<T> prop; 039 040 @SuppressWarnings("unchecked") 041 public NuxeoProperty(NuxeoObject object, String id) { 042 prop = (NuxeoPropertyDataBase<T>) object.data.getProperty(id); 043 } 044 045 @Override 046 public PropertyDefinition<T> getDefinition() { 047 return prop.getPropertyDefinition(); 048 } 049 050 @Override 051 public String getDisplayName() { 052 return prop.getDisplayName(); 053 } 054 055 @Override 056 public String getId() { 057 return prop.getId(); 058 } 059 060 @Override 061 public String getLocalName() { 062 return prop.getLocalName(); 063 } 064 065 @Override 066 public String getQueryName() { 067 return prop.getQueryName(); 068 } 069 070 @Override 071 public PropertyType getType() { 072 return prop.getPropertyDefinition().getPropertyType(); 073 } 074 075 @SuppressWarnings("unchecked") 076 @Override 077 public <U> U getValue() { 078 // cast needed by Sun compiler 079 return (U) prop.getValue(); 080 } 081 082 @Override 083 public T getFirstValue() { 084 return (T) prop.getFirstValue(); 085 } 086 087 @Override 088 public String getValueAsString() { 089 return String.valueOf(getFirstValue()); 090 } 091 092 @Override 093 public String getValuesAsString() { 094 StringBuilder buf = new StringBuilder(); 095 buf.append('['); 096 for (Iterator<T> it = getValues().iterator(); it.hasNext();) { 097 buf.append(String.valueOf(it.next())); 098 if (it.hasNext()) { 099 buf.append(", "); 100 } 101 } 102 buf.append(']'); 103 return buf.toString(); 104 } 105 106 @Override 107 public List<T> getValues() { 108 return (List<T>) prop.getValues(); 109 } 110 111 @Override 112 public boolean isMultiValued() { 113 return prop.getPropertyDefinition().getCardinality() == Cardinality.MULTI; 114 } 115 116 @Override 117 public List<CmisExtensionElement> getExtensions() { 118 // TODO Auto-generated method stub 119 throw new UnsupportedOperationException(); 120 } 121 122 @Override 123 public void setExtensions(List<CmisExtensionElement> extensions) { 124 // TODO Auto-generated method stub 125 throw new UnsupportedOperationException(); 126 } 127 128}