13c5114b8SDamjan Jovanovic /************************************************************** 23c5114b8SDamjan Jovanovic * 33c5114b8SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 43c5114b8SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 53c5114b8SDamjan Jovanovic * distributed with this work for additional information 63c5114b8SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 73c5114b8SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 83c5114b8SDamjan Jovanovic * "License"); you may not use this file except in compliance 93c5114b8SDamjan Jovanovic * with the License. You may obtain a copy of the License at 103c5114b8SDamjan Jovanovic * 113c5114b8SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 123c5114b8SDamjan Jovanovic * 133c5114b8SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 143c5114b8SDamjan Jovanovic * software distributed under the License is distributed on an 153c5114b8SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 163c5114b8SDamjan Jovanovic * KIND, either express or implied. See the License for the 173c5114b8SDamjan Jovanovic * specific language governing permissions and limitations 183c5114b8SDamjan Jovanovic * under the License. 193c5114b8SDamjan Jovanovic * 203c5114b8SDamjan Jovanovic *************************************************************/ 213c5114b8SDamjan Jovanovic 22*60ba3965SDamjan Jovanovic package org.apache.openoffice.comp.sdbc.dbtools.sdbcx; 23*60ba3965SDamjan Jovanovic 24*60ba3965SDamjan Jovanovic import org.apache.openoffice.comp.sdbc.dbtools.comphelper.CompHelper; 25*60ba3965SDamjan Jovanovic import org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertyGetter; 26*60ba3965SDamjan Jovanovic import org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertySetter; 27*60ba3965SDamjan Jovanovic import org.apache.openoffice.comp.sdbc.dbtools.sdbcx.descriptors.SdbcxColumnDescriptor; 28*60ba3965SDamjan Jovanovic import org.apache.openoffice.comp.sdbc.dbtools.util.PropertyIds; 293c5114b8SDamjan Jovanovic 303c5114b8SDamjan Jovanovic import com.sun.star.beans.PropertyAttribute; 313c5114b8SDamjan Jovanovic import com.sun.star.beans.XPropertySet; 323c5114b8SDamjan Jovanovic import com.sun.star.container.XNamed; 33c34b9ec6SDamjan Jovanovic import com.sun.star.lang.XServiceInfo; 343c5114b8SDamjan Jovanovic import com.sun.star.sdbc.ColumnValue; 353c5114b8SDamjan Jovanovic import com.sun.star.sdbcx.XDataDescriptorFactory; 363c5114b8SDamjan Jovanovic import com.sun.star.uno.Type; 373c5114b8SDamjan Jovanovic 38c34b9ec6SDamjan Jovanovic public class OColumn extends ODescriptor implements XNamed, XDataDescriptorFactory, XServiceInfo { 39c34b9ec6SDamjan Jovanovic 40c34b9ec6SDamjan Jovanovic private static final String[] services = { 41c34b9ec6SDamjan Jovanovic "com.sun.star.sdbcx.Column" 42c34b9ec6SDamjan Jovanovic }; 43c34b9ec6SDamjan Jovanovic 44a91eb973SDamjan Jovanovic private String typeName = ""; 45a91eb973SDamjan Jovanovic private String description = ""; 46a91eb973SDamjan Jovanovic private String defaultValue = ""; 473c5114b8SDamjan Jovanovic private int isNullable; 483c5114b8SDamjan Jovanovic private int precision; 493c5114b8SDamjan Jovanovic private int scale; 503c5114b8SDamjan Jovanovic private int type; 513c5114b8SDamjan Jovanovic private boolean isAutoIncrement; 523c5114b8SDamjan Jovanovic private boolean isRowVersion; 533c5114b8SDamjan Jovanovic private boolean isCurrency; 543c5114b8SDamjan Jovanovic OColumn(final boolean isCaseSensitive)5568b6fe01SDamjan Jovanovic public OColumn(final boolean isCaseSensitive) { 565b780c4aSDamjan Jovanovic super("", isCaseSensitive); 573c5114b8SDamjan Jovanovic this.isNullable = ColumnValue.NULLABLE; 583c5114b8SDamjan Jovanovic this.precision = 0; 593c5114b8SDamjan Jovanovic this.scale = 0; 603c5114b8SDamjan Jovanovic this.type = 0; 613c5114b8SDamjan Jovanovic this.isAutoIncrement = false; 623c5114b8SDamjan Jovanovic this.isRowVersion = false; 633c5114b8SDamjan Jovanovic this.isCurrency = false; 643c5114b8SDamjan Jovanovic registerProperties(); 653c5114b8SDamjan Jovanovic } 663c5114b8SDamjan Jovanovic OColumn( final String name, final String typeName, final String defaultValue, final String description, final int isNullable, final int precision, final int scale, final int type, final boolean isAutoIncrement, final boolean isRowVersion, final boolean isCurrency, final boolean isCaseSensitive)6768b6fe01SDamjan Jovanovic public OColumn( 683c5114b8SDamjan Jovanovic final String name, 693c5114b8SDamjan Jovanovic final String typeName, 703c5114b8SDamjan Jovanovic final String defaultValue, 713c5114b8SDamjan Jovanovic final String description, 723c5114b8SDamjan Jovanovic final int isNullable, 733c5114b8SDamjan Jovanovic final int precision, 743c5114b8SDamjan Jovanovic final int scale, 753c5114b8SDamjan Jovanovic final int type, 763c5114b8SDamjan Jovanovic final boolean isAutoIncrement, 773c5114b8SDamjan Jovanovic final boolean isRowVersion, 783c5114b8SDamjan Jovanovic final boolean isCurrency, 793c5114b8SDamjan Jovanovic final boolean isCaseSensitive) { 805b780c4aSDamjan Jovanovic super(name, isCaseSensitive); 813c5114b8SDamjan Jovanovic this.typeName = typeName; 823c5114b8SDamjan Jovanovic this.description = description; 833c5114b8SDamjan Jovanovic this.defaultValue = defaultValue; 843c5114b8SDamjan Jovanovic this.isNullable = isNullable; 853c5114b8SDamjan Jovanovic this.precision = precision; 863c5114b8SDamjan Jovanovic this.scale = scale; 873c5114b8SDamjan Jovanovic this.type = type; 883c5114b8SDamjan Jovanovic this.isAutoIncrement = isAutoIncrement; 893c5114b8SDamjan Jovanovic this.isRowVersion = isRowVersion; 903c5114b8SDamjan Jovanovic this.isCurrency = isCurrency; 913c5114b8SDamjan Jovanovic registerProperties(); 923c5114b8SDamjan Jovanovic } 933c5114b8SDamjan Jovanovic registerProperties()943c5114b8SDamjan Jovanovic private void registerProperties() { 953c5114b8SDamjan Jovanovic registerProperty(PropertyIds.TYPENAME.name, PropertyIds.TYPENAME.id, Type.STRING, PropertyAttribute.READONLY, 963c5114b8SDamjan Jovanovic new PropertyGetter() { 973c5114b8SDamjan Jovanovic @Override 983c5114b8SDamjan Jovanovic public Object getValue() { 993c5114b8SDamjan Jovanovic return typeName; 1003c5114b8SDamjan Jovanovic 1013c5114b8SDamjan Jovanovic } 1023c5114b8SDamjan Jovanovic }, 1033c5114b8SDamjan Jovanovic new PropertySetter() { 1043c5114b8SDamjan Jovanovic @Override 1053c5114b8SDamjan Jovanovic public void setValue(Object value) { 1063c5114b8SDamjan Jovanovic typeName = (String) value; 1073c5114b8SDamjan Jovanovic } 1083c5114b8SDamjan Jovanovic }); 1093c5114b8SDamjan Jovanovic registerProperty(PropertyIds.DESCRIPTION.name, PropertyIds.DESCRIPTION.id, Type.STRING, PropertyAttribute.READONLY, 1103c5114b8SDamjan Jovanovic new PropertyGetter() { 1113c5114b8SDamjan Jovanovic @Override 1123c5114b8SDamjan Jovanovic public Object getValue() { 1133c5114b8SDamjan Jovanovic return description; 1143c5114b8SDamjan Jovanovic 1153c5114b8SDamjan Jovanovic } 1163c5114b8SDamjan Jovanovic }, 1173c5114b8SDamjan Jovanovic new PropertySetter() { 1183c5114b8SDamjan Jovanovic @Override 1193c5114b8SDamjan Jovanovic public void setValue(Object value) { 1203c5114b8SDamjan Jovanovic description = (String) value; 1213c5114b8SDamjan Jovanovic } 1223c5114b8SDamjan Jovanovic }); 1233c5114b8SDamjan Jovanovic registerProperty(PropertyIds.DEFAULTVALUE.name, PropertyIds.DEFAULTVALUE.id, Type.STRING, PropertyAttribute.READONLY, 1243c5114b8SDamjan Jovanovic new PropertyGetter() { 1253c5114b8SDamjan Jovanovic @Override 1263c5114b8SDamjan Jovanovic public Object getValue() { 1273c5114b8SDamjan Jovanovic return defaultValue; 1283c5114b8SDamjan Jovanovic 1293c5114b8SDamjan Jovanovic } 1303c5114b8SDamjan Jovanovic }, 1313c5114b8SDamjan Jovanovic new PropertySetter() { 1323c5114b8SDamjan Jovanovic @Override 1333c5114b8SDamjan Jovanovic public void setValue(Object value) { 1343c5114b8SDamjan Jovanovic defaultValue = (String) value; 1353c5114b8SDamjan Jovanovic } 1363c5114b8SDamjan Jovanovic }); 1373c5114b8SDamjan Jovanovic registerProperty(PropertyIds.PRECISION.name, PropertyIds.PRECISION.id, Type.LONG, PropertyAttribute.READONLY, 1383c5114b8SDamjan Jovanovic new PropertyGetter() { 1393c5114b8SDamjan Jovanovic @Override 1403c5114b8SDamjan Jovanovic public Object getValue() { 1413c5114b8SDamjan Jovanovic return precision; 1423c5114b8SDamjan Jovanovic 1433c5114b8SDamjan Jovanovic } 1443c5114b8SDamjan Jovanovic }, 1453c5114b8SDamjan Jovanovic new PropertySetter() { 1463c5114b8SDamjan Jovanovic @Override 1473c5114b8SDamjan Jovanovic public void setValue(Object value) { 1483c5114b8SDamjan Jovanovic precision = (Integer) value; 1493c5114b8SDamjan Jovanovic } 1503c5114b8SDamjan Jovanovic }); 1513c5114b8SDamjan Jovanovic registerProperty(PropertyIds.TYPE.name, PropertyIds.TYPE.id, Type.LONG, PropertyAttribute.READONLY, 1523c5114b8SDamjan Jovanovic new PropertyGetter() { 1533c5114b8SDamjan Jovanovic @Override 1543c5114b8SDamjan Jovanovic public Object getValue() { 1553c5114b8SDamjan Jovanovic return type; 1563c5114b8SDamjan Jovanovic 1573c5114b8SDamjan Jovanovic } 1583c5114b8SDamjan Jovanovic }, 1593c5114b8SDamjan Jovanovic new PropertySetter() { 1603c5114b8SDamjan Jovanovic @Override 1613c5114b8SDamjan Jovanovic public void setValue(Object value) { 1623c5114b8SDamjan Jovanovic type = (Integer) value; 1633c5114b8SDamjan Jovanovic } 1643c5114b8SDamjan Jovanovic }); 1653c5114b8SDamjan Jovanovic registerProperty(PropertyIds.SCALE.name, PropertyIds.SCALE.id, Type.LONG, PropertyAttribute.READONLY, 1663c5114b8SDamjan Jovanovic new PropertyGetter() { 1673c5114b8SDamjan Jovanovic @Override 1683c5114b8SDamjan Jovanovic public Object getValue() { 1693c5114b8SDamjan Jovanovic return scale; 1703c5114b8SDamjan Jovanovic 1713c5114b8SDamjan Jovanovic } 1723c5114b8SDamjan Jovanovic }, 1733c5114b8SDamjan Jovanovic new PropertySetter() { 1743c5114b8SDamjan Jovanovic @Override 1753c5114b8SDamjan Jovanovic public void setValue(Object value) { 1763c5114b8SDamjan Jovanovic scale = (Integer) value; 1773c5114b8SDamjan Jovanovic } 1783c5114b8SDamjan Jovanovic }); 1793c5114b8SDamjan Jovanovic registerProperty(PropertyIds.ISNULLABLE.name, PropertyIds.ISNULLABLE.id, Type.LONG, PropertyAttribute.READONLY, 1803c5114b8SDamjan Jovanovic new PropertyGetter() { 1813c5114b8SDamjan Jovanovic @Override 1823c5114b8SDamjan Jovanovic public Object getValue() { 1833c5114b8SDamjan Jovanovic return isNullable; 1843c5114b8SDamjan Jovanovic 1853c5114b8SDamjan Jovanovic } 1863c5114b8SDamjan Jovanovic }, 1873c5114b8SDamjan Jovanovic new PropertySetter() { 1883c5114b8SDamjan Jovanovic @Override 1893c5114b8SDamjan Jovanovic public void setValue(Object value) { 1903c5114b8SDamjan Jovanovic isNullable = (Integer) value; 1913c5114b8SDamjan Jovanovic } 1923c5114b8SDamjan Jovanovic }); 1933c5114b8SDamjan Jovanovic registerProperty(PropertyIds.ISAUTOINCREMENT.name, PropertyIds.ISAUTOINCREMENT.id, Type.BOOLEAN, PropertyAttribute.READONLY, 1943c5114b8SDamjan Jovanovic new PropertyGetter() { 1953c5114b8SDamjan Jovanovic @Override 1963c5114b8SDamjan Jovanovic public Object getValue() { 1973c5114b8SDamjan Jovanovic return isAutoIncrement; 1983c5114b8SDamjan Jovanovic 1993c5114b8SDamjan Jovanovic } 2003c5114b8SDamjan Jovanovic }, 2013c5114b8SDamjan Jovanovic new PropertySetter() { 2023c5114b8SDamjan Jovanovic @Override 2033c5114b8SDamjan Jovanovic public void setValue(Object value) { 2043c5114b8SDamjan Jovanovic isAutoIncrement = (Boolean) value; 2053c5114b8SDamjan Jovanovic } 2063c5114b8SDamjan Jovanovic }); 2073c5114b8SDamjan Jovanovic registerProperty(PropertyIds.ISROWVERSION.name, PropertyIds.ISROWVERSION.id, Type.BOOLEAN, PropertyAttribute.READONLY, 2083c5114b8SDamjan Jovanovic new PropertyGetter() { 2093c5114b8SDamjan Jovanovic @Override 2103c5114b8SDamjan Jovanovic public Object getValue() { 2113c5114b8SDamjan Jovanovic return isRowVersion; 2123c5114b8SDamjan Jovanovic 2133c5114b8SDamjan Jovanovic } 2143c5114b8SDamjan Jovanovic }, 2153c5114b8SDamjan Jovanovic new PropertySetter() { 2163c5114b8SDamjan Jovanovic @Override 2173c5114b8SDamjan Jovanovic public void setValue(Object value) { 2183c5114b8SDamjan Jovanovic isRowVersion = (Boolean) value; 2193c5114b8SDamjan Jovanovic } 2203c5114b8SDamjan Jovanovic }); 2213c5114b8SDamjan Jovanovic registerProperty(PropertyIds.ISCURRENCY.name, PropertyIds.ISCURRENCY.id, Type.BOOLEAN, PropertyAttribute.READONLY, 2223c5114b8SDamjan Jovanovic new PropertyGetter() { 2233c5114b8SDamjan Jovanovic @Override 2243c5114b8SDamjan Jovanovic public Object getValue() { 2253c5114b8SDamjan Jovanovic return isCurrency; 2263c5114b8SDamjan Jovanovic 2273c5114b8SDamjan Jovanovic } 2283c5114b8SDamjan Jovanovic }, 2293c5114b8SDamjan Jovanovic new PropertySetter() { 2303c5114b8SDamjan Jovanovic @Override 2313c5114b8SDamjan Jovanovic public void setValue(Object value) { 2323c5114b8SDamjan Jovanovic isCurrency = (Boolean) value; 2333c5114b8SDamjan Jovanovic } 2343c5114b8SDamjan Jovanovic }); 2353c5114b8SDamjan Jovanovic } 2363c5114b8SDamjan Jovanovic 2373c5114b8SDamjan Jovanovic // XComponent 2383c5114b8SDamjan Jovanovic 2393c5114b8SDamjan Jovanovic @Override postDisposing()2403c5114b8SDamjan Jovanovic protected void postDisposing() { 2413c5114b8SDamjan Jovanovic super.postDisposing(); 2423c5114b8SDamjan Jovanovic } 2433c5114b8SDamjan Jovanovic 244c34b9ec6SDamjan Jovanovic // XServiceInfo 245c34b9ec6SDamjan Jovanovic getImplementationName()246c34b9ec6SDamjan Jovanovic public String getImplementationName() { 247c34b9ec6SDamjan Jovanovic return getClass().getName(); 248c34b9ec6SDamjan Jovanovic } 249c34b9ec6SDamjan Jovanovic 250c34b9ec6SDamjan Jovanovic @Override getSupportedServiceNames()251c34b9ec6SDamjan Jovanovic public String[] getSupportedServiceNames() { 252c34b9ec6SDamjan Jovanovic return services.clone(); 253c34b9ec6SDamjan Jovanovic } 254c34b9ec6SDamjan Jovanovic 255c34b9ec6SDamjan Jovanovic @Override supportsService(String serviceName)256c34b9ec6SDamjan Jovanovic public boolean supportsService(String serviceName) { 257c34b9ec6SDamjan Jovanovic for (String service : getSupportedServiceNames()) { 258c34b9ec6SDamjan Jovanovic if (service.equals(serviceName)) { 259c34b9ec6SDamjan Jovanovic return true; 260c34b9ec6SDamjan Jovanovic } 261c34b9ec6SDamjan Jovanovic } 262c34b9ec6SDamjan Jovanovic return false; 263c34b9ec6SDamjan Jovanovic } 264c34b9ec6SDamjan Jovanovic 2653c5114b8SDamjan Jovanovic // XDataDescriptorFactory 2663c5114b8SDamjan Jovanovic 2673c5114b8SDamjan Jovanovic @Override createDataDescriptor()2683c5114b8SDamjan Jovanovic public XPropertySet createDataDescriptor() { 26968b6fe01SDamjan Jovanovic SdbcxColumnDescriptor descriptor = new SdbcxColumnDescriptor(isCaseSensitive()); 2705b780c4aSDamjan Jovanovic synchronized (this) { 2713c5114b8SDamjan Jovanovic CompHelper.copyProperties(this, descriptor); 2723c5114b8SDamjan Jovanovic } 2733c5114b8SDamjan Jovanovic return descriptor; 2743c5114b8SDamjan Jovanovic } 2753c5114b8SDamjan Jovanovic } 276