java - create a zip file. and download it -


i created button allows create zip file., function zips file works correctly, when call via button (in js file) crashes , gives blank page (i think not manage output stream) please idea

(this new modified version (for see same question)

here code :

button

 isc.toolstripbutton.create({     id: "booksapp_getxmlimage_button"     ,autodraw:false     ,icon: getuiicon("icon_xml_16")     ,prompt: getuimsg("book_report_get_xml",4)     ,showhover:true     ,hoverstyle:"book_hover_style"     ,click : function () {         booksapp_action_loadfile("objx");         // isc.say("test");         } }); 

function call zipfile() method:

  function booksapp_action_loadfile(p_usedformat) {         var tmpbookid = booksapp_application.fp_bookid;         var tmpids = booksapp_application.fp_fct_getselectedpovids();         var tmpusr_id = fpiuser.fp_fct_getid();         var tmpformat = p_usedformat;          var showinwindow=false;         books_objects.exportdata(                 {                  r_book_idnum   :   tmpbookid                 ,sbook_id       :   tmpbookid                 ,spov_ids       :   tmpids                 ,suser_id       :   tmpusr_id                 ,sformat        :   tmpformat                 }                 ,{ operationid: "customexport"                      ,exportdisplay: (showinwindow ? "window" : "download") }                 ,function (dsresponse, data, dsrequest) {                     //never called                     booksapp_action_log("booksapp_action_loadfile:"+data);                     }                 );     } 

customexport() function

     public static string customexport(rpcmanager rpc,                       httpservletresponse response) throws exception {                 string sreturn = _return_ok;                 try {                       // setting docustomresponse() notifies rpcmanager we'll                       // bypass rpcmanager.send                       // , instead write directly servletresponse output stream                       rpc.docustomresponse();                       requestcontext.setnocacheheaders(response);                        writeserverdebug("customexport : start");                       dsrequest req = rpc.getdsrequest();                        list<?> results = req.execute().getdatalist();                        string sreqdata = (string) req.getparameter("exportdisplay");                       string sreqdata_sbook_id = "" + req.getcriteriavalue("sbook_id");                       string sreqdata_spov_ids = "" + req.getcriteriavalue("spov_ids");                       string sreqdata_suser_id = "" + req.getcriteriavalue("suser_id");                       string sreqdata_sformat  = "" + req.getcriteriavalue("sformat");                        stringbuilder content = new stringbuilder("get (sreqdata:"                                   + sreqdata + ",sbook_id:" + sreqdata_sbook_id                                   + ",spov_ids:" + sreqdata_spov_ids + ",suser_id:"                                   + sreqdata_suser_id + ",sformat:" + sreqdata_sformat + ")"                                   + results.size() + " line(s):");                        (iterator<?> = results.iterator(); i.hasnext();) {                             map<?, ?> record = (map<?, ?>) i.next();                             content.append("\n" + books.column_idnum + ":"                                        + record.get(books.column_idnum));                             content.append("\n" + books.column_name + ":"                                        + record.get(books.column_name));                       }                        writeserverdebug("the content \n" + content.tostring());                        // create new office engine                       officeengine myofficeengine = new officeengine();                        boolean bisconnected = myofficeengine.get_repositorybridge()                                   .connectsourcedatabase(false);                       if (bisconnected) {                             //connected repository, files                             if (sreqdata_sformat.equalsignorecase("pdf") || sreqdata_sformat.equalsignorecase("pptx")) {                                   //the book end user format                                    string sreturnpptx = myofficeengine.performgeneratepptx(                                              req.gethttpservletrequest(), response,                                              sreqdata_sbook_id, sreqdata_spov_ids,                                              sreqdata_suser_id, sreqdata_sformat);                                   writeserverdebug("customexport call performgeneratepptx, return "+ sreturnpptx);                              }                             else if (sreqdata_sformat.equalsignorecase("objx")) {                                  //string sreturnobjx = myofficeengine.performexport(req.gethttpservletrequest(), response,sreqdata_sbook_id,sreqdata_suser_id,sreqdata_sformat                                    //       );                                 string sreturnpptx = myofficeengine.performexport(req.gethttpservletrequest(), response,sreqdata_sbook_id,sreqdata_suser_id,sreqdata_sformat                                          );                                  writeserverdebug("customexport call performgeneratepptx, return " + sreturnpptx);                              }                             //free connection repository                             myofficeengine.get_repositorybridge().freeconnectionsource();                       } else {                             response.setcontenttype("text/plain");                             response.addheader("content-disposition",                                        "attachment; filename=book.txt");                             servletoutputstream os = response.getoutputstream();                             os.print(content.tostring());                             os.flush();                       }                 } catch (exception e) {                       writeserverdebug("error:" + e.getlocalizedmessage());                       sreturn = repository._return_ko;                 }                 return sreturn;           } 

performexport method :

   public string  performexport(javax.servlet.http.httpservletrequest request,javax.servlet.http.httpservletresponse response,              string p_sbook_id,  string p_suser_id, string p_sformat) {      //public string performexport(string p_sbook_id,  string p_suser_id, string p_sformat) {              string sreturn = _return_ok;                    writeserverdebug("performexport(req,resp,'" + p_sbook_id + "'," + p_suser_id + "," + p_sformat + "):start");                    // ====================================================                   // = template directory                   // ====================================================                   filermanager myfiler = new filermanager();                   string sinputpath = myfiler.getdirectory(                   filermanager.directorykind_users, true);                   // here add tmp directories write xml's structure , zip                   // sinputpath+="tmp";                    // ====================================================                   // = working variables jdbc objects.                   // ====================================================                   connection con = null;                    statement stmt = null;                    resultset rs = null;                    string sql = "";                   // string slogmsg = "loadsourcedatabaseparams():";                   // preparedstatement prepstmttarget = null;                    try {                         writeserverdebug("performexport >> start");                         // ---------------------------------------------------------                         // - establish connection.                         // ---------------------------------------------------------                         con = get_repositorybridge().getsourcedatabaseconnection();                   } catch (exception ex) {                         sreturn = repository._return_ko;                   }                    hashmap<string, object> _hcachebook = new hashmap<string, object>();                   try {                         int isrccount = get_repositorybridge().cachequerydata(                                    "select top(1) * " + books.table + " "                                                + books.column_idnum + "=" + p_sbook_id,                                    _hcachebook, "database_source");                         int icolcount = (integer) (_hcachebook.get("sql_columncount"));                         string scoldesc = (string) (_hcachebook.get("sql_columndesc"));                         string scolvalues = (string) (_hcachebook                                    .get("sql_columnvalues"));                          writeserverdebug("performexport:icolcount=" + icolcount);                         writeserverdebug("performexport:scoldesc=" + scoldesc);                         writeserverdebug("performexport:scolvalues=" + scolvalues);                           (int ilinecounter = 1; ilinecounter <= isrccount; ilinecounter++) {                               (int icolcounter = 1; icolcounter <= icolcount; icolcounter++) {                                    string stmpcolclass = (string) (_hcachebook                                                .get("sql_columndescclass(" + icolcounter + ")"));// return                                     if (stmpcolclass.equals("java.lang.string")) {                                            system.out.println(_hcachebook.get(ilinecounter+"_"+icolcounter));                                    }                                     else if (stmpcolclass.equals("java.lang.integer")) {                                            system.out.println(_hcachebook.get(ilinecounter+"_"+icolcounter));                                     } else if (stmpcolclass.equals("java.lang.double")) {                                            system.out.println(_hcachebook.get(ilinecounter+"_"+icolcounter));                                    }                                  }                          }                         int nbrcol = (integer) (_hcachebook.get("sql_columncount"));                         system.out.println("test nbr col : "+ nbrcol);                         zipoutputstream objx = this.creatxml(nbrcol, 1, _hcachebook);                         response.setheader("content-disposition",                                 "attachment;filename=\testjs.zip\"");                            string scontenttype = "application/vnd.ms-objx";                           response.setcontenttype(scontenttype);                          servletoutputstream outstream = response.getoutputstream();                         outstream.close();                   }                    catch (exception ex) {                         system.out.println("i in exception :");                         ex.printstacktrace();                   }               return sreturn;       } 

i solved problem , here right code

performexport method :

public string  performexport(javax.servlet.http.httpservletrequest request,javax.servlet.http.httpservletresponse response,          string p_sbook_id,  string p_suser_id, string p_sformat) {          string sreturn = _return_ok;             try {                   writeserverdebug("performexport(req,resp,'" + p_sbook_id + "'," + p_suser_id + "," + p_sformat + "):start");                    // ====================================================                   // = template directory                   // ====================================================                   filermanager myfiler = new filermanager();                   string sinputpath = myfiler.getdirectory(                   filermanager.directorykind_users, true);                    // ====================================================                   // = working variables jdbc objects.                   // ====================================================                    connection con = null;                    statement stmt = null;                    resultset rs = null;                    string sql = "";                    try {                         writeserverdebug("performexport >> start");                         // ---------------------------------------------------------                         // - establish connection.                         // ---------------------------------------------------------                         con = _repositorybridge.getsourcedatabaseconnection();                   } catch (exception ex) {                         sreturn = repository._return_ko;                   }                    hashmap<string, object> _hcachebook = new hashmap<string, object>();                   try {                         int isrccount = get_repositorybridge().cachequerydata("select top(1) * " + books.table + " " + books.column_idnum + "=" + p_sbook_id,  _hcachebook, "database_source");                         int icolcount = (integer) (_hcachebook.get("sql_columncount"));                         string scoldesc = (string) (_hcachebook.get("sql_columndesc"));                         string scolvalues = (string) (_hcachebook                                    .get("sql_columnvalues"));                          int nbrcol = (integer) (_hcachebook.get("sql_columncount"));                         string scontenttype = "application/vnd.ms-objx";                         response.setcontenttype(scontenttype);                          servletoutputstream outstream = new servletoutputstream() {                             @override                             public void write(int arg0) throws ioexception {                                 // todo auto-generated method stub                             }                         };                          outstream = response.getoutputstream();                         this.creatxml(nbrcol, 1, _hcachebook, outstream, response );                               outstream.flush();                         outstream.close();                   }                    catch (exception ex) {                         system.out.println("i in exception :");                         ex.printstacktrace();                   }      }             catch (exception e) {                 writeserverdebug("error:" + e.getlocalizedmessage());                 sreturn = repository._return_ko;           }             return sreturn;       } 

creatxml method:

public zipoutputstream creatxml(int nbr_col, int ilinecounter,               hashmap<string, object> h, servletoutputstream out , javax.servlet.http.httpservletresponse response ) throws ioexception {              zipoutputstream zipfile = null;             string bookname = null;             string bookid = null;             int axisid = 11 ;             string templatechild = null;             documentbuilderfactory docfactory = documentbuilderfactory.newinstance();             documentbuilder docbuilder = null;             try {                     writeserverdebug("call function create xml");                     docbuilder = docfactory.newdocumentbuilder();             } catch (parserconfigurationexception e2) {                    e2.printstacktrace();             }             // element : book_objects             string tablename = "book_objects";             org.w3c.dom.document doc = docbuilder.newdocument();             element p_tablename = doc.createelement(tablename);             doc.appendchild(p_tablename);              // element : object             element p_object = doc.createelement("object");             string []platformeversion = javafunctions.convertstringtoarray(repository.portal_version, "=");             p_object.setattribute("version", platformeversion[1]+"  "+getversion());             p_tablename.appendchild(p_object);              string tabcol = (string) (h.get("sql_columndesc"));             string[] colname = javafunctions.convertstringtoarray(tabcol, ", ");             string [][]dep = null;             dep = dependances.sreturndependance();             string [][]colval = new string [9][2];             int c=0;             (int = 1; <= nbr_col; i++) {                    string columnname = colname[i - 1];                   columnname = columnname.replaceall(" ", "");                   columnname = columnname.replace("(", "");                   columnname = columnname.replace(")", "");                    element nomchamps = doc.createelement(columnname);                    string value = "";                   value = "" + h.get(ilinecounter + "_" + i);                   if(columnname.equalsignorecase(books.column_name)){                       bookname = value;                   }                   if(columnname.equalsignorecase(books.column_idnum)){                       bookid = value;                   }                   if(columnname.equalsignorecase(books.column_axis_main_idnum)){                       axisid = (integer) h.get(ilinecounter + "_" + i);                    }                   if(columnname.equalsignorecase(books.column_template_child)){                       templatechild = (string) h.get(ilinecounter + "_" + i);                    }                    //retrieve columns , values dependencies                   for(int cpt=0; cpt<5; cpt++){                         if(dep[cpt][0].equalsignorecase(columnname)){                           colval[c][0]=columnname;                           colval[c][1]= value;                           c++;                         }                   }                     nomchamps.appendchild(doc.createtextnode((string) value));                     p_object.appendchild(nomchamps);              }              string label[] = javafunctions.convertstringtoarray(templatechild, "/");             string path = "c:\\fovea_repository/output/";             file outputdirectory = new file (path);              // create output file             string filename ="exportdirectory"+ bookname +".zip";             response.setheader( "content-disposition", "filename=" + filename );                       transformer tf = null;             try {                    tf = transformerfactory.newinstance().newtransformer();             } catch (transformerconfigurationexception e1) {                    e1.printstacktrace();             }              try {                   // format xml                   tf.setoutputproperty(outputkeys.indent, "yes");                   tf.setoutputproperty(outputkeys.method, "xml");                   tf.setoutputproperty(outputkeys.encoding, "utf-8");                   tf.setoutputproperty("{http://xml.apache.org/xslt}indent-amount","4");                   file directory = new file ("c:/fovea_repository/exportdirectory/");                   if(!directory.exists()){                       directory.delete();                       directory.mkdir();                     }                   domsource source = new domsource(doc);                   streamresult res = new streamresult(new file("c:/fovea_repository/exportdirectory/dependance.xml"));                   tf.transform(source, res);                      //create zip file (export_directory)                   appzip appzip = new appzip();                   string sourcefolder = "c:/fovea_repository/exportdirectory";                    string outputfoler  = " ";                    zipoutputstream returnfile = appzip.zipfile(outputfoler , sourcefolder , out, bookname , bookid);                   zipfile = returnfile;               } catch (transformerexception e) {                   e.printstacktrace();             }             return zipfile;       } 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -