package uk.ac.rhul.cs.cl1.io;
import java.io.File;
import uk.ac.rhul.cs.utils.StringUtils;
/**
* Factory class that constructs {@link ClusteringWriter} objects
*
* @author ntamas
*/
public class ClusteringWriterFactory {
public enum Format {
PLAIN("Cluster list", "txt", "text/plain"),
CSV("CSV-formatted detailed cluster list", "csv", "text/csv"),
GENEPRO("GenePro formatted cluster list", "tab", "text/tab-separated-values");
private String extension;
private String name;
private String mimeType;
Format(String name, String extension, String mimeType) {
this.name = name;
this.extension = extension;
this.mimeType = mimeType;
}
public static Format forFile(File file) {
String extension = StringUtils.getFileExtension(file);
for (Format format: Format.values()) {
if (format.extension.equals(extension))
return format;
}
return null;
}
public String getExtension() {
return extension;
}
public String getMimeType() {
return mimeType;
}
public String getName() {
return name;
}
}
/**
* Constructs a {@link ClusteringWriter} from the given {@link Format}
*
* @param format the format for which we need a {@link ClusteringWriter}
*/
public static ClusteringWriter fromFormat(Format format) {
switch (format) {
case PLAIN:
return new PlainTextClusteringWriter();
case CSV:
return new CSVClusteringWriter();
case GENEPRO:
return new GeneProClusteringWriter();
default:
return null;
}
}
}