Refactored to remove code duplication.
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / converters / AbstractConverter.java
diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/converters/AbstractConverter.java b/src/main/java/eu/svjatoslav/meviz/encoder/converters/AbstractConverter.java
new file mode 100755 (executable)
index 0000000..1e5d565
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Meviz - Various tools collection to work with multimedia.
+ * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ */
+
+package eu.svjatoslav.meviz.encoder.converters;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import eu.svjatoslav.meviz.encoder.EncodingOptions;
+
+public abstract class AbstractConverter {
+
+       public abstract String getCommand(File inputFile, File targetFile,
+                       EncodingOptions options);
+
+       public abstract List<String> getSourceFileExtensions();
+
+       public abstract List<String> getTargetFileExtensions();
+
+       /**
+        * For some reasons some encoders require terminal to run. Until this is
+        * resolved, encoder can request for terminal using this method.
+        */
+       public abstract boolean isTerminalMandatory();
+
+       public boolean supportsSource(final String format) {
+               return getSourceFileExtensions().contains(format);
+       }
+
+       public boolean supportsTarget(final String format) {
+               return getTargetFileExtensions().contains(format);
+       }
+
+       public List<String> toList(final String... strings) {
+               final ArrayList<String> result = new ArrayList<String>();
+
+               for (final String string : strings)
+                       result.add(string);
+
+               return result;
+       }
+}