From 58c22e49f4cf6547ca00f62ba4e8fe8fec3b8c22 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Tue, 29 Oct 2013 16:08:14 +0000 Subject: [PATCH] fixed bug when opening reports created with reports modeler git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/reports@84599 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../reportgenerator/client/ToolboxPanel.java | 8 +- .../server/servlet/ReportServiceImpl.java | 282 ++++++++---------- src/main/resources/clientlog4j.properties | 11 +- 3 files changed, 134 insertions(+), 167 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java index 7336717..a688deb 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java @@ -29,10 +29,10 @@ public class ToolboxPanel extends SimplePanel { public ToolboxPanel(AppControllerExplorer appController) { this.appController = appController; -// AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); -// this.tp = tp; -// add(tp); -// this.appController.hideSharingFacilities(); //sharing disabled we have problems from Reports + AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); + this.tp = tp; + add(tp); + this.appController.hideSharingFacilities(); //sharing disabled we have problems from Reports } public void showExportedVersion(String id, String fileName) { diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java index baae045..649f43b 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java @@ -237,7 +237,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } catch (ClassNotFoundException ex) { ex.printStackTrace(); } - _log.debug("Converting Imported Fimes to Serializable object, num sectionss: " + toConvert.getSections().size()); + _log.debug("Converting Imported Fimes to Serializable object, num sections: " + toConvert.getSections().size()); return (toConvert); } @@ -252,180 +252,140 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe public Model readModel(String templateName, String templateObjectID, boolean isTemplate, boolean isImporting) { ServiceUtil myUtil = new ServiceUtil(getASLSession()); _log.debug("Reading " + templateName); - if (! ReportConstants.isDeployed) { - Model toConvert = null; + Workspace root = null; + WorkspaceItem item = null; + try { + root = getWorkspaceArea(); + item = root.getItem(templateObjectID); + if (! isImporting) + storeReportItemIDInSession(templateObjectID); - FileInputStream fis = null; - ObjectInputStream in = null; - try { - String path = myUtil.getTemplateFolder(getVreName(), getUsername()); - fis = new FileInputStream(path + "CURRENT_OPEN/CURRENT_OPEN.d4st"); - in = new ObjectInputStream(fis); - toConvert = (Model) in.readObject(); - in.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } catch (ClassNotFoundException ex) { - ex.printStackTrace(); - } - _log.debug("Converting fileToRead to Serializable object"); - return toConvert; + _log.debug("** -> getItem, id: " + templateObjectID + " Name: " + item.getName()); - } else { + } catch (Exception e) { + e.printStackTrace(); + } - Workspace root = null; + String zipToExtract = ""; + if (item.getType() == WorkspaceItemType.FOLDER_ITEM) { + _log.debug("Item is a FolderItem - OK... next step check if is a templet or a report"); - try { - root = getWorkspaceArea(); - } catch (WorkspaceFolderNotFoundException e) { - e.printStackTrace(); - } catch (InternalErrorException e) { - e.printStackTrace(); - } catch (HomeNotFoundException e) { - e.printStackTrace(); - } - - - - WorkspaceItem item = null; - try { - item = root.getItem(templateObjectID); - if (! isImporting) - storeReportItemIDInSession(templateObjectID); - } catch (ItemNotFoundException e) { - e.printStackTrace(); - } - - _log.debug("getItem: " + templateObjectID); - String zipToExtract = ""; - - if (item.getType() == WorkspaceItemType.FOLDER_ITEM) { - - _log.debug("\nItem is a FolderItem"); - - FolderItem bi = (FolderItem) item; - boolean fromBasket = false; - - if (isTemplate) { - if (bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) { - ReportTemplate zippedTemplate = (ReportTemplate) bi; - String zipFilename = ""; - if (! isTemplate) {//then is a report - zipFilename = templateName + "-report.zip"; //gCube report - _log.debug("********************** Reading report -----------------"); - } - else - zipFilename = templateName + ".zip"; //gCube template - - String zipPath = myUtil.getTemplatePath(templateName, getVreName(), getUsername()); - fromBasket = getTemplateFromBasket(zippedTemplate, zipPath, zipFilename); - zipToExtract = zipPath + zipFilename; - } - } - - if (bi.getFolderItemType() == FolderItemType.REPORT) { - - _log.debug("Item is a REPORT"); - Report zippedTemplate = (Report) bi; + FolderItem bi = (FolderItem) item; + boolean fromBasket = false; + if (isTemplate) { + if (bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) { + ReportTemplate zippedTemplate = (ReportTemplate) bi; String zipFilename = ""; if (! isTemplate) {//then is a report - zipFilename = templateName + "-report.zip"; //d4science template - _log.debug("********************** Reading report -----------------"); + zipFilename = templateName + "-report.zip"; //gCube report + _log.debug("********************** Reading template -----------------"); } else - zipFilename = templateName + ".zip"; //d4science template - - File toDelete = new File(zipFilename); - toDelete.delete(); + zipFilename = templateName + ".zip"; //gCube template String zipPath = myUtil.getTemplatePath(templateName, getVreName(), getUsername()); - fromBasket = getReportFromBasket(zippedTemplate, zipPath, zipFilename); + fromBasket = getTemplateFromBasket(zippedTemplate, zipPath, zipFilename); zipToExtract = zipPath + zipFilename; } - - if (bi.getFolderItemType() == FolderItemType.REPORT || bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) { - - if (fromBasket) { - File toExtract = new File(zipToExtract); - File outputDir = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername()) ); - ZipUtil.unzipArchive(toExtract, outputDir); - - String templatePath = myUtil.getTemplatePath(templateName, getVreName(), getUsername()); - - String modelFilename = ""; - try { - modelFilename = seekModel(templatePath, templateName); - } catch (FileNotFoundException e) { e.printStackTrace(); } - - String fileToRead = templatePath + modelFilename + ".d4st" ; - - //TODO: check - // String fileToCheck = templatePath + "gCube-label.d4s" ; //lo deve anche cancellare - // File file2Check = new File(fileToCheck); - // Logger.debug("Checking: " + fileToCheck); - // if (! file2Check.exists()) { - // Logger.debug("Not Found: " + fileToCheck); - // return new SerializableModel(950); - // } else { - // file2Check.delete(); - // } - - - _log.debug("Loading fileToRead from Disk"); - - Model toReturn = null; - Model toConvert = null; - - FileInputStream fis = null; - ObjectInputStream in = null; - try { - fis = new FileInputStream(fileToRead); - in = new ObjectInputStream(fis); - toConvert = (Model) in.readObject(); - in.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } catch (ClassNotFoundException ex) { - ex.printStackTrace(); - } - _log.debug("Converting fileToRead to Serializable object"); - toReturn = (toConvert); - - // changes the template name model - toReturn.setTemplateName(templateName); - - File toDelete1 = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername())); - boolean deleted1 = toDelete1.delete(); - - - File toDelete2 = new File(zipToExtract); - boolean deleted2 = toDelete2.delete(); - - _log.debug("dirToDelete: " + toDelete1 + " result: " + deleted1 + " \n\n\n"); - - _log.debug("dirToDelete: " + toDelete2 + " result: " + deleted2 + " \n\n\n"); - - //**** IMPORTANT **** - if (! isImporting) { - storeTemplateInSession(toReturn); - _log.debug("storeTemplateInSession DONE"); - } - - AccessLogger log = AccessLogger.getAccessLogger(); - OpenReportLogEntry logEntry = new OpenReportLogEntry(toReturn.getTemplateName(), templateObjectID); - log.logEntry(getASLSession().getUsername(), getASLSession().getScopeName(), logEntry); - - return toReturn; - } - } - _log.error("FAILED TO READ RETURING EMPTY Serializable Template"); - return new Model(); } - _log.error("FAILED TO READ FROM BASKET RETURING EMPTY Serializable Template"); + + if (bi.getFolderItemType() == FolderItemType.REPORT) { + + _log.debug("Item is a REPORT"); + Report zippedTemplate = (Report) bi; + + String zipFilename = ""; + if (! isTemplate) {//then is a report + zipFilename = templateName + "-report.zip"; //gCube report + _log.debug(" Reading report -----------------"); + } + else + zipFilename = templateName + ".zip"; //d4science template + + File toDelete = new File(zipFilename); + toDelete.delete(); + + String zipPath = myUtil.getTemplatePath(templateName, getVreName(), getUsername()); + fromBasket = getReportFromBasket(zippedTemplate, zipPath, zipFilename); + zipToExtract = zipPath + zipFilename; + } + + _log.info("\n\n** zipToExtract: " + zipToExtract); + + if (bi.getFolderItemType() == FolderItemType.REPORT || bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) { + + if (fromBasket) { + File toExtract = new File(zipToExtract); + File outputDir = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername()) ); + ZipUtil.unzipArchive(toExtract, outputDir); + + String templatePath = myUtil.getTemplatePath(templateName, getVreName(), getUsername()); + + String modelFilename = ""; + try { + modelFilename = seekModel(templatePath, templateName); + } catch (FileNotFoundException e) { e.printStackTrace(); } + + String fileToRead = templatePath + modelFilename + ".d4st" ; + + _log.debug("Loading fileToRead from Disk -> " + fileToRead); + + Model toReturn = null; + Model toConvert = null; + + FileInputStream fis = null; + ObjectInputStream in = null; + try { + fis = new FileInputStream(fileToRead); + in = new ObjectInputStream(fis); + toConvert = (Model) in.readObject(); + in.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } catch (ClassNotFoundException ex) { + ex.printStackTrace(); + } + _log.debug("Converting fileToRead to Serializable object"); + toReturn = (toConvert); + + // changes the template name model + toReturn.setTemplateName(templateName); + + File toDelete = new File(fileToRead); //to delete the file extracted from the workspace + + File toDelete1 = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername())); + boolean deleted1 = toDelete1.delete(); + + + File toDelete2 = new File(zipToExtract); + boolean deleted2 = toDelete2.delete(); + + boolean deleted = toDelete.delete(); + _log.debug("deleting extracted file: " + fileToRead + " result: " + deleted); + _log.debug("dirToDelete: " + toDelete1 + " result: " + deleted1); + _log.debug("dirToDelete: " + toDelete2 + " result: " + deleted2); + + //**** IMPORTANT **** + if (! isImporting) { + storeTemplateInSession(toReturn); + _log.debug("storeTemplateInSession DONE"); + } + + AccessLogger log = AccessLogger.getAccessLogger(); + OpenReportLogEntry logEntry = new OpenReportLogEntry(toReturn.getTemplateName(), templateObjectID); + log.logEntry(getASLSession().getUsername(), getASLSession().getScopeName(), logEntry); + + return toReturn; + } + } + _log.error("FAILED TO READ RETURING EMPTY Serializable Template"); return new Model(); } + _log.error("FAILED TO READ FROM BASKET RETURING EMPTY Serializable Template"); + return new Model(); + } @@ -770,11 +730,11 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } if (data != null) { _log.debug("Encoding image in base64"); - byte[] imageBytes = IOUtils.toByteArray(data); + byte[] imageBytes = IOUtils.toByteArray(data); String extension = getImageExtension(imageItem); String srcAttrValue = "data:image/"+extension+";base64,"+DatatypeConverter.printBase64Binary(imageBytes); _log.debug("Encoded image=" + srcAttrValue); - return srcAttrValue; + return srcAttrValue; } return null; } @@ -785,7 +745,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return null; } } - + /** * return a string for the file extension given a mimetype * diff --git a/src/main/resources/clientlog4j.properties b/src/main/resources/clientlog4j.properties index a4f0d7c..2248fe1 100644 --- a/src/main/resources/clientlog4j.properties +++ b/src/main/resources/clientlog4j.properties @@ -3,8 +3,15 @@ log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout # Print the date in ISO 8601 format -log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n +log4j.appender.A1.layout.ConversionPattern=%d %-5p %c - %m%n # Print only messages of level TRACE or above in the package org.gcube log4j.logger.org.gcube=TRACE -log4j.logger.org.gcube.application.framework.core.session=INFO \ No newline at end of file +log4j.logger.org.gcube.application.framework.core.session=INFO +log4j.logger.org.gcube.contentmanager=ERROR +log4j.logger.org.gcube.common.scope=ERROR +log4j.logger.org.gcube.contentmanagement=ERROR +log4j.logger.org.gcube.resources.discovery.icclient=ERROR +log4j.logger.org.gcube.common.clients=ERROR +log4j.logger.org.gcube.common.homelibrary.jcr=ERROR +log4j.logger.org.gcube.application.framework.accesslogger=ERROR