From 6d890b27d28828fdaa2c9fa2052f0bf3bf43639b Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sun, 10 May 2009 11:17:13 +0000 Subject: [PATCH] * apply "preserve extension" policy to filename formatter too --- .../sourceforge/filebot/torrent/Torrent.java | 13 ++++----- ...stractFileEntry.java => AbstractFile.java} | 4 +-- .../rename/EpisodeExpressionFormatter.java | 2 +- .../ui/panel/rename/FileNameFormatter.java | 27 ++++++++++++++++--- .../filebot/ui/panel/rename/MatchAction.java | 4 +-- .../ui/panel/rename/MatchFormatter.java | 2 +- .../rename/NamesListTransferablePolicy.java | 3 +-- .../filebot/ui/panel/rename/RenamePanel.java | 5 +++- 8 files changed, 41 insertions(+), 19 deletions(-) rename source/net/sourceforge/filebot/ui/panel/rename/{AbstractFileEntry.java => AbstractFile.java} (80%) diff --git a/source/net/sourceforge/filebot/torrent/Torrent.java b/source/net/sourceforge/filebot/torrent/Torrent.java index dea73e1a..c50106ec 100644 --- a/source/net/sourceforge/filebot/torrent/Torrent.java +++ b/source/net/sourceforge/filebot/torrent/Torrent.java @@ -178,9 +178,10 @@ public class Torrent { public static class Entry { + private final String path; + private final String name; private final long length; - private final String path; public Entry(String name, long length, String path) { @@ -190,6 +191,11 @@ public class Torrent { } + public String getPath() { + return path; + } + + public String getName() { return name; } @@ -200,11 +206,6 @@ public class Torrent { } - public String getPath() { - return path; - } - - @Override public String toString() { return getPath(); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/AbstractFileEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/AbstractFile.java similarity index 80% rename from source/net/sourceforge/filebot/ui/panel/rename/AbstractFileEntry.java rename to source/net/sourceforge/filebot/ui/panel/rename/AbstractFile.java index 357fa8d9..4a1f1af8 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/AbstractFileEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/AbstractFile.java @@ -2,13 +2,13 @@ package net.sourceforge.filebot.ui.panel.rename; -class AbstractFileEntry { +class AbstractFile { private final String name; private final long length; - public AbstractFileEntry(String name, long length) { + public AbstractFile(String name, long length) { this.name = name; this.length = length; } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/EpisodeExpressionFormatter.java b/source/net/sourceforge/filebot/ui/panel/rename/EpisodeExpressionFormatter.java index 71e31281..e185fb8a 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/EpisodeExpressionFormatter.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/EpisodeExpressionFormatter.java @@ -13,7 +13,7 @@ import net.sourceforge.filebot.web.Episode; import net.sourceforge.filebot.web.EpisodeFormat; -public class EpisodeExpressionFormatter extends ExpressionFormat implements MatchFormatter { +class EpisodeExpressionFormatter extends ExpressionFormat implements MatchFormatter { public EpisodeExpressionFormatter(String expression) throws ScriptException { super(expression); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/FileNameFormatter.java b/source/net/sourceforge/filebot/ui/panel/rename/FileNameFormatter.java index 9ed7cb43..8b9d771e 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/FileNameFormatter.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/FileNameFormatter.java @@ -8,11 +8,19 @@ import net.sourceforge.filebot.similarity.Match; import net.sourceforge.tuned.FileUtilities; -public class FileNameFormatter implements MatchFormatter { +class FileNameFormatter implements MatchFormatter { + private final boolean preserveExtension; + + + public FileNameFormatter(boolean preserveExtension) { + this.preserveExtension = preserveExtension; + } + + @Override public boolean canFormat(Match match) { - return match.getValue() instanceof File; + return match.getValue() instanceof File || match.getValue() instanceof AbstractFile; } @@ -24,9 +32,20 @@ public class FileNameFormatter implements MatchFormatter { @Override public String format(Match match) { - File file = (File) match.getValue(); + if (match.getValue() instanceof File) { + File file = (File) match.getValue(); + + return preserveExtension ? FileUtilities.getName(file) : file.getName(); + } - return FileUtilities.getName(file); + if (match.getValue() instanceof AbstractFile) { + AbstractFile file = (AbstractFile) match.getValue(); + + return preserveExtension ? FileUtilities.getNameWithoutExtension(file.getName()) : file.getName(); + } + + // type not supported + throw new IllegalArgumentException("Type not supported"); } } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java b/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java index 71d09816..fb894d3c 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java @@ -63,8 +63,8 @@ class MatchAction extends AbstractAction { @Override protected long getLength(Object object) { - if (object instanceof AbstractFileEntry) { - return ((AbstractFileEntry) object).getLength(); + if (object instanceof AbstractFile) { + return ((AbstractFile) object).getLength(); } return super.getLength(object); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/MatchFormatter.java b/source/net/sourceforge/filebot/ui/panel/rename/MatchFormatter.java index 52d4d18b..31270d3f 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/MatchFormatter.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/MatchFormatter.java @@ -5,7 +5,7 @@ package net.sourceforge.filebot.ui.panel.rename; import net.sourceforge.filebot.similarity.Match; -public interface MatchFormatter { +interface MatchFormatter { public boolean canFormat(Match match); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java b/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java index a4bbee8b..1863fd3d 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java @@ -7,7 +7,6 @@ import static net.sourceforge.filebot.FileBotUtilities.LIST_FILES; import static net.sourceforge.filebot.FileBotUtilities.TORRENT_FILES; import static net.sourceforge.tuned.FileUtilities.FOLDERS; import static net.sourceforge.tuned.FileUtilities.containsOnly; -import static net.sourceforge.tuned.FileUtilities.getNameWithoutExtension; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; @@ -140,7 +139,7 @@ class NamesListTransferablePolicy extends FileTransferablePolicy { Torrent torrent = new Torrent(file); for (Torrent.Entry entry : torrent.getFiles()) { - values.add(new AbstractFileEntry(getNameWithoutExtension(entry.getName()), entry.getLength())); + values.add(new AbstractFile(entry.getName(), entry.getLength())); } } } catch (IOException e) { diff --git a/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java b/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java index bc3bbd13..9bac37c2 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java @@ -80,7 +80,7 @@ public class RenamePanel extends JComponent { renameModel.setPreserveExtension(Boolean.valueOf(Settings.userRoot().get("rename.preserveExtension", "true"))); // filename formatter - renameModel.useFormatter(File.class, new FileNameFormatter()); + renameModel.useFormatter(File.class, new FileNameFormatter(renameModel.preserveExtension())); // restore custom episode formatter renameModel.useFormatter(Episode.class, persistentFormatExpression.getValue()); @@ -220,6 +220,9 @@ public class RenamePanel extends JComponent { public void actionPerformed(ActionEvent evt) { renameModel.setPreserveExtension(activate); + // use different file name formatter + renameModel.useFormatter(File.class, new FileNameFormatter(renameModel.preserveExtension())); + // display changed state filesList.repaint();