User: rt      
Date: 2008-06-16 13:02:27+0000
Modified:
   dba/reportdesign/java/com/sun/star/report/SDBCReportDataFactory.java

Log:
 INTEGRATION: CWS rptchart02 (1.3.4); FILE MERGED
 2008/06/11 12:35:10 oj 1.3.4.10: RESYNC: (1.5-1.6); FILE MERGED
 2008/06/09 10:52:10 oj 1.3.4.9: #i89437# check if command is not null
 2008/05/27 08:06:15 oj 1.3.4.8: #i77610# handle keep-with-next and 
may-break-between-rows and keep-together
 2008/05/22 08:04:52 oj 1.3.4.7: #i86902# impl author and title functions
 2008/05/21 11:56:37 oj 1.3.4.6: RESYNC: (1.4-1.5); FILE MERGED
 2008/05/20 08:15:46 oj 1.3.4.5: #i84290# handle statements which can not be 
parsed
 2008/05/16 10:01:31 oj 1.3.4.4: #i89370# use string instead of bigDecimal
 2008/04/21 12:53:37 oj 1.3.4.3: export chart for spreadsheet and set default 
command type as command
 2008/04/16 06:20:48 oj 1.3.4.2: RESYNC: (1.3-1.4); FILE MERGED
 2008/03/12 09:42:43 oj 1.3.4.1: impl chart handling and some code refactoring

File Changes:

Directory: /dba/reportdesign/java/com/sun/star/report/
======================================================

File [changed]: SDBCReportDataFactory.java
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/java/com/sun/star/report/SDBCReportDataFactory.java?r1=1.6&r2=1.7
Delta lines:  +99 -58
---------------------
--- SDBCReportDataFactory.java  2008-05-20 14:11:18+0000        1.6
+++ SDBCReportDataFactory.java  2008-06-16 13:02:25+0000        1.7
@@ -58,6 +58,7 @@
 import com.sun.star.task.XInteractionHandler;
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.uno.XComponentContext;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -79,6 +80,13 @@
     private static final String UNO_COMMAND_TYPE = "CommandType";
     private final XConnection connection;
     private final XComponentContext m_cmpCtx;
+    private static final int FAILED = 0;
+    private static final int DONE = 1;
+    private static final int RETRIEVE_COLUMNS = 2;
+    private static final int RETRIEVE_OBJECT = 3;
+    private static final int HANDLE_QUERY = 4;
+    private static final int HANDLE_TABLE = 5;
+    private static final int HANDLE_SQL = 6;
 
     private static final int FAILED = 0;
     private static final int DONE = 1;
@@ -97,6 +105,10 @@
     {
         try
         {
+            if (command == null)
+            {
+                return new SDBCReportData(null);
+            }
             int commandType = CommandType.COMMAND;
             final String commandTypeValue = (String) 
parameters.get(COMMAND_TYPE);
             if (commandTypeValue != null)
@@ -391,13 +403,9 @@
             WrappedTargetException
     {
         int oldParameterCount = 0;
-        final ArrayList masterValues = (ArrayList) 
parameters.get(MASTER_VALUES);
-        if (masterValues != null && !masterValues.isEmpty())
-        {
-            // Vector masterColumns = (Vector) 
parameters.get("master-columns");
-            final ArrayList detailColumns = (ArrayList) 
parameters.get(DETAIL_COLUMNS);
             final XSingleSelectQueryComposer composer = 
tools.getComposer(commandType, command);
-
+        if (composer != null)
+        {
             // get old parameter count
             final XParametersSupplier paraSup = (XParametersSupplier) 
UnoRuntime.queryInterface(XParametersSupplier.class, composer);
             if (paraSup != null)
@@ -408,6 +416,12 @@
                     oldParameterCount = params.getCount();
                 }
             }
+            final ArrayList masterValues = (ArrayList) 
parameters.get(MASTER_VALUES);
+            if (masterValues != null && !masterValues.isEmpty())
+            {
+                // Vector masterColumns = (Vector) 
parameters.get("master-columns");
+                final ArrayList detailColumns = (ArrayList) 
parameters.get(DETAIL_COLUMNS);
+
             // create the new filter
             final String quote = 
connection.getMetaData().getIdentifierQuoteString();
             final StringBuffer oldFilter = new StringBuffer();
@@ -435,8 +449,6 @@
 
             composer.setFilter(oldFilter.toString());
 
-
-
             final String sQuery = composer.getQuery();
             final XPropertySet rowSetProp = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, rowSet);
             rowSetProp.setPropertyValue(UNO_COMMAND, sQuery);
@@ -449,15 +461,22 @@
                     i < masterValues.size();
                     i++)
             {
-                final Object object = masterValues.get(i);
+                    Object object = masterValues.get(i);
+                    if (object instanceof BigDecimal)
+                    {
+                        object = ((BigDecimal) object).toString();
+                    }
                 para.setObject(oldParameterCount + i + 1, object);
             }
         }
-        return oldParameterCount;
     }
 
-    final XRowSet createRowSet(final String command, final int commandType, 
final Map parameters) throws Exception
+        return oldParameterCount;
+    }
 
+    final XRowSet createRowSet(final String command,
+            final int commandType, final Map parameters)
+            throws Exception
     {
         final XRowSet rowSet = (XRowSet) 
UnoRuntime.queryInterface(XRowSet.class, 
m_cmpCtx.getServiceManager().createInstanceWithContext("com.sun.star.sdb.RowSet",
 m_cmpCtx));
         final XPropertySet rowSetProp = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, rowSet);
@@ -489,27 +508,49 @@
             UnknownPropertyException,
             PropertyVetoException,
             IllegalArgumentException,
-            WrappedTargetException
+            WrappedTargetException,
+            NoSuchElementException
     {
         final StringBuffer order = new 
StringBuffer(getOrderStatement(commandType, command, (ArrayList) 
parameters.get(GROUP_EXPRESSIONS)));
         if (order.length() > 0 && commandType != CommandType.TABLE)
         {
+            String statement = command;
             final XSingleSelectQueryComposer composer = 
tools.getComposer(commandType, command);
-            final String sCurrentSQL = composer.getQuery();
-            // Magic here, read the nice documentation out of the IDL.
-            composer.setQuery(sCurrentSQL);
+            if (composer != null)
+            {
+                statement = composer.getQuery();
+                composer.setQuery(statement);
             final String sOldOrder = composer.getOrder();
             if (sOldOrder.length() > 0)
             {
                 order.append(',');
                 order.append(sOldOrder);
                 composer.setOrder("");
-                final String sQuery = composer.getQuery();
-                rowSetProp.setPropertyValue(UNO_COMMAND, sQuery);
-                rowSetProp.setPropertyValue(UNO_COMMAND_TYPE, new 
Integer(CommandType.COMMAND));
+                    statement = composer.getQuery();
+                }
+            }
+            else
+            {
+                if (commandType == CommandType.QUERY)
+                {
+                    final XQueriesSupplier xSupplyQueries = (XQueriesSupplier) 
UnoRuntime.queryInterface(XQueriesSupplier.class, connection);
+                    final XNameAccess queries = xSupplyQueries.getQueries();
+                    if (queries.hasByName(command))
+                    {
+                        final XPropertySet prop = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, queries.getByName(command));
+                        final String queryCommand = (String) 
prop.getPropertyValue(UNO_COMMAND);
+                        statement = "SELECT * FROM (" + queryCommand + ")";
+                    }
+                }
+                else
+                {
+                    statement = "SELECT * FROM (" + command + ")";
             }
-
+            }
+            rowSetProp.setPropertyValue(UNO_COMMAND, statement);
+            rowSetProp.setPropertyValue(UNO_COMMAND_TYPE, new 
Integer(CommandType.COMMAND));
         }
         rowSetProp.setPropertyValue("Order", order.toString());
     }
 }
+




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to