Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Export from datasource

    Hello,

    In smartGWT 2.5 I used this way to export some results and everything was fine.

    final DSRequest exportRequest = new DSRequest();
    exportRequest.setExportAs(ExportFormat.CSV);
    exportRequest.setExportDisplay(ExportDisplay.DOWNLOAD);
    exportRequest.setExportDelimiter(";");
    DataSource ds = DataSource.get("...");
    Criteria criteria = new Criteria(); criteria.addCriteria(...);
    ds.exportData(criteria, exportRequest);

    Now in smartGWT 3.0 I tried to change a little bit because ds.exportData(criteria, exportRequest);
    is not available anymore, so I tried :
    ds.exportData(criteria, exportRequest, new DSCallback() {
    @Override
    public void execute(DSResponse response, Object rawData, DSRequest request) {
    SC.say("Here need to start download");
    }
    });

    But this code is not executed and I received the exception:
    java.lang.ClassCastException: persistence.entities.ExportEntity cannot be cast to java.util.Map.
    I don't understand what I need to change here, because in 2.5 version this code works very good.

    Please tell me what need to do to be able to run the export in 3.0 version.

    Best regards,
    Marius

    #2
    Please provide the information indicatee in the FAQ. Right now there's no way of telling whether this is even a client or server-side error.

    Comment


      #3
      This is the entire error log message:
      === 2012-01-23 15:56:29,787 [l0-3] DEBUG DSRequest - [builtinApplication.ANRExport_fetch] Clobbering existing FreeResourcesHandler of type 'datasource.ANRExportDataSource' with a '.datasource.ANRExportDataSource'
      === 2012-01-23 15:56:29,880 [l0-4] INFO RequestContext - URL: '/CoreModule/sc/skins/Enterprise/images/ListGrid/sort_descending.png', User-Agent: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; IE0006_ver1;EN_US)': MSIE with Accept-Encoding header, ready for compressed JS
      === 2012-01-23 15:56:29,880 [l0-4] INFO Download - done streaming: .../src/main/webapp/CoreModule/sc/skins/Enterprise/images/ListGrid/sort_descending.png
      === 2012-01-23 15:56:29,880 [l0-4] INFO RequestContext - URL: '/CoreModule/sc/skins/Enterprise/images/ListGrid/header_menu.png', User-Agent: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; IE0006_ver1;EN_US)': MSIE with Accept-Encoding header, ready for compressed JS
      === 2012-01-23 15:56:29,880 [l0-4] INFO Download - done streaming: ...3/src/main/webapp/CoreModule/sc/skins/Enterprise/images/ListGrid/header_menu.png
      AAA 23.01.2012 15:56:29:896 [13] INFO logging.DefaultLogger.log: Rolling back transaction...
      AAA 23.01.2012 15:56:29:896 [13] INFO logging.DefaultLogger.log: Rolling back transaction...
      === 2012-01-23 15:56:29,896 [l0-3] INFO DSResponse - [builtinApplication.ANRExport_fetch] DSResponse: List with 1 items
      === 2012-01-23 15:56:29,896 [l0-3] DEBUG JPADataSource - Rolling back current transaction.
      === 2012-01-23 15:56:29,896 [l0-3] DEBUG JPADataSource - Releasing entity manager.
      === 2012-01-23 15:56:29,896 [l0-3] ERROR IDACall - Error executing operation: ANRExport_fetch
      java.lang.ClassCastException: persistence.entities.ExportEntity cannot be cast to java.util.Map
      at com.isomorphic.rpc.DataExport.exportResultSet(DataExport.java:484)
      at com.isomorphic.rpc.DataExport.exportResultSet(DataExport.java:389)
      at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:979)
      at com.isomorphic.rpc.RPCManager.send(RPCManager.java:582)
      at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156)
      at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
      at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      === 2012-01-23 15:56:29,896 [l0-3] DEBUG JPADataSource - Rolling back current transaction.
      === 2012-01-23 15:56:29,896 [l0-3] ERROR IDACall - Top-level servlet error:
      java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
      at com.isomorphic.rpc.DataExport.exportResultSet(DataExport.java:484)
      at com.isomorphic.rpc.DataExport.exportResultSet(DataExport.java:389)
      at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:979)
      at com.isomorphic.rpc.RPCManager.send(RPCManager.java:582)
      at com.isomorphic.rpc.RPCManager.sendFailure(RPCManager.java:665)
      at com.isomorphic.rpc.RPCManager.sendFailure(RPCManager.java:686)
      at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:162)
      at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
      at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      Last edited by mariusc; 23 Jan 2012, 07:00.

      Comment


        #4
        Hello Isomorphic,
        Are the details enough to give me some ideas?

        Thank you.

        Comment


          #5
          This was a regression introduced by a fairly recent enhancement. It has now been corrected - the fix will be present in nightly 3.1d builds as of today (25 Jan).

          Comment


            #6
            Thank you so much.

            Comment


              #7
              There is still a bug. The header is present also on the last line. Please correct this. Thank you.

              Comment


                #8
                Can you clarify - what is repeated? Is this a header from the ListGrid, your own programmatically set header, something else?

                Comment


                  #9
                  regression still in place in the latest 5.1-d20150202-SNAPSHOT

                  Here is the code on the server side of my DMI call:

                  public DSResponse exportReport(DSRequest req) throws Exception {
                  Map<String, String> r = req.getClientSuppliedCriteria();
                  String invoicecode = r.get("invoiceCode");
                  DSResponse resp = new DSResponse(req);
                  Workbook wb = ReportingBL.INSTANCE.invoiceReport2XLS(invoicecode);
                  resp.setExportObject(wb);
                  resp.setExportFilename(invoicecode + ".xls");
                  //resp.setSuccess();
                  return resp;
                  }

                  The error I am getting says the same:

                  java.lang.ClassCastException: persistence.entities.ExportEntity cannot be cast to java.util.Map

                  I can send a lot more details but I believe it is clear it is a bug because the DMI export works like a charm in smartgwt version 3.1-p20141002 but not in 5.1-d20150202-SNAPSHOT.

                  Comment


                    #10
                    Please go ahead and share the complete details. Also let us know exactly what kind of object "Workbook" is and whether you are using a different version of POI than what ships with 5.1.

                    Note that things can break across versions if your usage was always incorrect, but just happened to work anyway in a prior version.

                    Comment


                      #11
                      Hi,

                      as I said I am using 5.1-d20150202-SNAPSHOT and the poi library is inserted as a dependency of smartgwt, I think the library I can see on the project's target directory is 3.8.

                      The details:

                      On the client side

                      downloadReportButton.addClickHandler(new ClickHandler() {

                      @Override
                      public void onClick(ClickEvent event) {
                      ListGridRecord r=invoiceListGrid.getSelectedRecord();
                      Criterion crit=new Criterion("invoiceCode",OperatorId.EQUALS,r.getAttributeAsString("invoiceCode"));
                      Notification n=NotificationWindow.addNotification("exportReport", " Generando informe para factura " + r.getAttributeAsString("invoiceCode"));
                      ActionCallback cb=new ActionCallback(n);

                      DSRequest req = new DSRequest();
                      req.setOperationId("exportReport");
                      req.setData(r);
                      req.setExportAs(ExportFormat.XLS);
                      DataSource.get("Invoice").exportData(crit,req,cb);
                      }
                      });

                      The .ds



                      <OperationBinding operationType="fetch" operationId="exportReport">
                      <serverObject>
                      <className>com.admin.gwt.server.InvoiceOperations</className>
                      <lookupStyle>new</lookupStyle>
                      </serverObject>
                      <serverMethod>exportReport</serverMethod>
                      <exportResults>true</exportResults>
                      <exportAs>xls</exportAs>
                      </OperationBinding>

                      On the server side:

                      public DSResponse exportReport(DSRequest req) throws Exception {
                      Map<String, String> r = req.getClientSuppliedCriteria();
                      String invoicecode = r.get("invoiceCode");
                      DSResponse resp = new DSResponse(req);
                      Workbook wb = ReportingBL.INSTANCE.invoiceReport2XLS(invoicecode);
                      resp.setExportObject(wb);
                      resp.setExportFilename(invoicecode + ".xls");
                      //resp.setSuccess();
                      return resp;
                      }

                      I can debug the code and wb is different from null on the last line. See the following log:

                      === 2015-02-27 17:02:58,534 [ec-1] INFO IDACall - Performing 1 operation(s)
                      Feb 27, 2015 5:02:58 PM com.admin.Invoicing.ReportingBL invoiceReport2XLS
                      INFO: Generating Excel report for invoice FRA2015-02_001
                      http-bio-8080-exec-1 INFO common.Version - HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
                      http-bio-8080-exec-1 INFO hibernate.Version - HHH000412: Hibernate Core {4.1.6.Final}
                      http-bio-8080-exec-1 INFO cfg.Environment - HHH000206: hibernate.properties not found
                      http-bio-8080-exec-1 INFO cfg.Environment - HHH000021: Bytecode provider name : javassist
                      http-bio-8080-exec-1 INFO internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in connection pool (not for production use!)
                      http-bio-8080-exec-1 INFO internal.DriverManagerConnectionProviderImpl - HHH000115: Hibernate connection pool size: 0
                      http-bio-8080-exec-1 INFO internal.DriverManagerConnectionProviderImpl - HHH000006: Autocommit mode: true
                      http-bio-8080-exec-1 INFO internal.DriverManagerConnectionProviderImpl - HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/xdbPRO]
                      http-bio-8080-exec-1 INFO internal.DriverManagerConnectionProviderImpl - HHH000046: Connection properties: {user=root, password=****, autocommit=true, release_mode=auto}
                      http-bio-8080-exec-1 INFO dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
                      http-bio-8080-exec-1 INFO internal.LobCreatorBuilder - HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
                      http-bio-8080-exec-1 INFO internal.TransactionFactoryInitiator - HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
                      http-bio-8080-exec-1 INFO ast.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory
                      Hibernate: select invoice0_.id as id4_,
                      (...)
                      Feb 27, 2015 5:03:03 PM com.admin.dao.GenericHibernateDao commitTransaction
                      INFO: commit: OK
                      === 2015-02-27 17:08:13,162 [ec-1] ERROR IDACall - com.isomorphic.servlet.IDACall top-level exception
                      java.lang.ClassCastException: com.isomorphic.datasource.DSRequest cannot be cast to java.util.Map
                      at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1050)
                      at com.isomorphic.rpc.RPCManager.send(RPCManager.java:690)
                      at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:180)
                      at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:140)
                      at com.isomorphic.servlet.IDACall.doPost(IDACall.java:78)
                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
                      at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:156)
                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
                      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
                      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
                      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
                      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
                      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
                      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
                      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
                      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
                      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                      at java.lang.Thread.run(Thread.java:744)

                      this error does not happen when I use my old 3.1-p20141002 version.

                      Comment


                        #12
                        Isomorphic, would you please confirm whether this is a bug?

                        Thanks

                        Comment

                        Working...
                        X