ConvertCommand.java
package org.docascode.api;
import org.apache.commons.io.FilenameUtils;
import org.docascode.api.core.converter.*;
import org.docascode.api.core.errors.DocAsCodeException;
import org.docascode.api.event.Event;
import java.io.File;
public class ConvertCommand extends DocAsCodeCommand<File> {
private File fromFile;
public ConvertCommand from(File fromFile){
this.fromFile=fromFile;
return this;
}
private File toFile;
public ConvertCommand to(File toFile){
this.toFile=toFile;
return this;
}
@Override
public File call() throws DocAsCodeException {
AbstractConverter driver = new NotSupportedConversionDriver();
String sourceExtension = FilenameUtils.getExtension(fromFile.getPath());
String targetExtension = FilenameUtils.getExtension(toFile.getPath());
Event converterEvent = new Event(this)
.setMessage(String.format(
"No driver to convert %s to %s.",
fromFile,
toFile
))
.setLevel(Event.Level.INFO);
switch (sourceExtension) {
case "docx":
switch (targetExtension){
case "md":
converterEvent = new Event(this)
.setMessage(String.format(
"Converting %s to %s.",
fromFile,
toFile
));
driver = new PandocDriver();
break;
case "pdf":
converterEvent = new Event(this)
.setMessage(String.format(
"Converting %s to %s.",
fromFile,
toFile
));
driver = new DocxToPdfDriver();
break;
default:
break;
}
break;
default:
break;
}
fireEvent(converterEvent);
driver.fromFile(fromFile)
.toFile(toFile)
.convert();
return null;
}
}