From 0ca2db28e10a33a5a84362360e812191653807c3 Mon Sep 17 00:00:00 2001 From: Meikel Bisping Date: Thu, 6 Feb 2025 11:42:57 +0100 Subject: [PATCH] sqlvar exportfilename fuer Exportdateinamen auswerten #33694 --- src/de/superx/common/Maske.java | 27 ++++++++++++++-------- src/de/superx/servlet/SuperXmlTabelle.java | 16 ++++++------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/de/superx/common/Maske.java b/src/de/superx/common/Maske.java index afbf0da..3287d38 100644 --- a/src/de/superx/common/Maske.java +++ b/src/de/superx/common/Maske.java @@ -2576,16 +2576,23 @@ public class Maske extends NamedIdObject implements Serializable { } /** - * Normalerweise Maskenname nur bei JasperReports der Stylesheetname - * - * @return - */ - public String getExportName() { - String result = getName(); - if (selectedTableStylesheet != null && selectedTableStylesheet.getFilename().indexOf(".jrxml") > -1) - result = selectedTableStylesheet.getCaption(); - return result; - } + * Normalerweise Maskenname nur bei JasperReports der Stylesheetname + * + * @return + */ + public String getExportName() { + String result = getName(); + if (selectedTableStylesheet != null && selectedTableStylesheet.getFilename().indexOf(".jrxml") > -1) result = selectedTableStylesheet.getCaption(); + if (map.containsKey("exportfilename")) + { + if (map.get("exportfilename")==null||map.get("exportfilename").toString().trim().equals("")) + { + throw new IllegalStateException("Die Maske definiert exportfilename, dieser ist aber leer. Masken-SQL prüfen"); + } + result=map.get("exportfilename").toString(); + } + return result; + } public String getFullTableXml(String mandantenId, SxUser sxuser, HttpServletRequest request, Locale locale) throws TransformerConfigurationException, TemplateException, IOException, SQLException, diff --git a/src/de/superx/servlet/SuperXmlTabelle.java b/src/de/superx/servlet/SuperXmlTabelle.java index 83eddd6..e436732 100644 --- a/src/de/superx/servlet/SuperXmlTabelle.java +++ b/src/de/superx/servlet/SuperXmlTabelle.java @@ -511,7 +511,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { response.reset(); //response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + ".xlsx"); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + ".xlsx"); response.setHeader("Cache-Control", "expires=0"); response.setContentLength(outStream.size()); ServletOutputStream sos; @@ -716,7 +716,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { SuperXManager.setLastXmlMandantid(request.getSession().getAttribute("MandantenID").toString()); XmlTransformer xmlTransformer = new XmlTransformer(getServletConfig(), request, response, getMandantenID(), getBrowser()); xmlTransformer.setMaske(maske); - xmlTransformer.transform(maske.getName(), maske.getTmpFiles(), currentXml, desiredLocale, maske.getSelectedTableStylesheetFilename(), "text/html", + xmlTransformer.transform(maske.getExportName(), maske.getTmpFiles(), currentXml, desiredLocale, maske.getSelectedTableStylesheetFilename(), "text/html", ServletHelper.getParameter(request, "encrypt")); @@ -931,7 +931,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { // neu MB if (maske.getSelectedTableStylesheetFilename() != null && maske.getSelectedTableStylesheetFilename().equals("tabelle_xml.xsl")) { response.setContentType("application/x-xml; charset=" + SqlStringUtils.getEncoding()); - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + ".xml"); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + ".xml"); response.setHeader("Cache-Control", "expires=0"); // hier wird für xml-output localiziert für andere // formate in xmlTransformer könnte @@ -1021,7 +1021,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { // open browser download dialogue response.setContentType("application/x-xml; charset=" + SqlStringUtils.getEncoding()); - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + filename_extension); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + filename_extension); response.setHeader("Cache-Control", "expires=0"); } } @@ -1029,7 +1029,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { getServletConfig(), request, response, getMandantenID(), getBrowser()); xmlTransformer.setMaske(maske); - xmlTransformer.transform(maske.getName(), + xmlTransformer.transform(maske.getExportName(), maske.getTmpFiles(), currentXml, desiredLocale, maske.getSelectedTableStylesheetFilename(), maske.getSelectedTableStylesheetContenttype(contenttype), @@ -1075,7 +1075,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { if (SxPools.get(getMandantenID()).getRepository().containsKey("K_CSV_Excel_ISO")&&SxPools.get(getMandantenID()).getRepository().get("K_CSV_Excel_ISO").toString().equals("1")) { outp = new String(csv.toString().getBytes("iso-8859-1")); - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + ".csv"); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + ".csv"); response.setHeader("Cache-Control", "expires=0"); response.setHeader("ContentType", "text/plain"); //; charset=ISO-8859-1 sendBackIso(csv.toString(), "text/csv; charset=ISO-8859-1"); @@ -1084,7 +1084,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { { //Format bis 2024.06: - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + ".csv"); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + ".csv"); response.setHeader("Cache-Control", "expires=0"); sendBack(csv.toString(), "text/csv"); @@ -1936,7 +1936,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { String filename_extension=".jrxml"; OutputStream out = response.getOutputStream(); // open browser download dialogue - response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getName()) + filename_extension); + response.setHeader("Content-disposition", "attachment; filename=" + FileUtils.removeProblemChars(maske.getExportName()) + filename_extension); response.setHeader("Cache-Control", "expires=0"); String jrxmlFileContent = de.memtext.util.FileUtils.getFileContentsWithEncoding(jrxmlFilePath, SqlStringUtils.getEncoding());