fixed a bug in the suffix handling

This commit is contained in:
hneemann 2019-07-11 09:34:13 +02:00
parent e0b8254f54
commit 17354d9de5
2 changed files with 31 additions and 3 deletions

View File

@ -5,6 +5,7 @@
*/ */
package de.neemann.digital.gui; package de.neemann.digital.gui;
import de.neemann.digital.analyse.quinemc.TableRows;
import de.neemann.digital.lang.Lang; import de.neemann.digital.lang.Lang;
import de.neemann.gui.ErrorMessage; import de.neemann.gui.ErrorMessage;
@ -12,12 +13,27 @@ import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashSet;
/** /**
* Helper to handle the overwrite conformation * Helper to handle the overwrite conformation
* <p> * <p>
*/ */
public final class SaveAsHelper { public final class SaveAsHelper {
private static final HashSet<String> 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 Component parent;
private final JFileChooser fc; private final JFileChooser fc;
private final String suffix; private final String suffix;
@ -102,8 +118,13 @@ public final class SaveAsHelper {
String name = filename.getName(); String name = filename.getName();
int p = name.lastIndexOf('.'); int p = name.lastIndexOf('.');
if (p >= 0 && p == name.length() - 4) if (p >= 0) {
String suf = name.substring(p + 1).toLowerCase();
if (KNOWN.contains(suf))
name = name.substring(0, p); 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); return new File(filename.getParentFile(), name + "." + suffix);
} }

View File

@ -12,10 +12,17 @@ import java.io.File;
public class SaveAsHelperTest extends TestCase { public class SaveAsHelperTest extends TestCase {
public void testCheckSuffix() { 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.dig"), "dig").getName());
assertEquals("test.dig", SaveAsHelper.checkSuffix(new File("test.svg"), "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").getName());
assertEquals("test.main.dig", SaveAsHelper.checkSuffix(new File("test.main.dig"), "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());
} }
} }