summaryrefslogtreecommitdiff
path: root/wizards/com/sun/star/wizards/db/ColumnPropertySet.java
diff options
context:
space:
mode:
Diffstat (limited to 'wizards/com/sun/star/wizards/db/ColumnPropertySet.java')
-rw-r--r--wizards/com/sun/star/wizards/db/ColumnPropertySet.java213
1 files changed, 213 insertions, 0 deletions
diff --git a/wizards/com/sun/star/wizards/db/ColumnPropertySet.java b/wizards/com/sun/star/wizards/db/ColumnPropertySet.java
new file mode 100644
index 000000000000..204ba2328321
--- /dev/null
+++ b/wizards/com/sun/star/wizards/db/ColumnPropertySet.java
@@ -0,0 +1,213 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.wizards.db;
+
+import com.sun.star.beans.Property;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.sdbc.DataType;
+import com.sun.star.wizards.common.Properties;
+// import com.sun.star.wizards.db.TypeInspector;
+
+public class ColumnPropertySet
+{
+
+ TypeInspector oTypeInspector;
+ public XPropertySet xPropertySet;
+ private int nType;
+ private String sTypeName = "";
+
+ public ColumnPropertySet(TypeInspector _oTypeInspector, XPropertySet _xPropertySet)
+ {
+ xPropertySet = _xPropertySet;
+ oTypeInspector = _oTypeInspector;
+ }
+
+ private PropertyValue[] propertySet2PropertyValueArray(XPropertySet _xNewPropertySet) throws com.sun.star.uno.Exception
+ {
+ Property[] props = _xNewPropertySet.getPropertySetInfo().getProperties();
+ PropertyValue[] ret = new PropertyValue[props.length];
+ for (int i = 0; i < props.length; i++)
+ {
+ PropertyValue val = new PropertyValue();
+ val.Name = props[i].Name;
+ val.Value = _xNewPropertySet.getPropertyValue(val.Name);
+ ret[i] = val;
+ }
+ return ret;
+ }
+
+ private void assignPropertyValues(String _sNewName, PropertyValue[] _aNewColPropertyValues, boolean _bsetDefaultProperties)
+ {
+ try
+ {
+ nType = ((Integer) Properties.getPropertyValue(_aNewColPropertyValues, "Type")).intValue();
+ nType = oTypeInspector.convertDataType(nType);
+ if (Properties.hasPropertyValue(_aNewColPropertyValues, "TypeName"))
+ {
+ sTypeName = (String) Properties.getPropertyValue(_aNewColPropertyValues, "TypeName");
+ }
+ Integer precision = null;
+ if (Properties.hasPropertyValue(_aNewColPropertyValues, "Precision"))
+ {
+ precision = (Integer) Properties.getPropertyValue(_aNewColPropertyValues, "Precision");
+
+ }
+ if ((nType == DataType.VARCHAR) && (precision == null || precision.intValue() == 0))
+ {
+ precision = new Integer(50);
+ }
+ if (precision != null)
+ {
+ xPropertySet.setPropertyValue("Precision", precision);
+ }
+ setType(nType, sTypeName, precision);
+ for (int i = 0; i < _aNewColPropertyValues.length; i++)
+ {
+ String sPropName = _aNewColPropertyValues[i].Name;
+ if (_sNewName != null && sPropName.equals("Name"))
+ {
+ xPropertySet.setPropertyValue("Name", _sNewName);
+ }
+ else if (sPropName.equals("Precision"))
+ {
+ // do nothing, see above
+ }
+ else if ((!sPropName.equals("Type")) && (!sPropName.equals("TypeName")))
+ {
+ Object oColValue = _aNewColPropertyValues[i].Value;
+ assignPropertyValue(sPropName, oColValue);
+ }
+ }
+ if (_bsetDefaultProperties)
+ {
+ assignPropertyValue("IsNullable", new Integer(oTypeInspector.isNullable(xPropertySet)));
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace(System.out);
+ }
+
+ }
+
+ public void assignPropertyValues(PropertyValue[] _aNewColPropertyValues, boolean _bsetDefaultProperties)
+ {
+ assignPropertyValues(null /* dont change the name */, _aNewColPropertyValues, _bsetDefaultProperties);
+ }
+
+ public void assignNewPropertySet(String _sNewName, XPropertySet _xNewPropertySet)
+ {
+ try
+ {
+ assignPropertyValues(
+ _sNewName, propertySet2PropertyValueArray(_xNewPropertySet), false /*setDefaultProperties*/);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace(System.out);
+ }
+ }
+
+ private int getPrecision()
+ {
+ try
+ {
+ return ((Integer) xPropertySet.getPropertyValue("Precision")).intValue();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace(System.out);
+ return 0;
+ }
+ }
+
+ private void setType(int _nType, String _sTypeName, Integer precision)
+ {
+ if (_sTypeName.equals(""))
+ {
+ sTypeName = oTypeInspector.getDefaultTypeName(nType, precision);
+ }
+ else
+ {
+ sTypeName = _sTypeName;
+ }
+ nType = oTypeInspector.getDataType(sTypeName);
+ assignPropertyValue("Type", new Integer(nType));
+ assignPropertyValue("TypeName", sTypeName);
+ }
+
+ private void assignPropertyValue(String _spropname, Object _oValue)
+ {
+ try
+ {
+ if (_spropname.equals("Type"))
+ {
+ nType = ((Integer) _oValue).intValue();
+ xPropertySet.setPropertyValue("Type", new Integer(nType));
+ }
+ else if (_spropname.equals("Name"))
+ {
+ String sName = (String) _oValue;
+ if (!sName.equals(""))
+ {
+ xPropertySet.setPropertyValue("Name", sName);
+ }
+ }
+ else if (_spropname.equals("Scale"))
+ {
+ int nScale = ((Integer) _oValue).intValue();
+ nScale = oTypeInspector.getScale(xPropertySet);
+ xPropertySet.setPropertyValue("Scale", new Integer(nScale));
+ }
+ else if (_spropname.equals("IsNullable"))
+ {
+ int nNullability = ((Integer) _oValue).intValue();
+ nNullability = oTypeInspector.getNullability(xPropertySet, nNullability);
+ xPropertySet.setPropertyValue("IsNullable", new Integer(nNullability));
+ }
+ else if (_spropname.equals("TypeName"))
+ {
+ String sTypeName = (String) _oValue;
+ xPropertySet.setPropertyValue("TypeName", sTypeName);
+ }
+ else
+ {
+ xPropertySet.setPropertyValue(_spropname, _oValue);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace(System.out);
+ }
+ }
+
+ private int getType()
+ {
+ return nType;
+ }
+}