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