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