97dd7c90c832c12baf5bda46a29f96362f16ed2a
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / converters / AbstractConverter.java
1 /*
2  * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko.
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5
6
7 package eu.svjatoslav.meviz.encoder.converters;
8
9 import eu.svjatoslav.meviz.encoder.EncodingOptions;
10
11 import java.io.File;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.List;
15
16 public abstract class AbstractConverter {
17
18     public abstract String getCommand(File inputFile, File targetFile,
19                                       EncodingOptions options, String targetFormat);
20
21     public abstract List<String> getSourceFileExtensions();
22
23     public abstract List<String> getTargetFileExtensions();
24
25     /**
26      * For some reasons some encoders require terminal to run. Until this is
27      * resolved, encoder can request for terminal using this method.
28      */
29     public abstract boolean isTerminalMandatory();
30
31     public boolean supportsSource(final String format) {
32         return getSourceFileExtensions().contains(format);
33     }
34
35     public boolean supportsTarget(final String format) {
36         return getTargetFileExtensions().contains(format);
37     }
38
39     List<String> toList(final String... strings) {
40         final ArrayList<String> result = new ArrayList<>();
41
42         Collections.addAll(result, strings);
43
44         return result;
45     }
46 }