1*a1b4a26bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*a1b4a26bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*a1b4a26bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*a1b4a26bSAndrew Rist  * distributed with this work for additional information
6*a1b4a26bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*a1b4a26bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*a1b4a26bSAndrew Rist  * "License"); you may not use this file except in compliance
9*a1b4a26bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*a1b4a26bSAndrew Rist  *
11*a1b4a26bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*a1b4a26bSAndrew Rist  *
13*a1b4a26bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*a1b4a26bSAndrew Rist  * software distributed under the License is distributed on an
15*a1b4a26bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*a1b4a26bSAndrew Rist  * KIND, either express or implied.  See the License for the
17*a1b4a26bSAndrew Rist  * specific language governing permissions and limitations
18*a1b4a26bSAndrew Rist  * under the License.
19*a1b4a26bSAndrew Rist  *
20*a1b4a26bSAndrew Rist  *************************************************************/
21*a1b4a26bSAndrew Rist 
22*a1b4a26bSAndrew Rist 
23cdf0e10cSrcweir package com.sun.star.wizards.table;
24cdf0e10cSrcweir 
25cdf0e10cSrcweir import java.util.Vector;
26cdf0e10cSrcweir 
27cdf0e10cSrcweir import com.sun.star.beans.PropertyValue;
28cdf0e10cSrcweir import com.sun.star.beans.XPropertySet;
29cdf0e10cSrcweir import com.sun.star.container.XNameAccess;
30cdf0e10cSrcweir import com.sun.star.lang.Locale;
31cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory;
32cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
33cdf0e10cSrcweir import com.sun.star.wizards.common.Configuration;
34cdf0e10cSrcweir import com.sun.star.wizards.common.Properties;
35cdf0e10cSrcweir import com.sun.star.wizards.common.PropertyNames;
36cdf0e10cSrcweir 
37cdf0e10cSrcweir public class FieldDescription
38cdf0e10cSrcweir {
39cdf0e10cSrcweir     private String tablename = PropertyNames.EMPTY_STRING;
40cdf0e10cSrcweir //  String fieldname;
41cdf0e10cSrcweir     private String keyname;
42cdf0e10cSrcweir     private XNameAccess xNameAccessTableNode;
43cdf0e10cSrcweir     private XPropertySet xPropertySet;
44cdf0e10cSrcweir     private Vector aPropertyValues;
45cdf0e10cSrcweir //  PropertyValue[] aPropertyValues;
46cdf0e10cSrcweir     private Integer Type;
47cdf0e10cSrcweir     private Integer Scale;
48cdf0e10cSrcweir     private Integer Precision;
49cdf0e10cSrcweir     private Boolean DefaultValue;
50cdf0e10cSrcweir     private String Name;
51cdf0e10cSrcweir     private XMultiServiceFactory xMSF;
52cdf0e10cSrcweir     private Locale aLocale;
53cdf0e10cSrcweir 
FieldDescription(XMultiServiceFactory _xMSF, Locale _aLocale, ScenarioSelector _curscenarioselector, String _fieldname, String _keyname, int _nmaxcharCount)54cdf0e10cSrcweir     public FieldDescription(XMultiServiceFactory _xMSF, Locale _aLocale, ScenarioSelector _curscenarioselector, String _fieldname, String _keyname, int _nmaxcharCount)
55cdf0e10cSrcweir     {
56cdf0e10cSrcweir         xMSF = _xMSF;
57cdf0e10cSrcweir         aLocale = _aLocale;
58cdf0e10cSrcweir         tablename = _curscenarioselector.getTableName();
59cdf0e10cSrcweir         Name = _fieldname;
60cdf0e10cSrcweir         keyname = _keyname;
61cdf0e10cSrcweir         aPropertyValues = new Vector();
62cdf0e10cSrcweir         xNameAccessTableNode = _curscenarioselector.oCGTable.xNameAccessFieldsNode;
63cdf0e10cSrcweir         XNameAccess xNameAccessFieldNode;
64cdf0e10cSrcweir         if (_curscenarioselector.bcolumnnameislimited)
65cdf0e10cSrcweir         {
66cdf0e10cSrcweir             xNameAccessFieldNode = Configuration.getChildNodebyDisplayName(xMSF, aLocale, xNameAccessTableNode, keyname, "ShortName", _nmaxcharCount);
67cdf0e10cSrcweir         }
68cdf0e10cSrcweir         else
69cdf0e10cSrcweir         {
70cdf0e10cSrcweir             xNameAccessFieldNode = Configuration.getChildNodebyDisplayName(xMSF, aLocale, xNameAccessTableNode, keyname, PropertyNames.PROPERTY_NAME, _nmaxcharCount);
71cdf0e10cSrcweir         }
72cdf0e10cSrcweir         setFieldProperties(xNameAccessFieldNode);
73cdf0e10cSrcweir     }
74cdf0e10cSrcweir 
FieldDescription(String _fieldname)75cdf0e10cSrcweir     public FieldDescription(String _fieldname)
76cdf0e10cSrcweir     {
77cdf0e10cSrcweir         Name = _fieldname;
78cdf0e10cSrcweir         aPropertyValues = new Vector();
79cdf0e10cSrcweir         Type = new Integer(com.sun.star.sdbc.DataType.VARCHAR);
80cdf0e10cSrcweir         aPropertyValues.addElement(Properties.createProperty(PropertyNames.PROPERTY_NAME, _fieldname));
81cdf0e10cSrcweir         aPropertyValues.addElement(Properties.createProperty("Type", Type));
82cdf0e10cSrcweir     }
83cdf0e10cSrcweir 
setName(String _newfieldname)84cdf0e10cSrcweir     public void setName(String _newfieldname)
85cdf0e10cSrcweir     {
86cdf0e10cSrcweir         for (int i = 0; i < aPropertyValues.size(); i++)
87cdf0e10cSrcweir         {
88cdf0e10cSrcweir             PropertyValue aPropertyValue = (PropertyValue) aPropertyValues.get(i);
89cdf0e10cSrcweir             if (aPropertyValue.Name.equals(PropertyNames.PROPERTY_NAME))
90cdf0e10cSrcweir             {
91cdf0e10cSrcweir                 aPropertyValue.Value = _newfieldname;
92cdf0e10cSrcweir                 aPropertyValues.set(i, aPropertyValue);
93cdf0e10cSrcweir                 Name = _newfieldname;
94cdf0e10cSrcweir                 return;
95cdf0e10cSrcweir             }
96cdf0e10cSrcweir         }
97cdf0e10cSrcweir     }
98cdf0e10cSrcweir 
getName()99cdf0e10cSrcweir     public String getName()
100cdf0e10cSrcweir     {
101cdf0e10cSrcweir         return Name;
102cdf0e10cSrcweir     }
103cdf0e10cSrcweir 
gettablename()104cdf0e10cSrcweir     public String gettablename()
105cdf0e10cSrcweir     {
106cdf0e10cSrcweir         return tablename;
107cdf0e10cSrcweir     }
108cdf0e10cSrcweir 
propertyexists(String _propertyname)109cdf0e10cSrcweir     private boolean propertyexists(String _propertyname)
110cdf0e10cSrcweir     {
111cdf0e10cSrcweir         boolean bexists = false;
112cdf0e10cSrcweir         try
113cdf0e10cSrcweir         {
114cdf0e10cSrcweir             if (xPropertySet.getPropertySetInfo().hasPropertyByName(_propertyname))
115cdf0e10cSrcweir             {
116cdf0e10cSrcweir                 Object oValue = xPropertySet.getPropertyValue(_propertyname);
117cdf0e10cSrcweir                 bexists = (!com.sun.star.uno.AnyConverter.isVoid(oValue));
118cdf0e10cSrcweir             }
119cdf0e10cSrcweir         }
120cdf0e10cSrcweir         catch (Exception e)
121cdf0e10cSrcweir         {
122cdf0e10cSrcweir             e.printStackTrace(System.out);
123cdf0e10cSrcweir         }
124cdf0e10cSrcweir         return bexists;
125cdf0e10cSrcweir     }
126cdf0e10cSrcweir 
setFieldProperties(XNameAccess _xNameAccessFieldNode)127cdf0e10cSrcweir     public void setFieldProperties(XNameAccess _xNameAccessFieldNode)
128cdf0e10cSrcweir     {
129cdf0e10cSrcweir         try
130cdf0e10cSrcweir         {
131cdf0e10cSrcweir             xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, _xNameAccessFieldNode);
132cdf0e10cSrcweir //      Integer Index = (Integer) xPropertySet.getPropertyValue("Index");
133cdf0e10cSrcweir             if (propertyexists(PropertyNames.PROPERTY_NAME))
134cdf0e10cSrcweir             {
135cdf0e10cSrcweir                 aPropertyValues.addElement(Properties.createProperty(PropertyNames.PROPERTY_NAME, Name));
136cdf0e10cSrcweir             }
137cdf0e10cSrcweir             if (propertyexists("Type"))
138cdf0e10cSrcweir             {
139cdf0e10cSrcweir                 aPropertyValues.addElement(Properties.createProperty("Type", xPropertySet.getPropertyValue("Type")));
140cdf0e10cSrcweir             }
141cdf0e10cSrcweir             if (propertyexists("Scale"))
142cdf0e10cSrcweir             {
143cdf0e10cSrcweir                 aPropertyValues.addElement(Properties.createProperty("Scale", xPropertySet.getPropertyValue("Scale")));
144cdf0e10cSrcweir //          Scale =
145cdf0e10cSrcweir             }
146cdf0e10cSrcweir             if (propertyexists("Precision"))
147cdf0e10cSrcweir             {
148cdf0e10cSrcweir                 aPropertyValues.addElement(Properties.createProperty("Precision", xPropertySet.getPropertyValue("Precision")));
149cdf0e10cSrcweir //          Precision = (Integer) xPropertySet.getPropertyValue("Precision");
150cdf0e10cSrcweir             }
151cdf0e10cSrcweir             if (propertyexists("DefaultValue"))
152cdf0e10cSrcweir             {
153cdf0e10cSrcweir                 aPropertyValues.addElement(Properties.createProperty("DefaultValue", xPropertySet.getPropertyValue("DefaultValue")));//          DefaultValue = (Boolean) xPropertySet.getPropertyValue("DefaultValue");
154cdf0e10cSrcweir             //Type =  4; // TODO wo ist der Fehler?(Integer) xPropertySet.getPropertyValue("Type");
155cdf0e10cSrcweir             }
156cdf0e10cSrcweir         }
157cdf0e10cSrcweir         catch (Exception e)
158cdf0e10cSrcweir         {
159cdf0e10cSrcweir             e.printStackTrace(System.out);
160cdf0e10cSrcweir         }
161cdf0e10cSrcweir     }
162cdf0e10cSrcweir 
getPropertyValues()163cdf0e10cSrcweir     public PropertyValue[] getPropertyValues()
164cdf0e10cSrcweir     {
165cdf0e10cSrcweir         if (aPropertyValues != null)
166cdf0e10cSrcweir         {
167cdf0e10cSrcweir             PropertyValue[] aProperties = new PropertyValue[aPropertyValues.size()];
168cdf0e10cSrcweir             aPropertyValues.toArray(aProperties);
169cdf0e10cSrcweir             return aProperties;
170cdf0e10cSrcweir         }
171cdf0e10cSrcweir         return null;
172cdf0e10cSrcweir     }
173cdf0e10cSrcweir }
174