Package com.sun.star.wizards.db

Source Code of com.sun.star.wizards.db.ColumnPropertySet

/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: ColumnPropertySet.java,v $
* $Revision: 1.8 $
*
* 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.PropertyVetoException;
import com.sun.star.beans.UnknownPropertyException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.sdbc.DataType;
import com.sun.star.uno.AnyConverter;
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;
    }
}
TOP

Related Classes of com.sun.star.wizards.db.ColumnPropertySet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.