ConvertCommand.java

  1. package org.docascode.api;

  2. import org.apache.commons.io.FilenameUtils;
  3. import org.docascode.api.core.converter.*;
  4. import org.docascode.api.core.errors.DocAsCodeException;
  5. import org.docascode.api.event.Event;

  6. import java.io.File;

  7. public class ConvertCommand extends DocAsCodeCommand<File> {
  8.     private File fromFile;
  9.     public ConvertCommand from(File fromFile){
  10.         this.fromFile=fromFile;
  11.         return this;
  12.     }

  13.     private File toFile;
  14.     public ConvertCommand to(File toFile){
  15.         this.toFile=toFile;
  16.         return this;
  17.     }

  18.     @Override
  19.     public File call() throws DocAsCodeException {
  20.         AbstractConverter driver = new NotSupportedConversionDriver();
  21.         String sourceExtension = FilenameUtils.getExtension(fromFile.getPath());
  22.         String targetExtension = FilenameUtils.getExtension(toFile.getPath());
  23.         Event converterEvent = new Event(this)
  24.                 .setMessage(String.format(
  25.                         "No driver to convert %s to %s.",
  26.                         fromFile,
  27.                         toFile
  28.                 ))
  29.                 .setLevel(Event.Level.INFO);
  30.         switch (sourceExtension) {
  31.             case "docx":
  32.                 switch (targetExtension){
  33.                     case "md":
  34.                         converterEvent = new Event(this)
  35.                                 .setMessage(String.format(
  36.                                         "Converting %s to %s.",
  37.                                         fromFile,
  38.                                         toFile
  39.                                 ));
  40.                         driver = new PandocDriver();
  41.                         break;
  42.                     case "pdf":
  43.                         converterEvent = new Event(this)
  44.                                 .setMessage(String.format(
  45.                                         "Converting %s to %s.",
  46.                                         fromFile,
  47.                                         toFile
  48.                                 ));
  49.                         driver = new DocxToPdfDriver();
  50.                         break;
  51.                     default:
  52.                         break;
  53.                 }
  54.                 break;
  55.             default:
  56.                 break;
  57.         }
  58.         fireEvent(converterEvent);
  59.         driver.fromFile(fromFile)
  60.                 .toFile(toFile)
  61.                 .convert();
  62.         return null;
  63.     }
  64. }