1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski import com.sun.star.beans.UnknownPropertyException;
25*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet;
26*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameAccess;
27*b1cdbd2cSJim Jagielski import com.sun.star.lang.Locale;
28*b1cdbd2cSJim Jagielski import com.sun.star.lang.WrappedTargetException;
29*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo;
30*b1cdbd2cSJim Jagielski import com.sun.star.reflection.ParamInfo;
31*b1cdbd2cSJim Jagielski import com.sun.star.reflection.XIdlClass;
32*b1cdbd2cSJim Jagielski import com.sun.star.reflection.XIdlMethod;
33*b1cdbd2cSJim Jagielski import com.sun.star.reflection.XTypeDescription;
34*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextTablesSupplier;
35*b1cdbd2cSJim Jagielski import com.sun.star.uno.Any;
36*b1cdbd2cSJim Jagielski import com.sun.star.uno.AnyConverter;
37*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type;
38*b1cdbd2cSJim Jagielski import com.sun.star.uno.TypeClass;
39*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
40*b1cdbd2cSJim Jagielski import java.util.Enumeration;
41*b1cdbd2cSJim Jagielski import java.util.Hashtable;
42*b1cdbd2cSJim Jagielski import java.util.Vector;
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski public class SourceCodeGenerator {
47*b1cdbd2cSJim Jagielski     private Vector sExceptions = new Vector();
48*b1cdbd2cSJim Jagielski     Vector sHeaderStatements = new HeaderStatements();
49*b1cdbd2cSJim Jagielski     private XLanguageSourceCodeGenerator m_xLanguageSourceCodeGenerator;
50*b1cdbd2cSJim Jagielski     private String sHeaderCode = "";
51*b1cdbd2cSJim Jagielski     private String sStatementCode = "";
52*b1cdbd2cSJim Jagielski     private String sMainMethodSignature = "";
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski     private Hashtable aVariables = new Hashtable();
55*b1cdbd2cSJim Jagielski     private final String SSUFFIXSEPARATOR = "_";
56*b1cdbd2cSJim Jagielski     private final String SVARIABLENAME = "VariableName";
57*b1cdbd2cSJim Jagielski     private final String SARRAYVARIABLENAME = "VariableNameList";
58*b1cdbd2cSJim Jagielski     private final String SUNOOBJECTNAME = "oUnobject";
59*b1cdbd2cSJim Jagielski     private final String SUNOSTRUCTNAME = "aUnoStruct";
60*b1cdbd2cSJim Jagielski     private Introspector m_oIntrospector;
61*b1cdbd2cSJim Jagielski     private Vector aTreepathProviders = new Vector();
62*b1cdbd2cSJim Jagielski     private XTreePathProvider xTreepathProvider = null;
63*b1cdbd2cSJim Jagielski     private boolean baddExceptionHandling = false;
64*b1cdbd2cSJim Jagielski     private boolean bXPropertySetExceptionsAreAdded = false;
65*b1cdbd2cSJim Jagielski     private XUnoNode oInitialUnoNode = null;
66*b1cdbd2cSJim Jagielski     private final String sINITIALVARIABLENAME = "_oUnoEntryObject";
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski     /** Creates a new instance of SourceCodeGenerator */
SourceCodeGenerator(int _nLanguage)70*b1cdbd2cSJim Jagielski     public SourceCodeGenerator(int _nLanguage) {
71*b1cdbd2cSJim Jagielski         this.setLanguage(_nLanguage);
72*b1cdbd2cSJim Jagielski         m_oIntrospector = Introspector.getIntrospector();
73*b1cdbd2cSJim Jagielski     }
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski 
addSourceCodeOfUnoObject(XTreePathProvider _xTreepathProvider, boolean _brememberPath, boolean _bAddMethodSignature, boolean _baddHeader)76*b1cdbd2cSJim Jagielski     public String addSourceCodeOfUnoObject(XTreePathProvider _xTreepathProvider, boolean _brememberPath, boolean _bAddMethodSignature, boolean _baddHeader){
77*b1cdbd2cSJim Jagielski         String sSourceCode = "";
78*b1cdbd2cSJim Jagielski         String sVariableName = "";
79*b1cdbd2cSJim Jagielski         if (_xTreepathProvider != null) {
80*b1cdbd2cSJim Jagielski             for (int i = 0; i < _xTreepathProvider.getPathCount(); i++){
81*b1cdbd2cSJim Jagielski                 XUnoNode oUnoNode = _xTreepathProvider.getPathComponent(i);
82*b1cdbd2cSJim Jagielski                 if (i == 0){
83*b1cdbd2cSJim Jagielski                     sVariableName = sINITIALVARIABLENAME;
84*b1cdbd2cSJim Jagielski                     oInitialUnoNode = oUnoNode;
85*b1cdbd2cSJim Jagielski                 }
86*b1cdbd2cSJim Jagielski                 else{
87*b1cdbd2cSJim Jagielski                     if (oUnoNode instanceof XUnoMethodNode){
88*b1cdbd2cSJim Jagielski                         XUnoMethodNode oUnoMethodNode = (XUnoMethodNode) oUnoNode;
89*b1cdbd2cSJim Jagielski                         if (oUnoMethodNode.isInvoked()){
90*b1cdbd2cSJim Jagielski                             UnoObjectDefinition oUnoReturnObjectDefinition = getUnoObjectDefinition(_xTreepathProvider, oUnoMethodNode, i);
91*b1cdbd2cSJim Jagielski                             if (!isVariableDeclared(oUnoReturnObjectDefinition, this.generateVariableNameFromMethod(oUnoMethodNode.getXIdlMethod()))){
92*b1cdbd2cSJim Jagielski //                                sStatementCode += "\n";
93*b1cdbd2cSJim Jagielski                                 sStatementCode += "\n" + getMethodStatementSourceCode(oUnoMethodNode, sVariableName, oUnoReturnObjectDefinition);
94*b1cdbd2cSJim Jagielski                             }
95*b1cdbd2cSJim Jagielski                             sVariableName = oUnoReturnObjectDefinition.getVariableName();
96*b1cdbd2cSJim Jagielski                         }
97*b1cdbd2cSJim Jagielski                     }
98*b1cdbd2cSJim Jagielski                     else if (oUnoNode instanceof XUnoPropertyNode){
99*b1cdbd2cSJim Jagielski                         XUnoPropertyNode oUnoPropertyNode = (XUnoPropertyNode) oUnoNode;
100*b1cdbd2cSJim Jagielski                         Any oReturnObject = com.sun.star.uno.Any.complete(oUnoPropertyNode.getUnoReturnObject());
101*b1cdbd2cSJim Jagielski                         UnoObjectDefinition oUnoReturnObjectDefinition = new UnoObjectDefinition(oReturnObject);
102*b1cdbd2cSJim Jagielski                         if (!isVariableDeclared(oUnoReturnObjectDefinition, oUnoPropertyNode.getProperty().Name)){
103*b1cdbd2cSJim Jagielski //                            sStatementCode += "\n";
104*b1cdbd2cSJim Jagielski                             sStatementCode += "\n" + getPropertyStatementSourceCode(oUnoPropertyNode, sVariableName, oUnoReturnObjectDefinition);
105*b1cdbd2cSJim Jagielski                         }
106*b1cdbd2cSJim Jagielski                         sVariableName = oUnoReturnObjectDefinition.getVariableName();
107*b1cdbd2cSJim Jagielski                     }
108*b1cdbd2cSJim Jagielski                 }
109*b1cdbd2cSJim Jagielski             }
110*b1cdbd2cSJim Jagielski         }
111*b1cdbd2cSJim Jagielski         String sCompleteCode = combineCompleteSourceCode(sMainMethodSignature, _baddHeader);
112*b1cdbd2cSJim Jagielski         xTreepathProvider = _xTreepathProvider;
113*b1cdbd2cSJim Jagielski         if (_brememberPath){
114*b1cdbd2cSJim Jagielski             aTreepathProviders.add(_xTreepathProvider);
115*b1cdbd2cSJim Jagielski         }
116*b1cdbd2cSJim Jagielski         return sCompleteCode;
117*b1cdbd2cSJim Jagielski     }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski 
setLanguage(int _nLanguage)120*b1cdbd2cSJim Jagielski     private void setLanguage(int _nLanguage){
121*b1cdbd2cSJim Jagielski         XLanguageSourceCodeGenerator xLanguageSourceCodeGenerator = null;
122*b1cdbd2cSJim Jagielski         switch(_nLanguage){
123*b1cdbd2cSJim Jagielski             case XLanguageSourceCodeGenerator.nJAVA:
124*b1cdbd2cSJim Jagielski                 xLanguageSourceCodeGenerator = new JavaCodeGenerator();
125*b1cdbd2cSJim Jagielski                 break;
126*b1cdbd2cSJim Jagielski             case XLanguageSourceCodeGenerator.nCPLUSPLUS:
127*b1cdbd2cSJim Jagielski                 xLanguageSourceCodeGenerator = new CPlusPlusCodeGenerator();
128*b1cdbd2cSJim Jagielski                 break;
129*b1cdbd2cSJim Jagielski             case XLanguageSourceCodeGenerator.nBASIC:
130*b1cdbd2cSJim Jagielski                 xLanguageSourceCodeGenerator = new BasicCodeGenerator();
131*b1cdbd2cSJim Jagielski                 break;
132*b1cdbd2cSJim Jagielski             default:
133*b1cdbd2cSJim Jagielski                 System.out.println("Unknown Sourcecode Language. Check Menus!");
134*b1cdbd2cSJim Jagielski         }
135*b1cdbd2cSJim Jagielski         if (xLanguageSourceCodeGenerator != null){
136*b1cdbd2cSJim Jagielski             m_xLanguageSourceCodeGenerator = xLanguageSourceCodeGenerator;
137*b1cdbd2cSJim Jagielski         }
138*b1cdbd2cSJim Jagielski     }
139*b1cdbd2cSJim Jagielski 
resetSourceCodeGeneration(int _nLanguage)140*b1cdbd2cSJim Jagielski     private void resetSourceCodeGeneration(int _nLanguage){
141*b1cdbd2cSJim Jagielski         aVariables.clear();
142*b1cdbd2cSJim Jagielski         this.sHeaderStatements.clear();
143*b1cdbd2cSJim Jagielski         setLanguage(_nLanguage);
144*b1cdbd2cSJim Jagielski         String sHeaderCode = "";
145*b1cdbd2cSJim Jagielski         sStatementCode = "";
146*b1cdbd2cSJim Jagielski     }
147*b1cdbd2cSJim Jagielski 
generateVariableNameFromMethod(String _sMethodName, String _sPrefix, boolean _bConsiderAll)148*b1cdbd2cSJim Jagielski     private String generateVariableNameFromMethod(String _sMethodName, String _sPrefix, boolean _bConsiderAll){
149*b1cdbd2cSJim Jagielski         String sReturn = "";
150*b1cdbd2cSJim Jagielski         if (_sMethodName.startsWith(_sPrefix)){
151*b1cdbd2cSJim Jagielski             int nPrefixLength = _sPrefix.length();
152*b1cdbd2cSJim Jagielski             if (_sMethodName.length() > nPrefixLength){
153*b1cdbd2cSJim Jagielski                 String sChar = _sMethodName.substring(nPrefixLength, nPrefixLength + 1);
154*b1cdbd2cSJim Jagielski                 String sUpperChar = sChar.toUpperCase();
155*b1cdbd2cSJim Jagielski                 if (sUpperChar.equals(sChar)){
156*b1cdbd2cSJim Jagielski                     if (_bConsiderAll){
157*b1cdbd2cSJim Jagielski                         sReturn = _sMethodName;
158*b1cdbd2cSJim Jagielski                     }
159*b1cdbd2cSJim Jagielski                     else{
160*b1cdbd2cSJim Jagielski                         sReturn = _sMethodName.substring(nPrefixLength, _sMethodName.length());
161*b1cdbd2cSJim Jagielski                     }
162*b1cdbd2cSJim Jagielski                 }
163*b1cdbd2cSJim Jagielski             }
164*b1cdbd2cSJim Jagielski         }
165*b1cdbd2cSJim Jagielski         return sReturn;
166*b1cdbd2cSJim Jagielski     }
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 
generateVariableNameFromMethod(XIdlMethod _xIdlMethod)169*b1cdbd2cSJim Jagielski     private String generateVariableNameFromMethod(XIdlMethod _xIdlMethod){
170*b1cdbd2cSJim Jagielski         // todo: refactor this!!!
171*b1cdbd2cSJim Jagielski         String sMethodName = _xIdlMethod.getName();
172*b1cdbd2cSJim Jagielski         String sReturn = "";
173*b1cdbd2cSJim Jagielski         sReturn = generateVariableNameFromMethod(sMethodName, "getBy", false);
174*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
175*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "get", false);
176*b1cdbd2cSJim Jagielski         }
177*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
178*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "attach", false);
179*b1cdbd2cSJim Jagielski         }
180*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
181*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "assign", false);
182*b1cdbd2cSJim Jagielski         }
183*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
184*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "attach", false);
185*b1cdbd2cSJim Jagielski         }
186*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
187*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "create", false);
188*b1cdbd2cSJim Jagielski         }
189*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
190*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "is", true);
191*b1cdbd2cSJim Jagielski         }
192*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
193*b1cdbd2cSJim Jagielski             sReturn = generateVariableNameFromMethod(sMethodName, "has", true);
194*b1cdbd2cSJim Jagielski         }
195*b1cdbd2cSJim Jagielski         if (sReturn.equals("")){
196*b1cdbd2cSJim Jagielski             sReturn = sMethodName;
197*b1cdbd2cSJim Jagielski         }
198*b1cdbd2cSJim Jagielski         return sReturn;
199*b1cdbd2cSJim Jagielski     }
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski 
convertAllUnoObjects(int _nLanguage)202*b1cdbd2cSJim Jagielski     public String convertAllUnoObjects(int _nLanguage){
203*b1cdbd2cSJim Jagielski         String sSourceCode = "";
204*b1cdbd2cSJim Jagielski         resetSourceCodeGeneration(_nLanguage);
205*b1cdbd2cSJim Jagielski         int ncount = aTreepathProviders.size();
206*b1cdbd2cSJim Jagielski         for (int i=0; i< ncount; i++){
207*b1cdbd2cSJim Jagielski             sSourceCode = addSourceCodeOfUnoObject((XTreePathProvider) aTreepathProviders.get(i), false, (i==0), (i == (ncount-1)));
208*b1cdbd2cSJim Jagielski     }
209*b1cdbd2cSJim Jagielski         return sSourceCode;
210*b1cdbd2cSJim Jagielski     }
211*b1cdbd2cSJim Jagielski 
getUnoObjectDefinition(XTreePathProvider _xTreePathProvider, XUnoMethodNode _oUnoMethodNode, int _nindex)212*b1cdbd2cSJim Jagielski     private UnoObjectDefinition getUnoObjectDefinition(XTreePathProvider _xTreePathProvider, XUnoMethodNode _oUnoMethodNode, int _nindex){
213*b1cdbd2cSJim Jagielski         XUnoNode oUnoNode = null;
214*b1cdbd2cSJim Jagielski         Object oUnoReturnObject = null;
215*b1cdbd2cSJim Jagielski         Object[] oParamObjects = null;
216*b1cdbd2cSJim Jagielski         XIdlClass xIdlClass = _oUnoMethodNode.getXIdlMethod().getReturnType();
217*b1cdbd2cSJim Jagielski         String sTypeName = xIdlClass.getName();
218*b1cdbd2cSJim Jagielski         TypeClass aTypeClass = xIdlClass.getTypeClass();
219*b1cdbd2cSJim Jagielski         if (aTypeClass.getValue() != TypeClass.VOID_value){
220*b1cdbd2cSJim Jagielski             if (_xTreePathProvider.getPathCount() > _nindex + 1){
221*b1cdbd2cSJim Jagielski                 oUnoNode = _xTreePathProvider.getPathComponent(_nindex + 1);
222*b1cdbd2cSJim Jagielski                 oUnoReturnObject = oUnoNode.getUnoObject();
223*b1cdbd2cSJim Jagielski             }
224*b1cdbd2cSJim Jagielski         }
225*b1cdbd2cSJim Jagielski         if (oUnoReturnObject == null){
226*b1cdbd2cSJim Jagielski             oUnoReturnObject = _oUnoMethodNode.getLastUnoReturnObject();
227*b1cdbd2cSJim Jagielski         }
228*b1cdbd2cSJim Jagielski         UnoObjectDefinition oUnoObjectDefinition = new UnoObjectDefinition(oUnoReturnObject, sTypeName, aTypeClass);
229*b1cdbd2cSJim Jagielski         if (_oUnoMethodNode.hasParameters()){
230*b1cdbd2cSJim Jagielski             if (oUnoNode != null){
231*b1cdbd2cSJim Jagielski                 oParamObjects = oUnoNode.getParameterObjects();
232*b1cdbd2cSJim Jagielski             }
233*b1cdbd2cSJim Jagielski             else{
234*b1cdbd2cSJim Jagielski                 oParamObjects = _oUnoMethodNode.getLastParameterObjects();
235*b1cdbd2cSJim Jagielski             }
236*b1cdbd2cSJim Jagielski         }
237*b1cdbd2cSJim Jagielski         if (oParamObjects != null){
238*b1cdbd2cSJim Jagielski             oUnoObjectDefinition.addParameterObjects(oParamObjects);
239*b1cdbd2cSJim Jagielski         }
240*b1cdbd2cSJim Jagielski         return oUnoObjectDefinition;
241*b1cdbd2cSJim Jagielski     }
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski 
combineCompleteSourceCode(String _sMethodSignature, boolean _bAddHeader)244*b1cdbd2cSJim Jagielski     private String combineCompleteSourceCode(String _sMethodSignature, boolean _bAddHeader){
245*b1cdbd2cSJim Jagielski         String sCompleteCode = "";
246*b1cdbd2cSJim Jagielski         if (_bAddHeader){
247*b1cdbd2cSJim Jagielski             sMainMethodSignature = m_xLanguageSourceCodeGenerator.getMainMethodSignatureSourceCode(oInitialUnoNode, sINITIALVARIABLENAME);
248*b1cdbd2cSJim Jagielski             m_xLanguageSourceCodeGenerator.assignqueryInterfaceHeaderSourceCode();
249*b1cdbd2cSJim Jagielski             sCompleteCode += getHeaderSourceCode();
250*b1cdbd2cSJim Jagielski         }
251*b1cdbd2cSJim Jagielski         sCompleteCode += sMainMethodSignature;
252*b1cdbd2cSJim Jagielski         sCompleteCode += sStatementCode;
253*b1cdbd2cSJim Jagielski         if (_bAddHeader){
254*b1cdbd2cSJim Jagielski             sCompleteCode += m_xLanguageSourceCodeGenerator.getMethodTerminationSourceCode();
255*b1cdbd2cSJim Jagielski             sCompleteCode += "\n" + m_xLanguageSourceCodeGenerator.getCommentSign() + "...";
256*b1cdbd2cSJim Jagielski         }
257*b1cdbd2cSJim Jagielski         return sCompleteCode;
258*b1cdbd2cSJim Jagielski     }
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski 
getPropertyStatementSourceCode(XUnoPropertyNode _oUnoPropertyNode, String _sVariableName, UnoObjectDefinition _oUnoReturnObjectDefinition)261*b1cdbd2cSJim Jagielski     public String getPropertyStatementSourceCode(XUnoPropertyNode _oUnoPropertyNode, String _sVariableName, UnoObjectDefinition _oUnoReturnObjectDefinition){
262*b1cdbd2cSJim Jagielski         String sReturnObjectVariableDefinition = "";
263*b1cdbd2cSJim Jagielski         String sStatement = "";
264*b1cdbd2cSJim Jagielski         String sPropertyName = _oUnoPropertyNode.getProperty().Name;
265*b1cdbd2cSJim Jagielski         UnoObjectDefinition oUnoObjectDefinition = new UnoObjectDefinition(_oUnoPropertyNode.getUnoObject(), "com.sun.star.beans.XPropertySet");
266*b1cdbd2cSJim Jagielski             if (!m_xLanguageSourceCodeGenerator.needsqueryInterface() || (oUnoObjectDefinition.getTypeClass().getValue() == TypeClass.STRUCT_value)){
267*b1cdbd2cSJim Jagielski                 oUnoObjectDefinition.setVariableName(_sVariableName);
268*b1cdbd2cSJim Jagielski                 if (oUnoObjectDefinition.getTypeClass().getValue() == TypeClass.STRUCT_value){
269*b1cdbd2cSJim Jagielski                     sReturnObjectVariableDefinition = getVariableInitialization(_oUnoReturnObjectDefinition, false);
270*b1cdbd2cSJim Jagielski                     sStatement += m_xLanguageSourceCodeGenerator.getStructSourceCode(sReturnObjectVariableDefinition, oUnoObjectDefinition.getVariableName(), sPropertyName);
271*b1cdbd2cSJim Jagielski                     return sStatement;
272*b1cdbd2cSJim Jagielski                 }
273*b1cdbd2cSJim Jagielski             }
274*b1cdbd2cSJim Jagielski             sStatement += addQueryInterfaceSourceCode(oUnoObjectDefinition, _sVariableName, "com.sun.star.beans.XPropertySet");
275*b1cdbd2cSJim Jagielski             if (_oUnoReturnObjectDefinition.getTypeClass().getValue() != TypeClass.VOID_value){
276*b1cdbd2cSJim Jagielski                 sReturnObjectVariableDefinition = getVariableInitialization(_oUnoReturnObjectDefinition, true);
277*b1cdbd2cSJim Jagielski             }
278*b1cdbd2cSJim Jagielski             sStatement += m_xLanguageSourceCodeGenerator.getPropertyValueGetterSourceCode(sPropertyName, sReturnObjectVariableDefinition, oUnoObjectDefinition.getVariableName(), _oUnoReturnObjectDefinition.getTypeClass(), _oUnoReturnObjectDefinition.getTypeName());
279*b1cdbd2cSJim Jagielski             addXPropertySetRelatedExceptions();
280*b1cdbd2cSJim Jagielski             return sStatement;
281*b1cdbd2cSJim Jagielski     }
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 
getMethodStatementSourceCode(XUnoMethodNode _oUnoMethodNode, String _sVariableName, UnoObjectDefinition _oUnoReturnObjectDefinition)284*b1cdbd2cSJim Jagielski     public String getMethodStatementSourceCode(XUnoMethodNode _oUnoMethodNode, String _sVariableName, UnoObjectDefinition _oUnoReturnObjectDefinition){
285*b1cdbd2cSJim Jagielski         String sReturnObjectVariableDefinition = "";
286*b1cdbd2cSJim Jagielski         String sStatement = "";
287*b1cdbd2cSJim Jagielski         XIdlMethod xIdlMethod = _oUnoMethodNode.getXIdlMethod();
288*b1cdbd2cSJim Jagielski         TypeClass aReturnTypeClass = xIdlMethod.getReturnType().getTypeClass();
289*b1cdbd2cSJim Jagielski         UnoObjectDefinition oUnoObjectDefinition = new UnoObjectDefinition(_oUnoMethodNode.getUnoObject(), _oUnoMethodNode.getClassName());
290*b1cdbd2cSJim Jagielski         String sVariableStemName = this.generateVariableNameFromMethod(xIdlMethod);
291*b1cdbd2cSJim Jagielski         sStatement += addQueryInterfaceSourceCode(oUnoObjectDefinition, _sVariableName, oUnoObjectDefinition.getTypeName());
292*b1cdbd2cSJim Jagielski         if (_oUnoReturnObjectDefinition.getTypeClass().getValue() != TypeClass.VOID_value){
293*b1cdbd2cSJim Jagielski             sReturnObjectVariableDefinition = getVariableInitialization(_oUnoReturnObjectDefinition, false) + " = ";
294*b1cdbd2cSJim Jagielski         }
295*b1cdbd2cSJim Jagielski         Object[] oParamObjects = _oUnoReturnObjectDefinition.getParameterObjects();
296*b1cdbd2cSJim Jagielski         String sParameterCode = getMethodParameterValueDescription(_oUnoMethodNode, oParamObjects, false);
297*b1cdbd2cSJim Jagielski         String sSeparator = m_xLanguageSourceCodeGenerator.getMethodSeparator();
298*b1cdbd2cSJim Jagielski         sStatement += "\t" + sReturnObjectVariableDefinition + oUnoObjectDefinition.getVariableName() + sSeparator + xIdlMethod.getName() + "(" + sParameterCode + ")";
299*b1cdbd2cSJim Jagielski         sStatement += m_xLanguageSourceCodeGenerator.getStatementTerminationCharacter();
300*b1cdbd2cSJim Jagielski         addExceptions(xIdlMethod);
301*b1cdbd2cSJim Jagielski         return sStatement;
302*b1cdbd2cSJim Jagielski     }
303*b1cdbd2cSJim Jagielski 
304*b1cdbd2cSJim Jagielski 
addQueryInterfaceSourceCode(UnoObjectDefinition _oUnoObjectDefinition, String _sVariableName, String _sTypeName)305*b1cdbd2cSJim Jagielski     private String addQueryInterfaceSourceCode(UnoObjectDefinition _oUnoObjectDefinition, String _sVariableName,  String _sTypeName){
306*b1cdbd2cSJim Jagielski         String sLocStatement = "";
307*b1cdbd2cSJim Jagielski         if (m_xLanguageSourceCodeGenerator.needsqueryInterface()){
308*b1cdbd2cSJim Jagielski             if (!isVariableDeclared(_oUnoObjectDefinition, "")){
309*b1cdbd2cSJim Jagielski                 String sObjectVariableDefinition = getVariableDeclaration(_oUnoObjectDefinition, false, "");
310*b1cdbd2cSJim Jagielski                 sLocStatement += m_xLanguageSourceCodeGenerator.getqueryInterfaceSourceCode(_sTypeName, sObjectVariableDefinition, _sVariableName);
311*b1cdbd2cSJim Jagielski             }
312*b1cdbd2cSJim Jagielski         }
313*b1cdbd2cSJim Jagielski         else{
314*b1cdbd2cSJim Jagielski             _oUnoObjectDefinition.setVariableName(_sVariableName);
315*b1cdbd2cSJim Jagielski         }
316*b1cdbd2cSJim Jagielski         return sLocStatement;
317*b1cdbd2cSJim Jagielski     }
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski 
addXPropertySetRelatedExceptions()320*b1cdbd2cSJim Jagielski     private void addXPropertySetRelatedExceptions(){
321*b1cdbd2cSJim Jagielski         if (!bXPropertySetExceptionsAreAdded){
322*b1cdbd2cSJim Jagielski             sExceptions.add("com.sun.star.beans.UnknownPropertyException");
323*b1cdbd2cSJim Jagielski             sExceptions.add("com.sun.star.lang.WrappedTargetException");
324*b1cdbd2cSJim Jagielski             sExceptions.add("com.sun.star.lang.IllegalArgumentException");
325*b1cdbd2cSJim Jagielski             bXPropertySetExceptionsAreAdded = true;
326*b1cdbd2cSJim Jagielski             baddExceptionHandling = true;
327*b1cdbd2cSJim Jagielski         }
328*b1cdbd2cSJim Jagielski     }
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 
addExceptions(XIdlMethod _xIdlMethod)331*b1cdbd2cSJim Jagielski     private void addExceptions(XIdlMethod _xIdlMethod){
332*b1cdbd2cSJim Jagielski         XIdlClass[] xIdlClasses = _xIdlMethod.getExceptionTypes();
333*b1cdbd2cSJim Jagielski         for (int i = 0; i > xIdlClasses.length; i++){
334*b1cdbd2cSJim Jagielski             sExceptions.add(xIdlClasses[0].getName());
335*b1cdbd2cSJim Jagielski             baddExceptionHandling = true;
336*b1cdbd2cSJim Jagielski         }
337*b1cdbd2cSJim Jagielski     }
338*b1cdbd2cSJim Jagielski 
getRootDescription(XUnoNode _oUnoNode)339*b1cdbd2cSJim Jagielski     private String getRootDescription(XUnoNode _oUnoNode){
340*b1cdbd2cSJim Jagielski         return "_o" + _oUnoNode.toString();
341*b1cdbd2cSJim Jagielski     }
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski 
getHeaderSourceCode()344*b1cdbd2cSJim Jagielski     private String getHeaderSourceCode(){
345*b1cdbd2cSJim Jagielski         Enumeration aEnumeration = aVariables.elements();
346*b1cdbd2cSJim Jagielski         while(aEnumeration.hasMoreElements()){
347*b1cdbd2cSJim Jagielski             UnoObjectDefinition oUnoObjectDefinition = (UnoObjectDefinition) aEnumeration.nextElement();
348*b1cdbd2cSJim Jagielski             String sCurHeaderStatement = m_xLanguageSourceCodeGenerator.getHeaderSourceCode(oUnoObjectDefinition.getUnoObject(), oUnoObjectDefinition.getTypeName(), oUnoObjectDefinition.getTypeClass());
349*b1cdbd2cSJim Jagielski             sHeaderStatements.add(sCurHeaderStatement);
350*b1cdbd2cSJim Jagielski         }
351*b1cdbd2cSJim Jagielski         String sHeaderSourcecode = "";
352*b1cdbd2cSJim Jagielski         String[] sHeaderStatementArray = new String[sHeaderStatements.size()];
353*b1cdbd2cSJim Jagielski         sHeaderStatements.toArray(sHeaderStatementArray);
354*b1cdbd2cSJim Jagielski         java.util.Arrays.sort(sHeaderStatementArray);
355*b1cdbd2cSJim Jagielski         for (int i = 0; i < sHeaderStatementArray.length; i++){
356*b1cdbd2cSJim Jagielski             sHeaderSourcecode += sHeaderStatementArray[i];
357*b1cdbd2cSJim Jagielski         }
358*b1cdbd2cSJim Jagielski         sHeaderSourcecode += m_xLanguageSourceCodeGenerator.getFinalHeaderStatements();
359*b1cdbd2cSJim Jagielski         return sHeaderSourcecode +"\n" + m_xLanguageSourceCodeGenerator.getCommentSign() + "...\n";
360*b1cdbd2cSJim Jagielski     }
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski 
363*b1cdbd2cSJim Jagielski     private class HeaderStatements extends Vector{
364*b1cdbd2cSJim Jagielski 
contains(Object _oElement)365*b1cdbd2cSJim Jagielski         public boolean contains(Object _oElement){
366*b1cdbd2cSJim Jagielski            String sCompName = (String) _oElement;
367*b1cdbd2cSJim Jagielski            for (int i = 0; i < this.size(); i++){
368*b1cdbd2cSJim Jagielski                String sElement = (String) this.get(i);
369*b1cdbd2cSJim Jagielski                if (sElement.equals(sCompName)){
370*b1cdbd2cSJim Jagielski                    return true;
371*b1cdbd2cSJim Jagielski                }
372*b1cdbd2cSJim Jagielski            }
373*b1cdbd2cSJim Jagielski            return false;
374*b1cdbd2cSJim Jagielski        }
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski 
add(Object _oElement)377*b1cdbd2cSJim Jagielski        public boolean add(Object _oElement){
378*b1cdbd2cSJim Jagielski            if (_oElement instanceof String){
379*b1cdbd2cSJim Jagielski                 if (!contains(_oElement)){
380*b1cdbd2cSJim Jagielski                     super.add(_oElement);
381*b1cdbd2cSJim Jagielski                     return true;
382*b1cdbd2cSJim Jagielski                 }
383*b1cdbd2cSJim Jagielski            }
384*b1cdbd2cSJim Jagielski            return false;
385*b1cdbd2cSJim Jagielski        }
386*b1cdbd2cSJim Jagielski     }
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski 
isVariableDeclared(UnoObjectDefinition _oUnoObjectDefinition, String _sDefaultStemName)389*b1cdbd2cSJim Jagielski     private boolean isVariableDeclared(UnoObjectDefinition _oUnoObjectDefinition, String _sDefaultStemName){
390*b1cdbd2cSJim Jagielski         boolean bisDeclared = false;
391*b1cdbd2cSJim Jagielski         if (!_sDefaultStemName.equals("")){
392*b1cdbd2cSJim Jagielski             _oUnoObjectDefinition.setCentralVariableStemName(_sDefaultStemName);
393*b1cdbd2cSJim Jagielski         }
394*b1cdbd2cSJim Jagielski         String sVariableStemName = _oUnoObjectDefinition.getVariableStemName();
395*b1cdbd2cSJim Jagielski         bisDeclared = aVariables.containsKey(sVariableStemName);
396*b1cdbd2cSJim Jagielski         if (bisDeclared){
397*b1cdbd2cSJim Jagielski             Object oUnoObject = _oUnoObjectDefinition.getUnoObject();
398*b1cdbd2cSJim Jagielski             if (m_oIntrospector.isObjectPrimitive(oUnoObject)){
399*b1cdbd2cSJim Jagielski                 bisDeclared = false;
400*b1cdbd2cSJim Jagielski             }
401*b1cdbd2cSJim Jagielski             else if (m_oIntrospector.isObjectSequence(oUnoObject)){
402*b1cdbd2cSJim Jagielski                 bisDeclared = false;
403*b1cdbd2cSJim Jagielski             }
404*b1cdbd2cSJim Jagielski             else{
405*b1cdbd2cSJim Jagielski                 String sCompVariableName = sVariableStemName;
406*b1cdbd2cSJim Jagielski                 String sUnoObjectIdentity = oUnoObject.toString();
407*b1cdbd2cSJim Jagielski                 boolean bleaveloop = false;
408*b1cdbd2cSJim Jagielski                 int a = 2;
409*b1cdbd2cSJim Jagielski                 while (!bleaveloop){
410*b1cdbd2cSJim Jagielski                     if (aVariables.containsKey(sCompVariableName)){
411*b1cdbd2cSJim Jagielski                         Object oUnoCompObject = ((UnoObjectDefinition) aVariables.get(sCompVariableName)).getUnoObject();
412*b1cdbd2cSJim Jagielski                         String sUnoCompObjectIdentity = oUnoCompObject.toString();
413*b1cdbd2cSJim Jagielski                         bleaveloop = sUnoCompObjectIdentity.equals(sUnoObjectIdentity);
414*b1cdbd2cSJim Jagielski                         bisDeclared = bleaveloop;
415*b1cdbd2cSJim Jagielski                         if (!bleaveloop){
416*b1cdbd2cSJim Jagielski                             sCompVariableName = sVariableStemName + SSUFFIXSEPARATOR + a++;
417*b1cdbd2cSJim Jagielski                         }
418*b1cdbd2cSJim Jagielski                     }
419*b1cdbd2cSJim Jagielski                     else{
420*b1cdbd2cSJim Jagielski                         bleaveloop = true;
421*b1cdbd2cSJim Jagielski                         bisDeclared = false;
422*b1cdbd2cSJim Jagielski                     }
423*b1cdbd2cSJim Jagielski                 }
424*b1cdbd2cSJim Jagielski             }
425*b1cdbd2cSJim Jagielski         }
426*b1cdbd2cSJim Jagielski         return bisDeclared;
427*b1cdbd2cSJim Jagielski     }
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski 
addUniqueVariableName(String _sStemVariableName, UnoObjectDefinition _oUnoObjectDefinition)430*b1cdbd2cSJim Jagielski     private String addUniqueVariableName(String _sStemVariableName, UnoObjectDefinition _oUnoObjectDefinition){
431*b1cdbd2cSJim Jagielski         boolean bElementexists = true;
432*b1cdbd2cSJim Jagielski         int a = 2;
433*b1cdbd2cSJim Jagielski         String sCompName = _sStemVariableName;
434*b1cdbd2cSJim Jagielski         while (bElementexists){
435*b1cdbd2cSJim Jagielski             if (! aVariables.containsKey(sCompName)){
436*b1cdbd2cSJim Jagielski                 aVariables.put(sCompName, _oUnoObjectDefinition);
437*b1cdbd2cSJim Jagielski                 break;
438*b1cdbd2cSJim Jagielski             }
439*b1cdbd2cSJim Jagielski             sCompName = _sStemVariableName + SSUFFIXSEPARATOR + a++;
440*b1cdbd2cSJim Jagielski         }
441*b1cdbd2cSJim Jagielski         return sCompName;
442*b1cdbd2cSJim Jagielski     }
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski 
getTypeString(String _sTypeName, TypeClass _aTypeClass, boolean _bAsHeaderSourceCode)446*b1cdbd2cSJim Jagielski     private String getTypeString(String _sTypeName, TypeClass _aTypeClass, boolean _bAsHeaderSourceCode){
447*b1cdbd2cSJim Jagielski         String sTypeString = "";
448*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
449*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
450*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getbooleanTypeDescription();
451*b1cdbd2cSJim Jagielski                 break;
452*b1cdbd2cSJim Jagielski             case TypeClass.BYTE_value:
453*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getbyteTypeDescription();
454*b1cdbd2cSJim Jagielski                 break;
455*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
456*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getcharTypeDescription();
457*b1cdbd2cSJim Jagielski                 break;
458*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
459*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getdoubleTypeDescription();
460*b1cdbd2cSJim Jagielski                 break;
461*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
462*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getfloatTypeDescription();
463*b1cdbd2cSJim Jagielski                 break;
464*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
465*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.gethyperTypeDescription();
466*b1cdbd2cSJim Jagielski                 break;
467*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
468*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getlongTypeDescription();
469*b1cdbd2cSJim Jagielski                 break;
470*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
471*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getshortTypeDescription();
472*b1cdbd2cSJim Jagielski                 break;
473*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
474*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getstringTypeDescription(_bAsHeaderSourceCode);
475*b1cdbd2cSJim Jagielski                 break;
476*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
477*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getunsignedhyperTypeDescription();
478*b1cdbd2cSJim Jagielski                 break;
479*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_LONG_value:
480*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getunsignedlongTypeDescription();
481*b1cdbd2cSJim Jagielski                 break;
482*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
483*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getdoubleTypeDescription();
484*b1cdbd2cSJim Jagielski                 break;
485*b1cdbd2cSJim Jagielski             case TypeClass.SEQUENCE_value:
486*b1cdbd2cSJim Jagielski                 //TODO consider mulitdimensional Arrays
487*b1cdbd2cSJim Jagielski                 XTypeDescription xTypeDescription = Introspector.getIntrospector().getReferencedType(_sTypeName);
488*b1cdbd2cSJim Jagielski                 if (xTypeDescription != null){
489*b1cdbd2cSJim Jagielski                     sTypeString = getTypeString(xTypeDescription.getName(), xTypeDescription.getTypeClass(), _bAsHeaderSourceCode);
490*b1cdbd2cSJim Jagielski                 }
491*b1cdbd2cSJim Jagielski                 break;
492*b1cdbd2cSJim Jagielski             case TypeClass.ANY_value:
493*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getanyTypeDescription(_bAsHeaderSourceCode);
494*b1cdbd2cSJim Jagielski                 break;
495*b1cdbd2cSJim Jagielski             case TypeClass.TYPE_value:
496*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getObjectTypeDescription("com.sun.star.uno.Type", _bAsHeaderSourceCode);
497*b1cdbd2cSJim Jagielski                 break;
498*b1cdbd2cSJim Jagielski             case TypeClass.ENUM_value:
499*b1cdbd2cSJim Jagielski             case TypeClass.STRUCT_value:
500*b1cdbd2cSJim Jagielski             case TypeClass.INTERFACE_ATTRIBUTE_value:
501*b1cdbd2cSJim Jagielski             case TypeClass.INTERFACE_METHOD_value:
502*b1cdbd2cSJim Jagielski             case TypeClass.INTERFACE_value:
503*b1cdbd2cSJim Jagielski             case TypeClass.PROPERTY_value:
504*b1cdbd2cSJim Jagielski                 sTypeString = m_xLanguageSourceCodeGenerator.getObjectTypeDescription(_sTypeName, _bAsHeaderSourceCode);
505*b1cdbd2cSJim Jagielski                 break;
506*b1cdbd2cSJim Jagielski             default:
507*b1cdbd2cSJim Jagielski         }
508*b1cdbd2cSJim Jagielski         return sTypeString;
509*b1cdbd2cSJim Jagielski     }
510*b1cdbd2cSJim Jagielski 
511*b1cdbd2cSJim Jagielski 
getVariableDeclaration(UnoObjectDefinition _oUnoObjectDefinition, boolean _bInitialize, String _sVariableDefaultName)512*b1cdbd2cSJim Jagielski     private String getVariableDeclaration(UnoObjectDefinition _oUnoObjectDefinition, boolean _bInitialize, String _sVariableDefaultName){
513*b1cdbd2cSJim Jagielski         TypeClass aTypeClass = _oUnoObjectDefinition.getTypeClass();
514*b1cdbd2cSJim Jagielski         TypeClass aLocTypeClass = aTypeClass;
515*b1cdbd2cSJim Jagielski         boolean bIsArray = false;
516*b1cdbd2cSJim Jagielski         if (_oUnoObjectDefinition.getUnoObject() != null){
517*b1cdbd2cSJim Jagielski             bIsArray = m_oIntrospector.isObjectSequence(_oUnoObjectDefinition.getUnoObject());
518*b1cdbd2cSJim Jagielski         }
519*b1cdbd2cSJim Jagielski         else{
520*b1cdbd2cSJim Jagielski             bIsArray = _oUnoObjectDefinition.getTypeClass().getValue() == TypeClass.SEQUENCE_value;
521*b1cdbd2cSJim Jagielski         }
522*b1cdbd2cSJim Jagielski         String sVariableName = _oUnoObjectDefinition.getVariableName(_sVariableDefaultName);
523*b1cdbd2cSJim Jagielski         String sTypeName = _oUnoObjectDefinition.getTypeName();
524*b1cdbd2cSJim Jagielski         String sTypeString = getTypeString(sTypeName, aLocTypeClass, false);
525*b1cdbd2cSJim Jagielski         if (bIsArray){
526*b1cdbd2cSJim Jagielski             XTypeDescription xTypeDescription = Introspector.getIntrospector().getReferencedType(sTypeName);
527*b1cdbd2cSJim Jagielski             if (xTypeDescription != null){
528*b1cdbd2cSJim Jagielski                 aLocTypeClass = xTypeDescription.getTypeClass();
529*b1cdbd2cSJim Jagielski             }
530*b1cdbd2cSJim Jagielski         }
531*b1cdbd2cSJim Jagielski         String sVariableDeclaration = m_xLanguageSourceCodeGenerator.getVariableDeclaration(sTypeString, sVariableName, bIsArray, aLocTypeClass, _bInitialize);
532*b1cdbd2cSJim Jagielski         addUniqueVariableName(sVariableName, _oUnoObjectDefinition);
533*b1cdbd2cSJim Jagielski         return sVariableDeclaration;
534*b1cdbd2cSJim Jagielski     }
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski 
getVariableInitialization(UnoObjectDefinition _oUnoObjectDefinition, boolean _bInitialize)537*b1cdbd2cSJim Jagielski     public String getVariableInitialization(UnoObjectDefinition _oUnoObjectDefinition, boolean _bInitialize){
538*b1cdbd2cSJim Jagielski         String sObjectVariableDeclaration = "";
539*b1cdbd2cSJim Jagielski         String sVariableName = _oUnoObjectDefinition.getVariableName();
540*b1cdbd2cSJim Jagielski         if (isVariableDeclared(_oUnoObjectDefinition, "")){
541*b1cdbd2cSJim Jagielski             sObjectVariableDeclaration = sVariableName;
542*b1cdbd2cSJim Jagielski         }
543*b1cdbd2cSJim Jagielski         else{
544*b1cdbd2cSJim Jagielski             sObjectVariableDeclaration =  getVariableDeclaration(_oUnoObjectDefinition, _bInitialize, "");
545*b1cdbd2cSJim Jagielski         }
546*b1cdbd2cSJim Jagielski         return sObjectVariableDeclaration;
547*b1cdbd2cSJim Jagielski     }
548*b1cdbd2cSJim Jagielski 
549*b1cdbd2cSJim Jagielski 
550*b1cdbd2cSJim Jagielski 
getVariableNameforUnoObject(String _sShortClassName)551*b1cdbd2cSJim Jagielski     public String getVariableNameforUnoObject(String _sShortClassName){
552*b1cdbd2cSJim Jagielski         if (_sShortClassName.startsWith("X")){
553*b1cdbd2cSJim Jagielski             return  "x" + _sShortClassName.substring(1);
554*b1cdbd2cSJim Jagielski         }
555*b1cdbd2cSJim Jagielski         else{
556*b1cdbd2cSJim Jagielski             return _sShortClassName;
557*b1cdbd2cSJim Jagielski         }
558*b1cdbd2cSJim Jagielski     }
559*b1cdbd2cSJim Jagielski 
560*b1cdbd2cSJim Jagielski 
561*b1cdbd2cSJim Jagielski class UnoObjectDefinition{
562*b1cdbd2cSJim Jagielski         Object m_oUnoObject = null;
563*b1cdbd2cSJim Jagielski         Type aType = null;
564*b1cdbd2cSJim Jagielski         String sVariableStemName = "";
565*b1cdbd2cSJim Jagielski         String m_sCentralVariableStemName = "";
566*b1cdbd2cSJim Jagielski         String sVariableName = "";
567*b1cdbd2cSJim Jagielski         String m_sTypeName = "";
568*b1cdbd2cSJim Jagielski         TypeClass m_aTypeClass = null;
569*b1cdbd2cSJim Jagielski         Object[] m_oParameterObjects = null;
570*b1cdbd2cSJim Jagielski 
571*b1cdbd2cSJim Jagielski 
UnoObjectDefinition(Any _oUnoObject)572*b1cdbd2cSJim Jagielski         public UnoObjectDefinition(Any _oUnoObject){
573*b1cdbd2cSJim Jagielski             m_sTypeName = _oUnoObject.getType().getTypeName();
574*b1cdbd2cSJim Jagielski             m_aTypeClass = _oUnoObject.getType().getTypeClass();
575*b1cdbd2cSJim Jagielski             m_oUnoObject = _oUnoObject;
576*b1cdbd2cSJim Jagielski             m_sCentralVariableStemName = getCentralVariableStemName(m_aTypeClass);
577*b1cdbd2cSJim Jagielski         }
578*b1cdbd2cSJim Jagielski 
579*b1cdbd2cSJim Jagielski 
UnoObjectDefinition(Object _oUnoObject, String _sTypeName, TypeClass _aTypeClass)580*b1cdbd2cSJim Jagielski         public UnoObjectDefinition(Object _oUnoObject, String _sTypeName, TypeClass _aTypeClass){
581*b1cdbd2cSJim Jagielski             m_oUnoObject = _oUnoObject;
582*b1cdbd2cSJim Jagielski             m_sTypeName = _sTypeName;
583*b1cdbd2cSJim Jagielski             m_aTypeClass = _aTypeClass;
584*b1cdbd2cSJim Jagielski             m_sCentralVariableStemName = getCentralVariableStemName(m_aTypeClass);
585*b1cdbd2cSJim Jagielski         }
586*b1cdbd2cSJim Jagielski 
587*b1cdbd2cSJim Jagielski 
UnoObjectDefinition(Object _oUnoObject, String _sTypeName)588*b1cdbd2cSJim Jagielski         public UnoObjectDefinition(Object _oUnoObject, String _sTypeName){
589*b1cdbd2cSJim Jagielski             m_oUnoObject = _oUnoObject;
590*b1cdbd2cSJim Jagielski             m_sTypeName = _sTypeName;
591*b1cdbd2cSJim Jagielski             m_aTypeClass = AnyConverter.getType(_oUnoObject).getTypeClass();
592*b1cdbd2cSJim Jagielski             m_sCentralVariableStemName = getCentralVariableStemName(m_aTypeClass);
593*b1cdbd2cSJim Jagielski         }
594*b1cdbd2cSJim Jagielski 
595*b1cdbd2cSJim Jagielski 
getCentralVariableStemName(TypeClass _aTypeClass)596*b1cdbd2cSJim Jagielski         private String getCentralVariableStemName(TypeClass _aTypeClass){
597*b1cdbd2cSJim Jagielski             String sCentralVariableStemName = "";
598*b1cdbd2cSJim Jagielski             int nTypeClass = _aTypeClass.getValue();
599*b1cdbd2cSJim Jagielski             switch(nTypeClass){
600*b1cdbd2cSJim Jagielski                 case TypeClass.SEQUENCE_value:
601*b1cdbd2cSJim Jagielski                     //TODO consider mulitdimensional Arrays
602*b1cdbd2cSJim Jagielski                     XTypeDescription xTypeDescription = Introspector.getIntrospector().getReferencedType(getTypeName());
603*b1cdbd2cSJim Jagielski                     if (xTypeDescription != null){
604*b1cdbd2cSJim Jagielski                         sCentralVariableStemName = getCentralVariableStemName(xTypeDescription.getTypeClass());
605*b1cdbd2cSJim Jagielski                     }
606*b1cdbd2cSJim Jagielski                     break;
607*b1cdbd2cSJim Jagielski                 case TypeClass.TYPE_value:
608*b1cdbd2cSJim Jagielski                     sCentralVariableStemName = SVARIABLENAME;
609*b1cdbd2cSJim Jagielski                     break;
610*b1cdbd2cSJim Jagielski                 case TypeClass.STRUCT_value:
611*b1cdbd2cSJim Jagielski                     sCentralVariableStemName = Introspector.getShortClassName(getTypeName());
612*b1cdbd2cSJim Jagielski                     break;
613*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_ATTRIBUTE_value:
614*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_METHOD_value:
615*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_value:
616*b1cdbd2cSJim Jagielski             case TypeClass.PROPERTY_value:
617*b1cdbd2cSJim Jagielski                     String sShortClassName = m_oIntrospector.getShortClassName(getTypeName());
618*b1cdbd2cSJim Jagielski                     sCentralVariableStemName = getVariableNameforUnoObject(sShortClassName);
619*b1cdbd2cSJim Jagielski                 default:
620*b1cdbd2cSJim Jagielski                     sCentralVariableStemName = SVARIABLENAME;
621*b1cdbd2cSJim Jagielski             }
622*b1cdbd2cSJim Jagielski             return sCentralVariableStemName;
623*b1cdbd2cSJim Jagielski         }
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski         /** may return null
626*b1cdbd2cSJim Jagielski          */
getUnoObject()627*b1cdbd2cSJim Jagielski         public Object getUnoObject(){
628*b1cdbd2cSJim Jagielski             return m_oUnoObject;
629*b1cdbd2cSJim Jagielski         }
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski 
setTypeClass(TypeClass _aTypeClass)632*b1cdbd2cSJim Jagielski         public void setTypeClass(TypeClass _aTypeClass){
633*b1cdbd2cSJim Jagielski             sVariableStemName = "";
634*b1cdbd2cSJim Jagielski             m_aTypeClass = _aTypeClass;
635*b1cdbd2cSJim Jagielski         }
636*b1cdbd2cSJim Jagielski 
637*b1cdbd2cSJim Jagielski 
getTypeClass()638*b1cdbd2cSJim Jagielski         public TypeClass getTypeClass(){
639*b1cdbd2cSJim Jagielski             return m_aTypeClass;
640*b1cdbd2cSJim Jagielski         }
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski 
setTypeName(String _sTypeName)643*b1cdbd2cSJim Jagielski         public void setTypeName(String _sTypeName){
644*b1cdbd2cSJim Jagielski             sVariableStemName = "";
645*b1cdbd2cSJim Jagielski             m_sTypeName = _sTypeName;
646*b1cdbd2cSJim Jagielski         }
647*b1cdbd2cSJim Jagielski 
648*b1cdbd2cSJim Jagielski 
getTypeName()649*b1cdbd2cSJim Jagielski         public String getTypeName(){
650*b1cdbd2cSJim Jagielski             return m_sTypeName;
651*b1cdbd2cSJim Jagielski         }
652*b1cdbd2cSJim Jagielski 
653*b1cdbd2cSJim Jagielski 
setCentralVariableStemName(String _sCentralVariableStemName)654*b1cdbd2cSJim Jagielski         public void setCentralVariableStemName(String _sCentralVariableStemName){
655*b1cdbd2cSJim Jagielski             m_sCentralVariableStemName = _sCentralVariableStemName;
656*b1cdbd2cSJim Jagielski         }
657*b1cdbd2cSJim Jagielski 
658*b1cdbd2cSJim Jagielski 
getVariableStemName()659*b1cdbd2cSJim Jagielski         public String getVariableStemName(){
660*b1cdbd2cSJim Jagielski             if (sVariableStemName.equals("")){
661*b1cdbd2cSJim Jagielski                 sVariableStemName = getVariableStemName(m_aTypeClass);
662*b1cdbd2cSJim Jagielski             }
663*b1cdbd2cSJim Jagielski             return sVariableStemName;
664*b1cdbd2cSJim Jagielski         }
665*b1cdbd2cSJim Jagielski 
666*b1cdbd2cSJim Jagielski 
addParameterObjects(Object[] _oParameterObjects)667*b1cdbd2cSJim Jagielski         public void addParameterObjects(Object[] _oParameterObjects){
668*b1cdbd2cSJim Jagielski             m_oParameterObjects = _oParameterObjects;
669*b1cdbd2cSJim Jagielski         }
670*b1cdbd2cSJim Jagielski 
671*b1cdbd2cSJim Jagielski 
getParameterObjects()672*b1cdbd2cSJim Jagielski         public Object[] getParameterObjects(){
673*b1cdbd2cSJim Jagielski             return m_oParameterObjects;
674*b1cdbd2cSJim Jagielski         }
675*b1cdbd2cSJim Jagielski 
676*b1cdbd2cSJim Jagielski 
hasParameterObjects()677*b1cdbd2cSJim Jagielski         public boolean hasParameterObjects(){
678*b1cdbd2cSJim Jagielski             boolean breturn = false;
679*b1cdbd2cSJim Jagielski             if (m_oParameterObjects != null){
680*b1cdbd2cSJim Jagielski                 breturn = m_oParameterObjects.length > 0;
681*b1cdbd2cSJim Jagielski             }
682*b1cdbd2cSJim Jagielski             return breturn;
683*b1cdbd2cSJim Jagielski         }
684*b1cdbd2cSJim Jagielski 
685*b1cdbd2cSJim Jagielski 
getVariableStemName(TypeClass _aTypeClass)686*b1cdbd2cSJim Jagielski         public String getVariableStemName(TypeClass _aTypeClass){
687*b1cdbd2cSJim Jagielski             int nTypeClass = _aTypeClass.getValue();
688*b1cdbd2cSJim Jagielski             switch(nTypeClass){
689*b1cdbd2cSJim Jagielski                 case TypeClass.BOOLEAN_value:
690*b1cdbd2cSJim Jagielski                     sVariableStemName = "b" + m_sCentralVariableStemName;
691*b1cdbd2cSJim Jagielski                     break;
692*b1cdbd2cSJim Jagielski                 case TypeClass.DOUBLE_value:
693*b1cdbd2cSJim Jagielski                 case TypeClass.FLOAT_value:
694*b1cdbd2cSJim Jagielski                     sVariableStemName = "f" + m_sCentralVariableStemName;
695*b1cdbd2cSJim Jagielski                     break;
696*b1cdbd2cSJim Jagielski                 case TypeClass.BYTE_value:
697*b1cdbd2cSJim Jagielski                 case TypeClass.HYPER_value:
698*b1cdbd2cSJim Jagielski                 case TypeClass.LONG_value:
699*b1cdbd2cSJim Jagielski                 case TypeClass.UNSIGNED_HYPER_value:
700*b1cdbd2cSJim Jagielski                 case TypeClass.UNSIGNED_LONG_value:
701*b1cdbd2cSJim Jagielski                 case TypeClass.UNSIGNED_SHORT_value:
702*b1cdbd2cSJim Jagielski                 case TypeClass.SHORT_value:
703*b1cdbd2cSJim Jagielski                     sVariableStemName = "n" + m_sCentralVariableStemName;
704*b1cdbd2cSJim Jagielski                     break;
705*b1cdbd2cSJim Jagielski                 case TypeClass.CHAR_value:
706*b1cdbd2cSJim Jagielski                 case TypeClass.STRING_value:
707*b1cdbd2cSJim Jagielski                     sVariableStemName = "s" + m_sCentralVariableStemName;
708*b1cdbd2cSJim Jagielski                     break;
709*b1cdbd2cSJim Jagielski                 case TypeClass.SEQUENCE_value:
710*b1cdbd2cSJim Jagielski                     //TODO consider mulitdimensional Arrays
711*b1cdbd2cSJim Jagielski                     XTypeDescription xTypeDescription = Introspector.getIntrospector().getReferencedType(getTypeName());
712*b1cdbd2cSJim Jagielski                     if (xTypeDescription != null){
713*b1cdbd2cSJim Jagielski                         sVariableStemName = getVariableStemName(xTypeDescription.getTypeClass());
714*b1cdbd2cSJim Jagielski                     }
715*b1cdbd2cSJim Jagielski                     break;
716*b1cdbd2cSJim Jagielski                 case TypeClass.TYPE_value:
717*b1cdbd2cSJim Jagielski                     sVariableStemName = "a" + m_sCentralVariableStemName;
718*b1cdbd2cSJim Jagielski                     break;
719*b1cdbd2cSJim Jagielski                 case TypeClass.ANY_value:
720*b1cdbd2cSJim Jagielski                     sVariableStemName = "o" + m_sCentralVariableStemName;
721*b1cdbd2cSJim Jagielski                     break;
722*b1cdbd2cSJim Jagielski                 case TypeClass.STRUCT_value:
723*b1cdbd2cSJim Jagielski                 case TypeClass.ENUM_value:
724*b1cdbd2cSJim Jagielski                     sVariableStemName = "a" + m_sCentralVariableStemName;
725*b1cdbd2cSJim Jagielski                     break;
726*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_ATTRIBUTE_value:
727*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_METHOD_value:
728*b1cdbd2cSJim Jagielski                 case TypeClass.INTERFACE_value:
729*b1cdbd2cSJim Jagielski                 case TypeClass.PROPERTY_value:
730*b1cdbd2cSJim Jagielski                     String sShortClassName = m_oIntrospector.getShortClassName(getTypeName());
731*b1cdbd2cSJim Jagielski                     sVariableStemName = getVariableNameforUnoObject(sShortClassName);
732*b1cdbd2cSJim Jagielski                 default:
733*b1cdbd2cSJim Jagielski             }
734*b1cdbd2cSJim Jagielski             return sVariableStemName;
735*b1cdbd2cSJim Jagielski         }
736*b1cdbd2cSJim Jagielski 
737*b1cdbd2cSJim Jagielski 
setVariableName(String _sVariableName)738*b1cdbd2cSJim Jagielski         private void setVariableName(String _sVariableName){
739*b1cdbd2cSJim Jagielski             sVariableName = _sVariableName;
740*b1cdbd2cSJim Jagielski         }
741*b1cdbd2cSJim Jagielski 
742*b1cdbd2cSJim Jagielski 
getVariableName(String _sCentralVariableStemName)743*b1cdbd2cSJim Jagielski         private String getVariableName(String _sCentralVariableStemName){
744*b1cdbd2cSJim Jagielski             if (!_sCentralVariableStemName.equals("")){
745*b1cdbd2cSJim Jagielski                 this.m_sCentralVariableStemName = _sCentralVariableStemName;
746*b1cdbd2cSJim Jagielski             }
747*b1cdbd2cSJim Jagielski             return getVariableName();
748*b1cdbd2cSJim Jagielski         }
749*b1cdbd2cSJim Jagielski 
750*b1cdbd2cSJim Jagielski 
getVariableName()751*b1cdbd2cSJim Jagielski         private String getVariableName() throws NullPointerException{
752*b1cdbd2cSJim Jagielski             if (sVariableName.equals("")){
753*b1cdbd2cSJim Jagielski                 int a = 2;
754*b1cdbd2cSJim Jagielski                 sVariableName = getVariableStemName();
755*b1cdbd2cSJim Jagielski                 boolean bleaveloop = false;
756*b1cdbd2cSJim Jagielski                 while (!bleaveloop){
757*b1cdbd2cSJim Jagielski                     if (aVariables.containsKey(sVariableName)){
758*b1cdbd2cSJim Jagielski                         String sUnoObjectIdentity = ((UnoObjectDefinition) aVariables.get(sVariableName)).getUnoObject().toString();
759*b1cdbd2cSJim Jagielski                         if (m_oUnoObject != null){
760*b1cdbd2cSJim Jagielski                             if ((sUnoObjectIdentity.equals(m_oUnoObject.toString()) && (!m_oIntrospector.isPrimitive(this.getTypeClass())) &&
761*b1cdbd2cSJim Jagielski                                 (! m_oIntrospector.isObjectSequence(m_oUnoObject)))){
762*b1cdbd2cSJim Jagielski                                 bleaveloop = true;
763*b1cdbd2cSJim Jagielski                             }
764*b1cdbd2cSJim Jagielski                             else{
765*b1cdbd2cSJim Jagielski                                 sVariableName = getVariableStemName() + SSUFFIXSEPARATOR + a++;
766*b1cdbd2cSJim Jagielski                             }
767*b1cdbd2cSJim Jagielski                         }
768*b1cdbd2cSJim Jagielski                         else{
769*b1cdbd2cSJim Jagielski                             bleaveloop = true;
770*b1cdbd2cSJim Jagielski                         }
771*b1cdbd2cSJim Jagielski                     }
772*b1cdbd2cSJim Jagielski                     else{
773*b1cdbd2cSJim Jagielski                         bleaveloop = true;
774*b1cdbd2cSJim Jagielski         //                throw new NullPointerException("SourceCode Variable " + _sStemVariableName + " not defined");
775*b1cdbd2cSJim Jagielski                     }
776*b1cdbd2cSJim Jagielski                 }
777*b1cdbd2cSJim Jagielski             }
778*b1cdbd2cSJim Jagielski             return sVariableName;
779*b1cdbd2cSJim Jagielski         }
780*b1cdbd2cSJim Jagielski     }
781*b1cdbd2cSJim Jagielski 
782*b1cdbd2cSJim Jagielski 
getStringValueOfObject(Object _oUnoObject, TypeClass _aTypeClass)783*b1cdbd2cSJim Jagielski     public String getStringValueOfObject(Object _oUnoObject, TypeClass _aTypeClass){
784*b1cdbd2cSJim Jagielski         String sReturn = "";
785*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
786*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
787*b1cdbd2cSJim Jagielski                 boolean bbooleanValue = ((Boolean) _oUnoObject).booleanValue();
788*b1cdbd2cSJim Jagielski                 sReturn += Boolean.toString(bbooleanValue);
789*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
790*b1cdbd2cSJim Jagielski                 break;
791*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
792*b1cdbd2cSJim Jagielski                 double fdoubleValue = ((Double) _oUnoObject).doubleValue();
793*b1cdbd2cSJim Jagielski                 sReturn += Double.toString(fdoubleValue);
794*b1cdbd2cSJim Jagielski                 break;
795*b1cdbd2cSJim Jagielski             case TypeClass.ENUM_value:
796*b1cdbd2cSJim Jagielski                 break;
797*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
798*b1cdbd2cSJim Jagielski                 float floatValue = ((Float) _oUnoObject).floatValue();
799*b1cdbd2cSJim Jagielski                 sReturn += Float.toString(floatValue);
800*b1cdbd2cSJim Jagielski                 break;
801*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
802*b1cdbd2cSJim Jagielski                 long nlongValue = ((Long) _oUnoObject).longValue();
803*b1cdbd2cSJim Jagielski                 sReturn += Long.toString(nlongValue);
804*b1cdbd2cSJim Jagielski                 break;
805*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
806*b1cdbd2cSJim Jagielski                 int  nintValue = ((Integer) _oUnoObject).intValue();
807*b1cdbd2cSJim Jagielski                 sReturn += Integer.toString(nintValue);
808*b1cdbd2cSJim Jagielski                 break;
809*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
810*b1cdbd2cSJim Jagielski                 short  nshortValue = ((Short) _oUnoObject).shortValue();
811*b1cdbd2cSJim Jagielski                 sReturn += Short.toString(nshortValue);
812*b1cdbd2cSJim Jagielski                 break;
813*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
814*b1cdbd2cSJim Jagielski                 sReturn +=  (String) _oUnoObject;
815*b1cdbd2cSJim Jagielski                 break;
816*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
817*b1cdbd2cSJim Jagielski                 nlongValue = ((Long) _oUnoObject).longValue();
818*b1cdbd2cSJim Jagielski                 sReturn += Long.toString(nlongValue);
819*b1cdbd2cSJim Jagielski                 break;
820*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_LONG_value:
821*b1cdbd2cSJim Jagielski                 nintValue = ((Integer) _oUnoObject).intValue();
822*b1cdbd2cSJim Jagielski                 sReturn += Integer.toString(nintValue);
823*b1cdbd2cSJim Jagielski                 break;
824*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
825*b1cdbd2cSJim Jagielski                 nshortValue = ((Short) _oUnoObject).shortValue();
826*b1cdbd2cSJim Jagielski                 sReturn += Short.toString(nshortValue);
827*b1cdbd2cSJim Jagielski                 break;
828*b1cdbd2cSJim Jagielski             default:
829*b1cdbd2cSJim Jagielski                 System.out.println("Type " + _aTypeClass.getValue() + " not yet defined in 'getStringValueOfObject()'");
830*b1cdbd2cSJim Jagielski         }
831*b1cdbd2cSJim Jagielski         return sReturn;
832*b1cdbd2cSJim Jagielski     }
833*b1cdbd2cSJim Jagielski 
834*b1cdbd2cSJim Jagielski 
getMethodParameterValueDescription(XUnoMethodNode _oUnoMethodNode, Object[] _oParamObjects, boolean _bIncludeParameterNames)835*b1cdbd2cSJim Jagielski     public String getMethodParameterValueDescription(XUnoMethodNode _oUnoMethodNode, Object[] _oParamObjects, boolean _bIncludeParameterNames){
836*b1cdbd2cSJim Jagielski         String sParamSourceCode = "";
837*b1cdbd2cSJim Jagielski         ParamInfo[] aParamInfos = _oUnoMethodNode.getXIdlMethod().getParameterInfos();
838*b1cdbd2cSJim Jagielski         if (_oParamObjects != null){
839*b1cdbd2cSJim Jagielski             for (int i = 0; i < _oParamObjects.length; i++){
840*b1cdbd2cSJim Jagielski                 TypeClass aTypeClass = aParamInfos[i].aType.getTypeClass();
841*b1cdbd2cSJim Jagielski                 if (_bIncludeParameterNames){
842*b1cdbd2cSJim Jagielski                     sParamSourceCode += aParamInfos[i].aName + "=";
843*b1cdbd2cSJim Jagielski                 }
844*b1cdbd2cSJim Jagielski                 String sParamDescription = getStringValueOfObject(_oParamObjects[i], aTypeClass);
845*b1cdbd2cSJim Jagielski                 sParamDescription = this.m_xLanguageSourceCodeGenerator.castLiteral(sParamDescription, aTypeClass);
846*b1cdbd2cSJim Jagielski                 sParamSourceCode += sParamDescription;
847*b1cdbd2cSJim Jagielski 
848*b1cdbd2cSJim Jagielski                 if (i < _oParamObjects.length - 1){
849*b1cdbd2cSJim Jagielski                     sParamSourceCode += ", ";
850*b1cdbd2cSJim Jagielski                 }
851*b1cdbd2cSJim Jagielski             }
852*b1cdbd2cSJim Jagielski         }
853*b1cdbd2cSJim Jagielski         return sParamSourceCode;
854*b1cdbd2cSJim Jagielski     }
855*b1cdbd2cSJim Jagielski 
856*b1cdbd2cSJim Jagielski 
857*b1cdbd2cSJim Jagielski     public class JavaCodeGenerator implements XLanguageSourceCodeGenerator{
858*b1cdbd2cSJim Jagielski         String sStatementsCode = "";
859*b1cdbd2cSJim Jagielski         boolean bAddAnyConverter = false;
860*b1cdbd2cSJim Jagielski //        boolean bAddTypeImport = false;
861*b1cdbd2cSJim Jagielski         boolean bIsPropertyUnoObjectDefined = false;
862*b1cdbd2cSJim Jagielski 
JavaCodeGenerator()863*b1cdbd2cSJim Jagielski         public JavaCodeGenerator(){
864*b1cdbd2cSJim Jagielski         }
865*b1cdbd2cSJim Jagielski 
866*b1cdbd2cSJim Jagielski 
getStatementTerminationCharacter()867*b1cdbd2cSJim Jagielski         public String getStatementTerminationCharacter(){
868*b1cdbd2cSJim Jagielski             return ";";
869*b1cdbd2cSJim Jagielski         }
870*b1cdbd2cSJim Jagielski 
871*b1cdbd2cSJim Jagielski 
getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass)872*b1cdbd2cSJim Jagielski         public String getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass){
873*b1cdbd2cSJim Jagielski             String sClassName = _sClassName;
874*b1cdbd2cSJim Jagielski             String sHeaderStatement = "";
875*b1cdbd2cSJim Jagielski             if (_oUnoObject != null){
876*b1cdbd2cSJim Jagielski                 if (!m_oIntrospector.isObjectPrimitive(_oUnoObject)){
877*b1cdbd2cSJim Jagielski                     if (m_oIntrospector.isObjectSequence(_oUnoObject)){
878*b1cdbd2cSJim Jagielski                         XTypeDescription xTypeDescription = m_oIntrospector.getReferencedType(sClassName);
879*b1cdbd2cSJim Jagielski                         if (xTypeDescription != null){
880*b1cdbd2cSJim Jagielski                             if (!m_oIntrospector.isPrimitive(xTypeDescription.getTypeClass())){
881*b1cdbd2cSJim Jagielski                                 sClassName = getTypeString(xTypeDescription.getName(), xTypeDescription.getTypeClass(), true);
882*b1cdbd2cSJim Jagielski                             }
883*b1cdbd2cSJim Jagielski                             // primitive Types are not supposed to turn up in the import section...
884*b1cdbd2cSJim Jagielski                             else{
885*b1cdbd2cSJim Jagielski                                 sClassName = "";
886*b1cdbd2cSJim Jagielski                             }
887*b1cdbd2cSJim Jagielski                         }
888*b1cdbd2cSJim Jagielski                     }
889*b1cdbd2cSJim Jagielski                     else{
890*b1cdbd2cSJim Jagielski                         sClassName = getTypeString(_sClassName, _aTypeClass, true);
891*b1cdbd2cSJim Jagielski                     }
892*b1cdbd2cSJim Jagielski                 }
893*b1cdbd2cSJim Jagielski                 else if (_aTypeClass.getValue() == TypeClass.ENUM_value){
894*b1cdbd2cSJim Jagielski                     sClassName = _sClassName;
895*b1cdbd2cSJim Jagielski                 }
896*b1cdbd2cSJim Jagielski                 else{
897*b1cdbd2cSJim Jagielski                     sClassName = "";
898*b1cdbd2cSJim Jagielski                 }
899*b1cdbd2cSJim Jagielski                 if (!sClassName.equals("")){
900*b1cdbd2cSJim Jagielski                     sHeaderStatement =  "import " + sClassName + ";\n";
901*b1cdbd2cSJim Jagielski                 }
902*b1cdbd2cSJim Jagielski             }
903*b1cdbd2cSJim Jagielski             return sHeaderStatement;
904*b1cdbd2cSJim Jagielski         }
905*b1cdbd2cSJim Jagielski 
906*b1cdbd2cSJim Jagielski 
getFinalHeaderStatements()907*b1cdbd2cSJim Jagielski         public String getFinalHeaderStatements(){
908*b1cdbd2cSJim Jagielski             return "";
909*b1cdbd2cSJim Jagielski         }
910*b1cdbd2cSJim Jagielski 
911*b1cdbd2cSJim Jagielski 
assignqueryInterfaceHeaderSourceCode()912*b1cdbd2cSJim Jagielski         public void assignqueryInterfaceHeaderSourceCode(){
913*b1cdbd2cSJim Jagielski             sHeaderStatements.add("import com.sun.star.uno.UnoRuntime;\n");
914*b1cdbd2cSJim Jagielski             sHeaderStatements.add("import com.sun.star.uno.XInterface;\n");
915*b1cdbd2cSJim Jagielski             if (bAddAnyConverter){
916*b1cdbd2cSJim Jagielski                 sHeaderStatements.add("import com.sun.star.uno.AnyConverter;\n");
917*b1cdbd2cSJim Jagielski             }
918*b1cdbd2cSJim Jagielski         }
919*b1cdbd2cSJim Jagielski 
920*b1cdbd2cSJim Jagielski 
921*b1cdbd2cSJim Jagielski 
getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName)922*b1cdbd2cSJim Jagielski     public String getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName){
923*b1cdbd2cSJim Jagielski         boolean bLocAddAnyConverter = true;
924*b1cdbd2cSJim Jagielski         String sReturn = "";
925*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
926*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
927*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toBoolean(" + _sObjectDescription + ")";
928*b1cdbd2cSJim Jagielski                 break;
929*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
930*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toChar(" + _sObjectDescription + ")";
931*b1cdbd2cSJim Jagielski                 break;
932*b1cdbd2cSJim Jagielski             case TypeClass.BYTE_value:
933*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toByte(" + _sObjectDescription + ")";
934*b1cdbd2cSJim Jagielski                 break;
935*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
936*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toDouble(" + _sObjectDescription + ")";
937*b1cdbd2cSJim Jagielski                 break;
938*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
939*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toFloat(" + _sObjectDescription + ")";
940*b1cdbd2cSJim Jagielski                 break;
941*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
942*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toUnsignedLong(" + _sObjectDescription + ")";
943*b1cdbd2cSJim Jagielski                 break;
944*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
945*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toLong(" + _sObjectDescription + ")";
946*b1cdbd2cSJim Jagielski                 break;
947*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_LONG_value:
948*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toUnsignedInt(" + _sObjectDescription + ")";
949*b1cdbd2cSJim Jagielski                 break;
950*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
951*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toInt(" + _sObjectDescription + ")";
952*b1cdbd2cSJim Jagielski                 break;
953*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
954*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toShort(" + _sObjectDescription + ")";
955*b1cdbd2cSJim Jagielski                 break;
956*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
957*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toUnsignedShort(" + _sObjectDescription + ")";
958*b1cdbd2cSJim Jagielski                 break;
959*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
960*b1cdbd2cSJim Jagielski                 sReturn = _sReturnVariableName + " = AnyConverter.toString(" + _sObjectDescription + ")";
961*b1cdbd2cSJim Jagielski                 break;
962*b1cdbd2cSJim Jagielski             default:
963*b1cdbd2cSJim Jagielski                 String sShortTypeName = Introspector.getShortClassName(_sTypeName);
964*b1cdbd2cSJim Jagielski                 if (bIsPropertyUnoObjectDefined){
965*b1cdbd2cSJim Jagielski                     sReturn = "oUnoObject = " + _sObjectDescription + ";\n\t";
966*b1cdbd2cSJim Jagielski                 }
967*b1cdbd2cSJim Jagielski                 else{
968*b1cdbd2cSJim Jagielski                     sReturn = "Object oUnoObject = " + _sObjectDescription + ";\n\t";
969*b1cdbd2cSJim Jagielski                     bIsPropertyUnoObjectDefined = true;
970*b1cdbd2cSJim Jagielski                 }
971*b1cdbd2cSJim Jagielski                 sReturn += _sReturnVariableName + " = (" + sShortTypeName + ") AnyConverter.toObject(" + sShortTypeName + ".class, oUnoObject);";
972*b1cdbd2cSJim Jagielski //                this.bAddTypeImport = true;
973*b1cdbd2cSJim Jagielski                 break;
974*b1cdbd2cSJim Jagielski         }
975*b1cdbd2cSJim Jagielski         if (!bAddAnyConverter){
976*b1cdbd2cSJim Jagielski             bAddAnyConverter = bLocAddAnyConverter;
977*b1cdbd2cSJim Jagielski         }
978*b1cdbd2cSJim Jagielski         return sReturn;
979*b1cdbd2cSJim Jagielski     }
980*b1cdbd2cSJim Jagielski 
981*b1cdbd2cSJim Jagielski 
getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember)982*b1cdbd2cSJim Jagielski         public String getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember){
983*b1cdbd2cSJim Jagielski             return  "\t" + _sReturnVariableDescription + " = " + _sObjectDescription + "." + _sMember + ";";
984*b1cdbd2cSJim Jagielski         }
985*b1cdbd2cSJim Jagielski 
getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription)986*b1cdbd2cSJim Jagielski         public String getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription){
987*b1cdbd2cSJim Jagielski             //TODO try to use + _oUnoNode.getClassName() instead of the hack
988*b1cdbd2cSJim Jagielski             String sReturn = "public void codesnippet(XInterface " +  _soReturnObjectDescription + "){";
989*b1cdbd2cSJim Jagielski             if (baddExceptionHandling){
990*b1cdbd2cSJim Jagielski                 sReturn += "\ntry{";
991*b1cdbd2cSJim Jagielski             }
992*b1cdbd2cSJim Jagielski             return sReturn;
993*b1cdbd2cSJim Jagielski         }
994*b1cdbd2cSJim Jagielski 
getMethodSeparator()995*b1cdbd2cSJim Jagielski         public String getMethodSeparator(){
996*b1cdbd2cSJim Jagielski             return ".";
997*b1cdbd2cSJim Jagielski         }
998*b1cdbd2cSJim Jagielski 
needsqueryInterface()999*b1cdbd2cSJim Jagielski         public boolean needsqueryInterface(){
1000*b1cdbd2cSJim Jagielski             return true;
1001*b1cdbd2cSJim Jagielski         }
1002*b1cdbd2cSJim Jagielski 
getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName)1003*b1cdbd2cSJim Jagielski         public String getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName){
1004*b1cdbd2cSJim Jagielski             String sShortClassName = m_oIntrospector.getShortClassName(_sClassName);
1005*b1cdbd2cSJim Jagielski             return "\t" + _sReturnVariableName + " =  (" + sShortClassName + ") UnoRuntime.queryInterface(" + sShortClassName + ".class, " + _sIncomingObjectName + ");\n";
1006*b1cdbd2cSJim Jagielski         }
1007*b1cdbd2cSJim Jagielski 
1008*b1cdbd2cSJim Jagielski 
getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName)1009*b1cdbd2cSJim Jagielski         public String getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName){
1010*b1cdbd2cSJim Jagielski             String sObjectDescription = _sIncomingObjectName + ".getPropertyValue(\"" + _sPropertyName + "\")";
1011*b1cdbd2cSJim Jagielski             String sReturn = getConvertedSourceCodeValueOfObject(_sReturnVariableName, sObjectDescription,  _aTypeClass, _sTypeName);
1012*b1cdbd2cSJim Jagielski             sReturn += ";";
1013*b1cdbd2cSJim Jagielski             sReturn = "\t" + sReturn;
1014*b1cdbd2cSJim Jagielski             return sReturn;
1015*b1cdbd2cSJim Jagielski //           return "\t" + _sReturnVariableName + " =  " + _sIncomingObjectName + ".getPropertyValue(\"" + _sPropertyName + "\");";
1016*b1cdbd2cSJim Jagielski         }
1017*b1cdbd2cSJim Jagielski 
1018*b1cdbd2cSJim Jagielski 
getObjectTypeDescription(String _sClassName, boolean _bAsHeader)1019*b1cdbd2cSJim Jagielski         public String getObjectTypeDescription(String _sClassName, boolean _bAsHeader){
1020*b1cdbd2cSJim Jagielski             String sReturn = "";
1021*b1cdbd2cSJim Jagielski             if (_bAsHeader){
1022*b1cdbd2cSJim Jagielski                 sReturn = _sClassName;
1023*b1cdbd2cSJim Jagielski             }
1024*b1cdbd2cSJim Jagielski             else{
1025*b1cdbd2cSJim Jagielski                 sReturn = m_oIntrospector.getShortClassName(_sClassName);
1026*b1cdbd2cSJim Jagielski             }
1027*b1cdbd2cSJim Jagielski             return sReturn;
1028*b1cdbd2cSJim Jagielski         }
1029*b1cdbd2cSJim Jagielski 
1030*b1cdbd2cSJim Jagielski 
getMethodTerminationSourceCode()1031*b1cdbd2cSJim Jagielski         public String getMethodTerminationSourceCode(){
1032*b1cdbd2cSJim Jagielski             String sReturn = "";
1033*b1cdbd2cSJim Jagielski             int nIndex = 1;
1034*b1cdbd2cSJim Jagielski             String sExceptionName = "e";
1035*b1cdbd2cSJim Jagielski             if (baddExceptionHandling){
1036*b1cdbd2cSJim Jagielski                 for (int i = 0; i < sExceptions.size(); i++){
1037*b1cdbd2cSJim Jagielski                     String sCurException = (String) sExceptions.get(i);
1038*b1cdbd2cSJim Jagielski                     if (sReturn.indexOf(sCurException) == -1){
1039*b1cdbd2cSJim Jagielski                         if (nIndex > 1){
1040*b1cdbd2cSJim Jagielski                             sExceptionName = "e"+ nIndex;
1041*b1cdbd2cSJim Jagielski                         }
1042*b1cdbd2cSJim Jagielski                         else{
1043*b1cdbd2cSJim Jagielski                             sReturn +="\n}";
1044*b1cdbd2cSJim Jagielski                         }
1045*b1cdbd2cSJim Jagielski                         sReturn += "catch (" + sCurException + " " + sExceptionName + "){\n";
1046*b1cdbd2cSJim Jagielski                         sReturn += "\t" + sExceptionName + ".printStackTrace(System.out);\n";
1047*b1cdbd2cSJim Jagielski                         sReturn += "\t" + getCommentSign() + "Enter your Code here...\n}";
1048*b1cdbd2cSJim Jagielski                         nIndex++;
1049*b1cdbd2cSJim Jagielski                     }
1050*b1cdbd2cSJim Jagielski                 }
1051*b1cdbd2cSJim Jagielski             }
1052*b1cdbd2cSJim Jagielski             sReturn += "\n}";
1053*b1cdbd2cSJim Jagielski             return sReturn;
1054*b1cdbd2cSJim Jagielski         }
1055*b1cdbd2cSJim Jagielski 
castLiteral(String _sExpression, TypeClass _aTypeClass)1056*b1cdbd2cSJim Jagielski         public String castLiteral(String _sExpression, TypeClass _aTypeClass){
1057*b1cdbd2cSJim Jagielski         String sReturn = "";
1058*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
1059*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
1060*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1061*b1cdbd2cSJim Jagielski                 break;
1062*b1cdbd2cSJim Jagielski             case TypeClass.BYTE_value:
1063*b1cdbd2cSJim Jagielski                 sReturn = "(byte) " + _sExpression;
1064*b1cdbd2cSJim Jagielski                 break;
1065*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
1066*b1cdbd2cSJim Jagielski                 sReturn = "'" + _sExpression + "'";
1067*b1cdbd2cSJim Jagielski                 break;
1068*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
1069*b1cdbd2cSJim Jagielski                 sReturn = "(double) " + _sExpression;
1070*b1cdbd2cSJim Jagielski                 break;
1071*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
1072*b1cdbd2cSJim Jagielski                 sReturn = "(float) " + _sExpression;
1073*b1cdbd2cSJim Jagielski                 break;
1074*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
1075*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
1076*b1cdbd2cSJim Jagielski                 sReturn = "(short) " + _sExpression;
1077*b1cdbd2cSJim Jagielski                 break;
1078*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
1079*b1cdbd2cSJim Jagielski                 sReturn = "\"" + _sExpression + "\"";
1080*b1cdbd2cSJim Jagielski                 break;
1081*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
1082*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
1083*b1cdbd2cSJim Jagielski                 sReturn = "(long) " + _sExpression;
1084*b1cdbd2cSJim Jagielski                 break;
1085*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
1086*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1087*b1cdbd2cSJim Jagielski                 break;
1088*b1cdbd2cSJim Jagielski             case TypeClass.ENUM_value:
1089*b1cdbd2cSJim Jagielski             default:
1090*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1091*b1cdbd2cSJim Jagielski                 System.out.println("Type " + _aTypeClass.getValue() + " not yet defined in 'castliteral()'");
1092*b1cdbd2cSJim Jagielski         }
1093*b1cdbd2cSJim Jagielski         return sReturn;
1094*b1cdbd2cSJim Jagielski     }
1095*b1cdbd2cSJim Jagielski 
1096*b1cdbd2cSJim Jagielski 
getbooleanTypeDescription()1097*b1cdbd2cSJim Jagielski         public String getbooleanTypeDescription(){
1098*b1cdbd2cSJim Jagielski             return  "boolean";
1099*b1cdbd2cSJim Jagielski         }
1100*b1cdbd2cSJim Jagielski 
getbyteTypeDescription()1101*b1cdbd2cSJim Jagielski         public String getbyteTypeDescription(){
1102*b1cdbd2cSJim Jagielski             return "byte";
1103*b1cdbd2cSJim Jagielski         }
1104*b1cdbd2cSJim Jagielski 
getshortTypeDescription()1105*b1cdbd2cSJim Jagielski         public String getshortTypeDescription(){
1106*b1cdbd2cSJim Jagielski             return "short";
1107*b1cdbd2cSJim Jagielski         }
1108*b1cdbd2cSJim Jagielski 
getunsignedshortTypeDescription()1109*b1cdbd2cSJim Jagielski         public String getunsignedshortTypeDescription(){
1110*b1cdbd2cSJim Jagielski             return "short";
1111*b1cdbd2cSJim Jagielski         }
1112*b1cdbd2cSJim Jagielski 
getlongTypeDescription()1113*b1cdbd2cSJim Jagielski         public String getlongTypeDescription(){
1114*b1cdbd2cSJim Jagielski             return "int";
1115*b1cdbd2cSJim Jagielski         }
1116*b1cdbd2cSJim Jagielski 
getunsignedlongTypeDescription()1117*b1cdbd2cSJim Jagielski         public String getunsignedlongTypeDescription(){
1118*b1cdbd2cSJim Jagielski             return "int";
1119*b1cdbd2cSJim Jagielski         }
1120*b1cdbd2cSJim Jagielski 
gethyperTypeDescription()1121*b1cdbd2cSJim Jagielski         public String gethyperTypeDescription(){
1122*b1cdbd2cSJim Jagielski             return "long";
1123*b1cdbd2cSJim Jagielski         }
1124*b1cdbd2cSJim Jagielski 
getunsignedhyperTypeDescription()1125*b1cdbd2cSJim Jagielski         public String getunsignedhyperTypeDescription(){
1126*b1cdbd2cSJim Jagielski             return "long";
1127*b1cdbd2cSJim Jagielski         }
1128*b1cdbd2cSJim Jagielski 
getfloatTypeDescription()1129*b1cdbd2cSJim Jagielski         public String getfloatTypeDescription(){
1130*b1cdbd2cSJim Jagielski             return "float";
1131*b1cdbd2cSJim Jagielski         }
1132*b1cdbd2cSJim Jagielski 
getdoubleTypeDescription()1133*b1cdbd2cSJim Jagielski         public String getdoubleTypeDescription(){
1134*b1cdbd2cSJim Jagielski             return "double";
1135*b1cdbd2cSJim Jagielski         }
1136*b1cdbd2cSJim Jagielski 
getcharTypeDescription()1137*b1cdbd2cSJim Jagielski         public String getcharTypeDescription(){
1138*b1cdbd2cSJim Jagielski             return "char";
1139*b1cdbd2cSJim Jagielski         }
1140*b1cdbd2cSJim Jagielski 
getstringTypeDescription(boolean _bAsHeaderSourceCode)1141*b1cdbd2cSJim Jagielski         public String getstringTypeDescription(boolean _bAsHeaderSourceCode){
1142*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1143*b1cdbd2cSJim Jagielski                 return "";
1144*b1cdbd2cSJim Jagielski             }
1145*b1cdbd2cSJim Jagielski             else{
1146*b1cdbd2cSJim Jagielski                 return "String";
1147*b1cdbd2cSJim Jagielski             }
1148*b1cdbd2cSJim Jagielski         }
1149*b1cdbd2cSJim Jagielski 
gettypeTypeDescription(boolean _bAsHeaderSourceCode)1150*b1cdbd2cSJim Jagielski         public String gettypeTypeDescription(boolean _bAsHeaderSourceCode){
1151*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1152*b1cdbd2cSJim Jagielski                 return "com.sun.star.uno.Type";
1153*b1cdbd2cSJim Jagielski             }
1154*b1cdbd2cSJim Jagielski             else{
1155*b1cdbd2cSJim Jagielski                 return "Type";
1156*b1cdbd2cSJim Jagielski             }
1157*b1cdbd2cSJim Jagielski         }
1158*b1cdbd2cSJim Jagielski 
getanyTypeDescription(boolean _bAsHeaderSourceCode)1159*b1cdbd2cSJim Jagielski         public String getanyTypeDescription(boolean _bAsHeaderSourceCode){
1160*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1161*b1cdbd2cSJim Jagielski                 return "";
1162*b1cdbd2cSJim Jagielski             }
1163*b1cdbd2cSJim Jagielski             else{
1164*b1cdbd2cSJim Jagielski                 return "Object";
1165*b1cdbd2cSJim Jagielski             }
1166*b1cdbd2cSJim Jagielski         }
1167*b1cdbd2cSJim Jagielski 
1168*b1cdbd2cSJim Jagielski 
getStringValue(String _sValue)1169*b1cdbd2cSJim Jagielski         public String getStringValue(String _sValue){
1170*b1cdbd2cSJim Jagielski             return _sValue;
1171*b1cdbd2cSJim Jagielski         }
1172*b1cdbd2cSJim Jagielski 
1173*b1cdbd2cSJim Jagielski 
getVariableDeclaration(String _sTypeString, String _sVariableName, boolean _bIsArray, TypeClass _aTypeClass, boolean _bInitialize)1174*b1cdbd2cSJim Jagielski         public String getVariableDeclaration(String _sTypeString, String _sVariableName, boolean _bIsArray, TypeClass _aTypeClass, boolean _bInitialize){
1175*b1cdbd2cSJim Jagielski             String sReturn = "";
1176*b1cdbd2cSJim Jagielski             if (_bIsArray){
1177*b1cdbd2cSJim Jagielski                 sReturn = _sTypeString + "[] " + _sVariableName;
1178*b1cdbd2cSJim Jagielski             }
1179*b1cdbd2cSJim Jagielski             else{
1180*b1cdbd2cSJim Jagielski                 sReturn = _sTypeString + " " + _sVariableName;
1181*b1cdbd2cSJim Jagielski             }
1182*b1cdbd2cSJim Jagielski             return sReturn;
1183*b1cdbd2cSJim Jagielski         }
1184*b1cdbd2cSJim Jagielski 
1185*b1cdbd2cSJim Jagielski 
getArrayDeclaration(String _sVariableDeclaration)1186*b1cdbd2cSJim Jagielski         public String getArrayDeclaration(String _sVariableDeclaration){
1187*b1cdbd2cSJim Jagielski             String sReturn = "";
1188*b1cdbd2cSJim Jagielski             String[] sDeclarations = _sVariableDeclaration.split(" ");
1189*b1cdbd2cSJim Jagielski             for (int i = 0; i< sDeclarations.length;i++){
1190*b1cdbd2cSJim Jagielski                 sReturn += sDeclarations[i];
1191*b1cdbd2cSJim Jagielski                 if (i == 0){
1192*b1cdbd2cSJim Jagielski                     sReturn += "[]";
1193*b1cdbd2cSJim Jagielski                 }
1194*b1cdbd2cSJim Jagielski                 if (i < (sDeclarations.length -1)){
1195*b1cdbd2cSJim Jagielski                     sReturn += " ";
1196*b1cdbd2cSJim Jagielski                 }
1197*b1cdbd2cSJim Jagielski             }
1198*b1cdbd2cSJim Jagielski             return sReturn;
1199*b1cdbd2cSJim Jagielski         }
1200*b1cdbd2cSJim Jagielski 
getCommentSign()1201*b1cdbd2cSJim Jagielski         public String getCommentSign(){
1202*b1cdbd2cSJim Jagielski             return "//";
1203*b1cdbd2cSJim Jagielski         }
1204*b1cdbd2cSJim Jagielski     }
1205*b1cdbd2cSJim Jagielski 
1206*b1cdbd2cSJim Jagielski 
1207*b1cdbd2cSJim Jagielski     public class BasicCodeGenerator implements XLanguageSourceCodeGenerator{
1208*b1cdbd2cSJim Jagielski         String sStatementsCode = "";
1209*b1cdbd2cSJim Jagielski 
BasicCodeGenerator()1210*b1cdbd2cSJim Jagielski         public BasicCodeGenerator(){
1211*b1cdbd2cSJim Jagielski         }
1212*b1cdbd2cSJim Jagielski 
getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass)1213*b1cdbd2cSJim Jagielski         public String getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass){
1214*b1cdbd2cSJim Jagielski             String sHeaderStatement = "";
1215*b1cdbd2cSJim Jagielski             return sHeaderStatement;
1216*b1cdbd2cSJim Jagielski         }
1217*b1cdbd2cSJim Jagielski 
getFinalHeaderStatements()1218*b1cdbd2cSJim Jagielski         public String getFinalHeaderStatements(){
1219*b1cdbd2cSJim Jagielski             return "";
1220*b1cdbd2cSJim Jagielski         }
1221*b1cdbd2cSJim Jagielski 
getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription)1222*b1cdbd2cSJim Jagielski         public String getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription){
1223*b1cdbd2cSJim Jagielski             //TODO try to use + _oUnoNode.getClassName() instead of the hack
1224*b1cdbd2cSJim Jagielski             return "Sub Main(" +  _soReturnObjectDescription +  " as " +  getanyTypeDescription(false) + ")";
1225*b1cdbd2cSJim Jagielski         }
1226*b1cdbd2cSJim Jagielski 
needsqueryInterface()1227*b1cdbd2cSJim Jagielski         public boolean needsqueryInterface(){
1228*b1cdbd2cSJim Jagielski             return false;
1229*b1cdbd2cSJim Jagielski         }
1230*b1cdbd2cSJim Jagielski 
assignqueryInterfaceHeaderSourceCode()1231*b1cdbd2cSJim Jagielski         public void assignqueryInterfaceHeaderSourceCode(){
1232*b1cdbd2cSJim Jagielski         }
1233*b1cdbd2cSJim Jagielski 
getMethodSeparator()1234*b1cdbd2cSJim Jagielski         public String getMethodSeparator(){
1235*b1cdbd2cSJim Jagielski             return ".";
1236*b1cdbd2cSJim Jagielski         }
1237*b1cdbd2cSJim Jagielski 
1238*b1cdbd2cSJim Jagielski 
getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName)1239*b1cdbd2cSJim Jagielski         public String getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName){
1240*b1cdbd2cSJim Jagielski             return _sIncomingObjectName;
1241*b1cdbd2cSJim Jagielski         }
1242*b1cdbd2cSJim Jagielski 
1243*b1cdbd2cSJim Jagielski 
getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName)1244*b1cdbd2cSJim Jagielski         public String getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName){
1245*b1cdbd2cSJim Jagielski            return "\t" + _sReturnVariableName + " =  " + _sIncomingObjectName + "."  + _sPropertyName;
1246*b1cdbd2cSJim Jagielski         }
1247*b1cdbd2cSJim Jagielski 
1248*b1cdbd2cSJim Jagielski 
getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember)1249*b1cdbd2cSJim Jagielski         public String getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember){
1250*b1cdbd2cSJim Jagielski             return getPropertyValueGetterSourceCode(_sMember, _sReturnVariableDescription, _sObjectDescription, null, "" );
1251*b1cdbd2cSJim Jagielski         }
1252*b1cdbd2cSJim Jagielski 
getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName)1253*b1cdbd2cSJim Jagielski         public String getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName){
1254*b1cdbd2cSJim Jagielski             return _sReturnVariableName + " = " + _sObjectDescription;
1255*b1cdbd2cSJim Jagielski         }
1256*b1cdbd2cSJim Jagielski 
1257*b1cdbd2cSJim Jagielski 
getObjectTypeDescription(String _sClassName, boolean _bAsHeader)1258*b1cdbd2cSJim Jagielski         public String getObjectTypeDescription(String _sClassName, boolean _bAsHeader){
1259*b1cdbd2cSJim Jagielski             return "Object";
1260*b1cdbd2cSJim Jagielski         }
1261*b1cdbd2cSJim Jagielski 
1262*b1cdbd2cSJim Jagielski 
getMethodTerminationSourceCode()1263*b1cdbd2cSJim Jagielski         public String getMethodTerminationSourceCode(){
1264*b1cdbd2cSJim Jagielski             return "\nEnd Sub\n";
1265*b1cdbd2cSJim Jagielski         }
1266*b1cdbd2cSJim Jagielski 
1267*b1cdbd2cSJim Jagielski 
castLiteral(String _sExpression, TypeClass _aTypeClass)1268*b1cdbd2cSJim Jagielski         public String castLiteral(String _sExpression, TypeClass _aTypeClass){
1269*b1cdbd2cSJim Jagielski         String sReturn = "";
1270*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
1271*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
1272*b1cdbd2cSJim Jagielski             case TypeClass.BYTE_value:
1273*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
1274*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
1275*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
1276*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
1277*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
1278*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_LONG_value:
1279*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
1280*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
1281*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1282*b1cdbd2cSJim Jagielski                 break;
1283*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
1284*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
1285*b1cdbd2cSJim Jagielski                 sReturn =  "\"" +_sExpression + "\"";
1286*b1cdbd2cSJim Jagielski                 break;
1287*b1cdbd2cSJim Jagielski             case TypeClass.ENUM_value:
1288*b1cdbd2cSJim Jagielski             default:
1289*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1290*b1cdbd2cSJim Jagielski                 System.out.println("Type " + _aTypeClass.getValue() + " not yet defined in 'castliteral()'");
1291*b1cdbd2cSJim Jagielski         }
1292*b1cdbd2cSJim Jagielski         return sReturn;
1293*b1cdbd2cSJim Jagielski     }
1294*b1cdbd2cSJim Jagielski 
1295*b1cdbd2cSJim Jagielski 
1296*b1cdbd2cSJim Jagielski 
getbooleanTypeDescription()1297*b1cdbd2cSJim Jagielski         public String getbooleanTypeDescription(){
1298*b1cdbd2cSJim Jagielski             return  "Boolean";
1299*b1cdbd2cSJim Jagielski         }
1300*b1cdbd2cSJim Jagielski 
getbyteTypeDescription()1301*b1cdbd2cSJim Jagielski         public String getbyteTypeDescription(){
1302*b1cdbd2cSJim Jagielski             return "Integer";
1303*b1cdbd2cSJim Jagielski         }
1304*b1cdbd2cSJim Jagielski 
getshortTypeDescription()1305*b1cdbd2cSJim Jagielski         public String getshortTypeDescription(){
1306*b1cdbd2cSJim Jagielski             return "Integer";
1307*b1cdbd2cSJim Jagielski         }
1308*b1cdbd2cSJim Jagielski 
getunsignedshortTypeDescription()1309*b1cdbd2cSJim Jagielski         public String getunsignedshortTypeDescription(){
1310*b1cdbd2cSJim Jagielski             return "Integer";
1311*b1cdbd2cSJim Jagielski         }
1312*b1cdbd2cSJim Jagielski 
getlongTypeDescription()1313*b1cdbd2cSJim Jagielski         public String getlongTypeDescription(){
1314*b1cdbd2cSJim Jagielski             return "Integer";
1315*b1cdbd2cSJim Jagielski         }
1316*b1cdbd2cSJim Jagielski 
getunsignedlongTypeDescription()1317*b1cdbd2cSJim Jagielski         public String getunsignedlongTypeDescription(){
1318*b1cdbd2cSJim Jagielski             return "Long";
1319*b1cdbd2cSJim Jagielski         }
1320*b1cdbd2cSJim Jagielski 
gethyperTypeDescription()1321*b1cdbd2cSJim Jagielski         public String gethyperTypeDescription(){
1322*b1cdbd2cSJim Jagielski             return "Long";
1323*b1cdbd2cSJim Jagielski         }
1324*b1cdbd2cSJim Jagielski 
getunsignedhyperTypeDescription()1325*b1cdbd2cSJim Jagielski         public String getunsignedhyperTypeDescription(){
1326*b1cdbd2cSJim Jagielski             return "Long";
1327*b1cdbd2cSJim Jagielski         }
1328*b1cdbd2cSJim Jagielski 
getfloatTypeDescription()1329*b1cdbd2cSJim Jagielski         public String getfloatTypeDescription(){
1330*b1cdbd2cSJim Jagielski             return "Double";
1331*b1cdbd2cSJim Jagielski         }
1332*b1cdbd2cSJim Jagielski 
getdoubleTypeDescription()1333*b1cdbd2cSJim Jagielski         public String getdoubleTypeDescription(){
1334*b1cdbd2cSJim Jagielski             return "Double";
1335*b1cdbd2cSJim Jagielski         }
1336*b1cdbd2cSJim Jagielski 
getcharTypeDescription()1337*b1cdbd2cSJim Jagielski         public String getcharTypeDescription(){
1338*b1cdbd2cSJim Jagielski             return "String";
1339*b1cdbd2cSJim Jagielski         }
1340*b1cdbd2cSJim Jagielski 
getstringTypeDescription(boolean _bAsHeaderSourceCode)1341*b1cdbd2cSJim Jagielski         public String getstringTypeDescription(boolean _bAsHeaderSourceCode){
1342*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1343*b1cdbd2cSJim Jagielski                 return "";
1344*b1cdbd2cSJim Jagielski             }
1345*b1cdbd2cSJim Jagielski             else{
1346*b1cdbd2cSJim Jagielski                 return "String";
1347*b1cdbd2cSJim Jagielski             }
1348*b1cdbd2cSJim Jagielski         }
1349*b1cdbd2cSJim Jagielski 
gettypeTypeDescription(boolean _bAsHeaderSourceCode)1350*b1cdbd2cSJim Jagielski         public String gettypeTypeDescription(boolean _bAsHeaderSourceCode){
1351*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1352*b1cdbd2cSJim Jagielski                 return "";
1353*b1cdbd2cSJim Jagielski             }
1354*b1cdbd2cSJim Jagielski             else{
1355*b1cdbd2cSJim Jagielski                 return "Object";
1356*b1cdbd2cSJim Jagielski             }
1357*b1cdbd2cSJim Jagielski         }
1358*b1cdbd2cSJim Jagielski 
getanyTypeDescription(boolean _bAsHeaderSourceCode)1359*b1cdbd2cSJim Jagielski         public String getanyTypeDescription(boolean _bAsHeaderSourceCode){
1360*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1361*b1cdbd2cSJim Jagielski                 return "";
1362*b1cdbd2cSJim Jagielski             }
1363*b1cdbd2cSJim Jagielski             else{
1364*b1cdbd2cSJim Jagielski                 return "Object";
1365*b1cdbd2cSJim Jagielski             }
1366*b1cdbd2cSJim Jagielski         }
1367*b1cdbd2cSJim Jagielski 
getStatementTerminationCharacter()1368*b1cdbd2cSJim Jagielski         public String getStatementTerminationCharacter(){
1369*b1cdbd2cSJim Jagielski             return "";
1370*b1cdbd2cSJim Jagielski         }
1371*b1cdbd2cSJim Jagielski 
1372*b1cdbd2cSJim Jagielski 
getVariableDeclaration(String _sTypeString, String _sVariableName, boolean bIsArray, TypeClass _aTypeClass, boolean _bInitialize)1373*b1cdbd2cSJim Jagielski         public String getVariableDeclaration(String _sTypeString, String _sVariableName, boolean bIsArray, TypeClass _aTypeClass, boolean _bInitialize){
1374*b1cdbd2cSJim Jagielski             String sReturn = "";
1375*b1cdbd2cSJim Jagielski             if (bIsArray){
1376*b1cdbd2cSJim Jagielski                 sReturn = "Dim " + _sVariableName + "() as " + _sTypeString + "\n\t" + _sVariableName;
1377*b1cdbd2cSJim Jagielski             }
1378*b1cdbd2cSJim Jagielski             else{
1379*b1cdbd2cSJim Jagielski                 sReturn = "Dim " + _sVariableName + " as " + _sTypeString + "\n\t" + _sVariableName;
1380*b1cdbd2cSJim Jagielski             }
1381*b1cdbd2cSJim Jagielski             return sReturn;
1382*b1cdbd2cSJim Jagielski         }
1383*b1cdbd2cSJim Jagielski 
1384*b1cdbd2cSJim Jagielski 
getStringValue(String _sValue)1385*b1cdbd2cSJim Jagielski         public String getStringValue(String _sValue){
1386*b1cdbd2cSJim Jagielski             return _sValue;
1387*b1cdbd2cSJim Jagielski         }
1388*b1cdbd2cSJim Jagielski 
1389*b1cdbd2cSJim Jagielski 
getArrayDeclaration(String _sVariableDeclaration)1390*b1cdbd2cSJim Jagielski         public String getArrayDeclaration(String _sVariableDeclaration){
1391*b1cdbd2cSJim Jagielski             String sReturn = "";
1392*b1cdbd2cSJim Jagielski             String[] sDeclarations = _sVariableDeclaration.split(" ");
1393*b1cdbd2cSJim Jagielski             for (int i = 0; i< sDeclarations.length;i++){
1394*b1cdbd2cSJim Jagielski                 sReturn += sDeclarations[i];
1395*b1cdbd2cSJim Jagielski                 if (i == 0){
1396*b1cdbd2cSJim Jagielski                     sReturn += "[]";
1397*b1cdbd2cSJim Jagielski                 }
1398*b1cdbd2cSJim Jagielski                 if (i < (sDeclarations.length -1)){
1399*b1cdbd2cSJim Jagielski                     sReturn += " ";
1400*b1cdbd2cSJim Jagielski                 }
1401*b1cdbd2cSJim Jagielski             }
1402*b1cdbd2cSJim Jagielski             return sReturn;
1403*b1cdbd2cSJim Jagielski         }
1404*b1cdbd2cSJim Jagielski 
getCommentSign()1405*b1cdbd2cSJim Jagielski         public String getCommentSign(){
1406*b1cdbd2cSJim Jagielski             return "'";
1407*b1cdbd2cSJim Jagielski         }
1408*b1cdbd2cSJim Jagielski 
1409*b1cdbd2cSJim Jagielski     }
1410*b1cdbd2cSJim Jagielski 
1411*b1cdbd2cSJim Jagielski     public class CPlusPlusCodeGenerator implements XLanguageSourceCodeGenerator{
1412*b1cdbd2cSJim Jagielski         String sStatementsCode = "";
1413*b1cdbd2cSJim Jagielski         boolean bIncludeStringHeader = false;
1414*b1cdbd2cSJim Jagielski         boolean bIncludeAny = false;
1415*b1cdbd2cSJim Jagielski         boolean bIncludeSequenceHeader = false;
1416*b1cdbd2cSJim Jagielski 
CPlusPlusCodeGenerator()1417*b1cdbd2cSJim Jagielski         public CPlusPlusCodeGenerator(){
1418*b1cdbd2cSJim Jagielski         }
1419*b1cdbd2cSJim Jagielski 
getCSSNameSpaceString()1420*b1cdbd2cSJim Jagielski         private String getCSSNameSpaceString(){
1421*b1cdbd2cSJim Jagielski             return "css";
1422*b1cdbd2cSJim Jagielski         }
1423*b1cdbd2cSJim Jagielski 
getStatementTerminationCharacter()1424*b1cdbd2cSJim Jagielski         public String getStatementTerminationCharacter(){
1425*b1cdbd2cSJim Jagielski             return ";";
1426*b1cdbd2cSJim Jagielski         }
1427*b1cdbd2cSJim Jagielski 
1428*b1cdbd2cSJim Jagielski 
getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass)1429*b1cdbd2cSJim Jagielski         public String getHeaderSourceCode(Object _oUnoObject, String _sClassName, TypeClass _aTypeClass){
1430*b1cdbd2cSJim Jagielski             String sClassName = _sClassName;
1431*b1cdbd2cSJim Jagielski             String sHeaderStatement = "";
1432*b1cdbd2cSJim Jagielski             if (_oUnoObject != null){
1433*b1cdbd2cSJim Jagielski                 if (!m_oIntrospector.isObjectPrimitive(_oUnoObject)){
1434*b1cdbd2cSJim Jagielski                     if (m_oIntrospector.isObjectSequence(_oUnoObject)){
1435*b1cdbd2cSJim Jagielski                         XTypeDescription xTypeDescription = m_oIntrospector.getReferencedType(sClassName);
1436*b1cdbd2cSJim Jagielski                         if (xTypeDescription != null){
1437*b1cdbd2cSJim Jagielski                             if (!m_oIntrospector.isPrimitive(xTypeDescription.getTypeClass())){
1438*b1cdbd2cSJim Jagielski                                 sClassName = getTypeString(xTypeDescription.getName(), xTypeDescription.getTypeClass(), true);
1439*b1cdbd2cSJim Jagielski                             }
1440*b1cdbd2cSJim Jagielski                             // primitive Types are not supposed to turn up in the import section...
1441*b1cdbd2cSJim Jagielski                             else{
1442*b1cdbd2cSJim Jagielski                                 sClassName = "";
1443*b1cdbd2cSJim Jagielski                             }
1444*b1cdbd2cSJim Jagielski                         }
1445*b1cdbd2cSJim Jagielski                     }
1446*b1cdbd2cSJim Jagielski                     else{
1447*b1cdbd2cSJim Jagielski                         sClassName = getTypeString(_sClassName, _aTypeClass, true);
1448*b1cdbd2cSJim Jagielski                     }
1449*b1cdbd2cSJim Jagielski                     if (!sClassName.equals("")){
1450*b1cdbd2cSJim Jagielski                         sHeaderStatement =  getHeaderOfClass(sClassName);
1451*b1cdbd2cSJim Jagielski                     }
1452*b1cdbd2cSJim Jagielski                 }
1453*b1cdbd2cSJim Jagielski             }
1454*b1cdbd2cSJim Jagielski             return sHeaderStatement;
1455*b1cdbd2cSJim Jagielski         }
1456*b1cdbd2cSJim Jagielski 
1457*b1cdbd2cSJim Jagielski 
1458*b1cdbd2cSJim Jagielski 
getFinalHeaderStatements()1459*b1cdbd2cSJim Jagielski         public String getFinalHeaderStatements(){
1460*b1cdbd2cSJim Jagielski             String sReturn = "";
1461*b1cdbd2cSJim Jagielski             sReturn += "\nnamespace " + getCSSNameSpaceString() + " = com::sun::star;\n";
1462*b1cdbd2cSJim Jagielski             sReturn += "using namespace rtl;\n";
1463*b1cdbd2cSJim Jagielski             return sReturn;
1464*b1cdbd2cSJim Jagielski         }
1465*b1cdbd2cSJim Jagielski 
1466*b1cdbd2cSJim Jagielski 
getHeaderOfClass(String _sClassName)1467*b1cdbd2cSJim Jagielski         private String getHeaderOfClass(String _sClassName){
1468*b1cdbd2cSJim Jagielski             return "#include \"" + _sClassName.replace('.', '/') + ".hpp\"\n";     // #include <com/sun/star/uno/XComponentContext.hpp>
1469*b1cdbd2cSJim Jagielski         }
1470*b1cdbd2cSJim Jagielski 
1471*b1cdbd2cSJim Jagielski 
1472*b1cdbd2cSJim Jagielski 
assignqueryInterfaceHeaderSourceCode()1473*b1cdbd2cSJim Jagielski         public void assignqueryInterfaceHeaderSourceCode(){
1474*b1cdbd2cSJim Jagielski             sHeaderStatements.add("#include \"sal/config.h\"\n");
1475*b1cdbd2cSJim Jagielski             sHeaderStatements.add("#include \"sal/types.h\"\n");
1476*b1cdbd2cSJim Jagielski             if (bIncludeStringHeader){
1477*b1cdbd2cSJim Jagielski                 sHeaderStatements.add("#include \"rtl/ustring.hxx\"\n");
1478*b1cdbd2cSJim Jagielski             }
1479*b1cdbd2cSJim Jagielski             sHeaderStatements.add("#include \"com/sun/star/uno/Reference.hxx\"\n");
1480*b1cdbd2cSJim Jagielski             if (bIncludeSequenceHeader){
1481*b1cdbd2cSJim Jagielski                 sHeaderStatements.add("#include \"com/sun/star/uno/Sequence.hxx\"\n");
1482*b1cdbd2cSJim Jagielski             }
1483*b1cdbd2cSJim Jagielski             sHeaderStatements.add(getHeaderOfClass("com.sun.star.uno.XInterface"));
1484*b1cdbd2cSJim Jagielski             if (bIncludeAny){
1485*b1cdbd2cSJim Jagielski                 sHeaderStatements.add(getHeaderOfClass("com.sun.star.uno.Any"));
1486*b1cdbd2cSJim Jagielski             }
1487*b1cdbd2cSJim Jagielski         }
1488*b1cdbd2cSJim Jagielski 
1489*b1cdbd2cSJim Jagielski 
getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription)1490*b1cdbd2cSJim Jagielski         public String getMainMethodSignatureSourceCode(XUnoNode _oUnoNode, String _soReturnObjectDescription){
1491*b1cdbd2cSJim Jagielski             String sReturn = "";
1492*b1cdbd2cSJim Jagielski             sReturn = "void codesnippet(const " + getCSSNameSpaceString() + "::uno::Reference<" + getCSSNameSpaceString() + "::uno::XInterface>& "  +  _soReturnObjectDescription + " ){";
1493*b1cdbd2cSJim Jagielski             int a = 0;
1494*b1cdbd2cSJim Jagielski             if (!sExceptions.contains("com.sun.star.uno.RuntimeException")){
1495*b1cdbd2cSJim Jagielski                 sExceptions.add("com.sun.star.uno.RuntimeException");
1496*b1cdbd2cSJim Jagielski             }
1497*b1cdbd2cSJim Jagielski             if (baddExceptionHandling){
1498*b1cdbd2cSJim Jagielski                 sReturn += "\n//throw ";
1499*b1cdbd2cSJim Jagielski                 for (int i = 0; i < sExceptions.size(); i++){
1500*b1cdbd2cSJim Jagielski                     String sCurException = (String) sExceptions.get(i);
1501*b1cdbd2cSJim Jagielski                     if (sReturn.indexOf(sCurException) == -1){
1502*b1cdbd2cSJim Jagielski                         if (a++ > 0){
1503*b1cdbd2cSJim Jagielski                             sReturn += ", ";
1504*b1cdbd2cSJim Jagielski                         }
1505*b1cdbd2cSJim Jagielski                         sReturn += getObjectTypeDescription(sCurException, false);
1506*b1cdbd2cSJim Jagielski 
1507*b1cdbd2cSJim Jagielski                     }
1508*b1cdbd2cSJim Jagielski                 }
1509*b1cdbd2cSJim Jagielski 
1510*b1cdbd2cSJim Jagielski             }
1511*b1cdbd2cSJim Jagielski             sReturn += "{";
1512*b1cdbd2cSJim Jagielski             return sReturn;
1513*b1cdbd2cSJim Jagielski         }
1514*b1cdbd2cSJim Jagielski 
1515*b1cdbd2cSJim Jagielski 
needsqueryInterface()1516*b1cdbd2cSJim Jagielski         public boolean needsqueryInterface(){
1517*b1cdbd2cSJim Jagielski             return true;
1518*b1cdbd2cSJim Jagielski         }
1519*b1cdbd2cSJim Jagielski 
1520*b1cdbd2cSJim Jagielski 
getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName)1521*b1cdbd2cSJim Jagielski         public String getqueryInterfaceSourceCode(String _sClassName, String _sReturnVariableName, String _sIncomingObjectName){
1522*b1cdbd2cSJim Jagielski             return "\t" + _sReturnVariableName + "( " + _sIncomingObjectName + ", " + getCSSNameSpaceString() + "::uno::UNO_QUERY_THROW);\n";
1523*b1cdbd2cSJim Jagielski         }
1524*b1cdbd2cSJim Jagielski 
1525*b1cdbd2cSJim Jagielski 
getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName)1526*b1cdbd2cSJim Jagielski         public String getPropertyValueGetterSourceCode(String _sPropertyName, String _sReturnVariableName, String _sIncomingObjectName, TypeClass _aTypeClass, String _sTypeName){
1527*b1cdbd2cSJim Jagielski             String sFirstLine = "\t";
1528*b1cdbd2cSJim Jagielski             String sReturnVariableName = _sReturnVariableName;
1529*b1cdbd2cSJim Jagielski             // e.g. uno::Any a = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" )) );
1530*b1cdbd2cSJim Jagielski             String[] sVarDefinition = _sReturnVariableName.split("=");
1531*b1cdbd2cSJim Jagielski             if (sVarDefinition.length > 0){
1532*b1cdbd2cSJim Jagielski                 String sVariable = sVarDefinition[0];
1533*b1cdbd2cSJim Jagielski                 String[] sVarDeclaration = sVariable.split(" ");
1534*b1cdbd2cSJim Jagielski                 if (sVarDeclaration.length > 0){
1535*b1cdbd2cSJim Jagielski                     sFirstLine += sReturnVariableName + ";\n";
1536*b1cdbd2cSJim Jagielski                     sReturnVariableName = sVarDeclaration[sVarDeclaration.length-1];
1537*b1cdbd2cSJim Jagielski                 }
1538*b1cdbd2cSJim Jagielski             }
1539*b1cdbd2cSJim Jagielski             String sObjectDescription = _sIncomingObjectName + "->getPropertyValue(" + getStringValue(_sPropertyName) + ")";
1540*b1cdbd2cSJim Jagielski             String sSecondLine = "\t" + getConvertedSourceCodeValueOfObject(sReturnVariableName, sObjectDescription,  _aTypeClass, _sTypeName) + ";";
1541*b1cdbd2cSJim Jagielski             return sFirstLine + sSecondLine;
1542*b1cdbd2cSJim Jagielski         }
1543*b1cdbd2cSJim Jagielski 
1544*b1cdbd2cSJim Jagielski 
getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember)1545*b1cdbd2cSJim Jagielski         public String getStructSourceCode(String _sReturnVariableDescription, String _sObjectDescription, String _sMember){
1546*b1cdbd2cSJim Jagielski             return "\t" + _sReturnVariableDescription + " = " + _sObjectDescription + "->" + _sMember + ";";
1547*b1cdbd2cSJim Jagielski         }
1548*b1cdbd2cSJim Jagielski 
1549*b1cdbd2cSJim Jagielski 
getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName)1550*b1cdbd2cSJim Jagielski         public String getConvertedSourceCodeValueOfObject(String _sReturnVariableName, String _sObjectDescription, TypeClass _aTypeClass, String _sTypeName){
1551*b1cdbd2cSJim Jagielski //            if (m_oIntrospector.isPrimitive(_aTypeClass)){
1552*b1cdbd2cSJim Jagielski                 return _sObjectDescription + " >>= " + _sReturnVariableName;
1553*b1cdbd2cSJim Jagielski //            }
1554*b1cdbd2cSJim Jagielski //            else{
1555*b1cdbd2cSJim Jagielski //                return _sReturnVariableName + " = " + _sObjectDescription;
1556*b1cdbd2cSJim Jagielski //            }
1557*b1cdbd2cSJim Jagielski         }
1558*b1cdbd2cSJim Jagielski 
1559*b1cdbd2cSJim Jagielski 
getStringValue(String _sValue)1560*b1cdbd2cSJim Jagielski         public String getStringValue(String _sValue){
1561*b1cdbd2cSJim Jagielski             bIncludeStringHeader = true;
1562*b1cdbd2cSJim Jagielski             return "OUString(RTL_CONSTASCII_USTRINGPARAM(\"" + _sValue + "\"))";
1563*b1cdbd2cSJim Jagielski         }
1564*b1cdbd2cSJim Jagielski 
1565*b1cdbd2cSJim Jagielski 
getObjectTypeDescription(String _sClassName, boolean _bAsHeader)1566*b1cdbd2cSJim Jagielski         public String getObjectTypeDescription(String _sClassName, boolean _bAsHeader){
1567*b1cdbd2cSJim Jagielski             String sReturn = "";
1568*b1cdbd2cSJim Jagielski             if (_bAsHeader){
1569*b1cdbd2cSJim Jagielski                 sReturn = _sClassName.replace('.', '/');
1570*b1cdbd2cSJim Jagielski             }
1571*b1cdbd2cSJim Jagielski             else{
1572*b1cdbd2cSJim Jagielski                 String sModuleName = m_oIntrospector.getModuleName(_sClassName);
1573*b1cdbd2cSJim Jagielski                 sModuleName = m_oIntrospector.getShortClassName(sModuleName);
1574*b1cdbd2cSJim Jagielski                 sReturn = getCSSNameSpaceString() + "::" + sModuleName + "::" + m_oIntrospector.getShortClassName(_sClassName);
1575*b1cdbd2cSJim Jagielski             }
1576*b1cdbd2cSJim Jagielski             return sReturn;
1577*b1cdbd2cSJim Jagielski         }
1578*b1cdbd2cSJim Jagielski 
1579*b1cdbd2cSJim Jagielski 
getMethodTerminationSourceCode()1580*b1cdbd2cSJim Jagielski         public String getMethodTerminationSourceCode(){
1581*b1cdbd2cSJim Jagielski             return "\n}";
1582*b1cdbd2cSJim Jagielski         }
1583*b1cdbd2cSJim Jagielski 
getMethodSeparator()1584*b1cdbd2cSJim Jagielski         public String getMethodSeparator(){
1585*b1cdbd2cSJim Jagielski             return "->";
1586*b1cdbd2cSJim Jagielski         }
1587*b1cdbd2cSJim Jagielski 
1588*b1cdbd2cSJim Jagielski 
castLiteral(String _sExpression, TypeClass _aTypeClass)1589*b1cdbd2cSJim Jagielski         public String castLiteral(String _sExpression, TypeClass _aTypeClass){
1590*b1cdbd2cSJim Jagielski         String sReturn = "";
1591*b1cdbd2cSJim Jagielski         switch (_aTypeClass.getValue()){
1592*b1cdbd2cSJim Jagielski             case TypeClass.BOOLEAN_value:
1593*b1cdbd2cSJim Jagielski             case TypeClass.BYTE_value:
1594*b1cdbd2cSJim Jagielski             case TypeClass.DOUBLE_value:
1595*b1cdbd2cSJim Jagielski             case TypeClass.FLOAT_value:
1596*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_SHORT_value:
1597*b1cdbd2cSJim Jagielski             case TypeClass.SHORT_value:
1598*b1cdbd2cSJim Jagielski             case TypeClass.LONG_value:
1599*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_LONG_value:
1600*b1cdbd2cSJim Jagielski             case TypeClass.HYPER_value:
1601*b1cdbd2cSJim Jagielski             case TypeClass.UNSIGNED_HYPER_value:
1602*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1603*b1cdbd2cSJim Jagielski                 break;
1604*b1cdbd2cSJim Jagielski             case TypeClass.CHAR_value:
1605*b1cdbd2cSJim Jagielski                 sReturn = "'" + _sExpression + "'";
1606*b1cdbd2cSJim Jagielski                 break;
1607*b1cdbd2cSJim Jagielski             case TypeClass.STRING_value:
1608*b1cdbd2cSJim Jagielski                 sReturn = getStringValue(_sExpression);
1609*b1cdbd2cSJim Jagielski                 break;
1610*b1cdbd2cSJim Jagielski             case TypeClass.ENUM_value:
1611*b1cdbd2cSJim Jagielski             default:
1612*b1cdbd2cSJim Jagielski                 sReturn = _sExpression;
1613*b1cdbd2cSJim Jagielski                 System.out.println("Type " + _aTypeClass.getValue() + " not yet defined in 'castliteral()'");
1614*b1cdbd2cSJim Jagielski         }
1615*b1cdbd2cSJim Jagielski         return sReturn;
1616*b1cdbd2cSJim Jagielski     }
1617*b1cdbd2cSJim Jagielski 
getbooleanTypeDescription()1618*b1cdbd2cSJim Jagielski         public String getbooleanTypeDescription(){
1619*b1cdbd2cSJim Jagielski             return  "sal_Bool";
1620*b1cdbd2cSJim Jagielski         }
1621*b1cdbd2cSJim Jagielski 
getbyteTypeDescription()1622*b1cdbd2cSJim Jagielski         public String getbyteTypeDescription(){
1623*b1cdbd2cSJim Jagielski             return "sal_Int8";
1624*b1cdbd2cSJim Jagielski         }
1625*b1cdbd2cSJim Jagielski 
getshortTypeDescription()1626*b1cdbd2cSJim Jagielski         public String getshortTypeDescription(){
1627*b1cdbd2cSJim Jagielski             return "sal_Int16";
1628*b1cdbd2cSJim Jagielski         }
1629*b1cdbd2cSJim Jagielski 
getunsignedshortTypeDescription()1630*b1cdbd2cSJim Jagielski         public String getunsignedshortTypeDescription(){
1631*b1cdbd2cSJim Jagielski             return "sal_uInt16";
1632*b1cdbd2cSJim Jagielski         }
1633*b1cdbd2cSJim Jagielski 
getlongTypeDescription()1634*b1cdbd2cSJim Jagielski         public String getlongTypeDescription(){
1635*b1cdbd2cSJim Jagielski             return "sal_Int32";
1636*b1cdbd2cSJim Jagielski         }
1637*b1cdbd2cSJim Jagielski 
getunsignedlongTypeDescription()1638*b1cdbd2cSJim Jagielski         public String getunsignedlongTypeDescription(){
1639*b1cdbd2cSJim Jagielski             return "sal_uInt32";
1640*b1cdbd2cSJim Jagielski         }
1641*b1cdbd2cSJim Jagielski 
gethyperTypeDescription()1642*b1cdbd2cSJim Jagielski         public String gethyperTypeDescription(){
1643*b1cdbd2cSJim Jagielski             return "sal_Int64";
1644*b1cdbd2cSJim Jagielski         }
1645*b1cdbd2cSJim Jagielski 
getunsignedhyperTypeDescription()1646*b1cdbd2cSJim Jagielski         public String getunsignedhyperTypeDescription(){
1647*b1cdbd2cSJim Jagielski             return "sal_uInt64";
1648*b1cdbd2cSJim Jagielski         }
1649*b1cdbd2cSJim Jagielski 
getfloatTypeDescription()1650*b1cdbd2cSJim Jagielski         public String getfloatTypeDescription(){
1651*b1cdbd2cSJim Jagielski             return "float";
1652*b1cdbd2cSJim Jagielski         }
1653*b1cdbd2cSJim Jagielski 
getdoubleTypeDescription()1654*b1cdbd2cSJim Jagielski         public String getdoubleTypeDescription(){
1655*b1cdbd2cSJim Jagielski             return "double";
1656*b1cdbd2cSJim Jagielski         }
1657*b1cdbd2cSJim Jagielski 
getcharTypeDescription()1658*b1cdbd2cSJim Jagielski         public String getcharTypeDescription(){
1659*b1cdbd2cSJim Jagielski             return "sal_Unicode";
1660*b1cdbd2cSJim Jagielski         }
1661*b1cdbd2cSJim Jagielski 
getstringTypeDescription(boolean _bAsHeaderSourceCode)1662*b1cdbd2cSJim Jagielski         public String getstringTypeDescription(boolean _bAsHeaderSourceCode){
1663*b1cdbd2cSJim Jagielski             bIncludeStringHeader = true;
1664*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1665*b1cdbd2cSJim Jagielski                 return "";
1666*b1cdbd2cSJim Jagielski             }
1667*b1cdbd2cSJim Jagielski             else{
1668*b1cdbd2cSJim Jagielski                 return "OUString";
1669*b1cdbd2cSJim Jagielski             }
1670*b1cdbd2cSJim Jagielski         }
1671*b1cdbd2cSJim Jagielski 
gettypeTypeDescription(boolean _bAsHeaderSourceCode)1672*b1cdbd2cSJim Jagielski         public String gettypeTypeDescription(boolean _bAsHeaderSourceCode){
1673*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1674*b1cdbd2cSJim Jagielski                 return "com/sun/star/uno/Type";
1675*b1cdbd2cSJim Jagielski             }
1676*b1cdbd2cSJim Jagielski             else{
1677*b1cdbd2cSJim Jagielski                 return "Type";
1678*b1cdbd2cSJim Jagielski             }
1679*b1cdbd2cSJim Jagielski         }
1680*b1cdbd2cSJim Jagielski 
getanyTypeDescription(boolean _bAsHeaderSourceCode)1681*b1cdbd2cSJim Jagielski         public String getanyTypeDescription(boolean _bAsHeaderSourceCode){
1682*b1cdbd2cSJim Jagielski             if (_bAsHeaderSourceCode){
1683*b1cdbd2cSJim Jagielski                     return "com/sun/star/uno/XInterface";
1684*b1cdbd2cSJim Jagielski             }
1685*b1cdbd2cSJim Jagielski             else{
1686*b1cdbd2cSJim Jagielski                 return "XInterface";
1687*b1cdbd2cSJim Jagielski             }
1688*b1cdbd2cSJim Jagielski         }
1689*b1cdbd2cSJim Jagielski 
1690*b1cdbd2cSJim Jagielski 
getVariableDeclaration(String _sTypeString, String _sVariableName, boolean bIsArray, TypeClass _aTypeClass, boolean _bInitialize)1691*b1cdbd2cSJim Jagielski         public String getVariableDeclaration(String _sTypeString, String _sVariableName, boolean bIsArray, TypeClass _aTypeClass, boolean _bInitialize){
1692*b1cdbd2cSJim Jagielski             boolean bIsPrimitive = m_oIntrospector.isPrimitive(_aTypeClass);
1693*b1cdbd2cSJim Jagielski 
1694*b1cdbd2cSJim Jagielski             // uno::Reference< frame::XDispatch >    m_xDispatch
1695*b1cdbd2cSJim Jagielski             String sReturn = "";
1696*b1cdbd2cSJim Jagielski             if (bIsArray){
1697*b1cdbd2cSJim Jagielski                 bIncludeSequenceHeader = true;
1698*b1cdbd2cSJim Jagielski                 sReturn = getCSSNameSpaceString() + "::uno::Sequence<" + _sTypeString + "> " + _sVariableName;
1699*b1cdbd2cSJim Jagielski             }
1700*b1cdbd2cSJim Jagielski             else{
1701*b1cdbd2cSJim Jagielski                 if (bIsPrimitive){
1702*b1cdbd2cSJim Jagielski                     sReturn = _sTypeString + " " + _sVariableName;
1703*b1cdbd2cSJim Jagielski                     if (_bInitialize){
1704*b1cdbd2cSJim Jagielski                         switch (_aTypeClass.getValue()){
1705*b1cdbd2cSJim Jagielski                             case TypeClass.BOOLEAN_value:
1706*b1cdbd2cSJim Jagielski                                 sReturn = sReturn + " = false";
1707*b1cdbd2cSJim Jagielski                                 break;
1708*b1cdbd2cSJim Jagielski                             case TypeClass.BYTE_value:
1709*b1cdbd2cSJim Jagielski                             case TypeClass.UNSIGNED_SHORT_value:
1710*b1cdbd2cSJim Jagielski                             case TypeClass.SHORT_value:
1711*b1cdbd2cSJim Jagielski                             case TypeClass.LONG_value:
1712*b1cdbd2cSJim Jagielski                             case TypeClass.UNSIGNED_LONG_value:
1713*b1cdbd2cSJim Jagielski                             case TypeClass.HYPER_value:
1714*b1cdbd2cSJim Jagielski                             case TypeClass.UNSIGNED_HYPER_value:
1715*b1cdbd2cSJim Jagielski                                 sReturn = sReturn + " = 0";
1716*b1cdbd2cSJim Jagielski                                 break;
1717*b1cdbd2cSJim Jagielski                             case TypeClass.DOUBLE_value:
1718*b1cdbd2cSJim Jagielski                             case TypeClass.FLOAT_value:
1719*b1cdbd2cSJim Jagielski                                 sReturn = sReturn + " = 0.0";
1720*b1cdbd2cSJim Jagielski                                 break;
1721*b1cdbd2cSJim Jagielski                             case TypeClass.CHAR_value:
1722*b1cdbd2cSJim Jagielski                                 sReturn = sReturn + "'0'";
1723*b1cdbd2cSJim Jagielski                                 break;
1724*b1cdbd2cSJim Jagielski                             case TypeClass.STRING_value:
1725*b1cdbd2cSJim Jagielski                                 sReturn = _sTypeString + " " + _sVariableName;
1726*b1cdbd2cSJim Jagielski                                 break;
1727*b1cdbd2cSJim Jagielski                             default:
1728*b1cdbd2cSJim Jagielski                                 sReturn = _sTypeString + " " + _sVariableName;
1729*b1cdbd2cSJim Jagielski                                 System.out.println("Type " + _aTypeClass.getValue() + " not yet defined in 'getVariableDeclaration()'");
1730*b1cdbd2cSJim Jagielski                         }
1731*b1cdbd2cSJim Jagielski                     }
1732*b1cdbd2cSJim Jagielski                 }
1733*b1cdbd2cSJim Jagielski                 else{
1734*b1cdbd2cSJim Jagielski                     sReturn = getCSSNameSpaceString() + "::uno::Reference<" + _sTypeString + "> "  +_sVariableName;
1735*b1cdbd2cSJim Jagielski                 }
1736*b1cdbd2cSJim Jagielski             }
1737*b1cdbd2cSJim Jagielski             return sReturn;
1738*b1cdbd2cSJim Jagielski         }
1739*b1cdbd2cSJim Jagielski 
getArrayDeclaration(String _sVariableDeclaration)1740*b1cdbd2cSJim Jagielski         public String getArrayDeclaration(String _sVariableDeclaration){
1741*b1cdbd2cSJim Jagielski             this.bIncludeSequenceHeader = true;
1742*b1cdbd2cSJim Jagielski             String sReturn = "";
1743*b1cdbd2cSJim Jagielski             String[] sDeclarations = _sVariableDeclaration.split(" ");
1744*b1cdbd2cSJim Jagielski             if (sDeclarations.length == 2){
1745*b1cdbd2cSJim Jagielski                 sReturn = getCSSNameSpaceString() +"::uno::Sequence<" + sDeclarations[1] + ">";
1746*b1cdbd2cSJim Jagielski             }
1747*b1cdbd2cSJim Jagielski             return sReturn;
1748*b1cdbd2cSJim Jagielski         }
1749*b1cdbd2cSJim Jagielski 
getCommentSign()1750*b1cdbd2cSJim Jagielski         public String getCommentSign(){
1751*b1cdbd2cSJim Jagielski             return "//";
1752*b1cdbd2cSJim Jagielski         }
1753*b1cdbd2cSJim Jagielski 
1754*b1cdbd2cSJim Jagielski     }
1755*b1cdbd2cSJim Jagielski }
1756