From 17354d9de53ad21e171d6dfad856a83e9c3d1d4f Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 11 Jul 2019 09:34:13 +0200 Subject: [PATCH] fixed a bug in the suffix handling --- .../de/neemann/digital/gui/SaveAsHelper.java | 25 +++++++++++++++++-- .../neemann/digital/gui/SaveAsHelperTest.java | 9 ++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/SaveAsHelper.java b/src/main/java/de/neemann/digital/gui/SaveAsHelper.java index d64f4bc7b..a7191fc93 100644 --- a/src/main/java/de/neemann/digital/gui/SaveAsHelper.java +++ b/src/main/java/de/neemann/digital/gui/SaveAsHelper.java @@ -5,6 +5,7 @@ */ package de.neemann.digital.gui; +import de.neemann.digital.analyse.quinemc.TableRows; import de.neemann.digital.lang.Lang; import de.neemann.gui.ErrorMessage; @@ -12,12 +13,27 @@ import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; +import java.util.HashSet; /** * Helper to handle the overwrite conformation *

*/ public final class SaveAsHelper { + private static final HashSet KNOWN = new HashSet<>(); + + static { + KNOWN.add("dig"); + KNOWN.add("svg"); + KNOWN.add("vhdl"); + KNOWN.add("v"); + KNOWN.add("hex"); + KNOWN.add("tru"); + KNOWN.add("csv"); + KNOWN.add("gif"); + KNOWN.add("png"); + } + private final Component parent; private final JFileChooser fc; private final String suffix; @@ -102,8 +118,13 @@ public final class SaveAsHelper { String name = filename.getName(); int p = name.lastIndexOf('.'); - if (p >= 0 && p == name.length() - 4) - name = name.substring(0, p); + if (p >= 0) { + String suf = name.substring(p + 1).toLowerCase(); + if (KNOWN.contains(suf)) + name = name.substring(0, p); + while (name.length() > 0 && name.charAt(name.length() - 1) == '.') + name = name.substring(0, name.length() - 1); + } return new File(filename.getParentFile(), name + "." + suffix); } diff --git a/src/test/java/de/neemann/digital/gui/SaveAsHelperTest.java b/src/test/java/de/neemann/digital/gui/SaveAsHelperTest.java index 1345b2c8b..697a19404 100644 --- a/src/test/java/de/neemann/digital/gui/SaveAsHelperTest.java +++ b/src/test/java/de/neemann/digital/gui/SaveAsHelperTest.java @@ -12,10 +12,17 @@ import java.io.File; public class SaveAsHelperTest extends TestCase { public void testCheckSuffix() { + assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test."), "dig").getName()); + assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test"), "dig").getName()); + assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.dig"), "dig").getName()); assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.svg"), "dig").getName()); assertEquals("test.main.dig", SaveAsHelper.checkSuffix(new File("test.main"), "dig").getName()); assertEquals("test.main.dig", SaveAsHelper.checkSuffix(new File("test.main.dig"), "dig").getName()); - assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.mai"), "dig").getName()); + assertEquals("test.mai.dig", SaveAsHelper.checkSuffix(new File("test.mai"), "dig").getName()); + + assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.v"), "dig").getName()); + assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.vhdl"), "dig").getName()); + } } \ No newline at end of file