From 401f00bc7350791df580532ccbef559c417a8609 Mon Sep 17 00:00:00 2001 From: Meikel Bisping Date: Thu, 30 Jan 2025 12:18:01 +0100 Subject: [PATCH] Anpassungsmoeglichkeit Exportdateinamen --- src/de/superx/common/Maske.java | 29 ++++++++++++++-------- src/de/superx/servlet/SuperXmlTabelle.java | 12 ++++----- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/de/superx/common/Maske.java b/src/de/superx/common/Maske.java index 9524891..ec51e88 100644 --- a/src/de/superx/common/Maske.java +++ b/src/de/superx/common/Maske.java @@ -2531,17 +2531,24 @@ public class Maske extends NamedIdObject implements Serializable { 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(); - 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 c4eafba..0574d15 100644 --- a/src/de/superx/servlet/SuperXmlTabelle.java +++ b/src/de/superx/servlet/SuperXmlTabelle.java @@ -501,7 +501,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; @@ -921,7 +921,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 @@ -1011,7 +1011,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"); } } @@ -1019,7 +1019,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), @@ -1060,7 +1060,7 @@ public class SuperXmlTabelle extends AbstractSuperXServlet { private void csvExport() throws IOException { StringBuffer csv = maske.getCSV(getMandantenID()); - 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", de.superx.servlet.SuperXManager.csvEncoding); @@ -1860,7 +1860,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());