private List<PSystemFactory> getAllFactories() {
   final List<PSystemFactory> factories = new ArrayList<PSystemFactory>();
   factories.add(new SequenceDiagramFactory());
   factories.add(new ClassDiagramFactory());
   factories.add(new ActivityDiagramFactory());
   factories.add(new DescriptionDiagramFactory());
   factories.add(new StateDiagramFactory());
   factories.add(new ActivityDiagramFactory3());
   factories.add(new CompositeDiagramFactory());
   factories.add(new ObjectDiagramFactory());
   factories.add(new PostIdDiagramFactory());
   factories.add(new PrintSkinFactory());
   factories.add(new PSystemLicenseFactory());
   factories.add(new PSystemVersionFactory());
   factories.add(new PSystemDonorsFactory());
   factories.add(new PSystemListFontsFactory());
   factories.add(new PSystemOpenIconicFactory());
   factories.add(new PSystemListOpenIconicFactory());
   factories.add(new PSystemSaltFactory(DiagramType.SALT));
   factories.add(new PSystemSaltFactory(DiagramType.UML));
   factories.add(new PSystemDotFactory(DiagramType.DOT));
   factories.add(new PSystemDotFactory(DiagramType.UML));
   if (License.getCurrent() == License.GPL) {
     factories.add(new PSystemDitaaFactory(DiagramType.DITAA));
     factories.add(new PSystemDitaaFactory(DiagramType.UML));
     factories.add(new PSystemJcckitFactory(DiagramType.JCCKIT));
     factories.add(new PSystemJcckitFactory(DiagramType.UML));
     factories.add(new PSystemLogoFactory());
     factories.add(new PSystemSudokuFactory());
     factories.add(new PSystemTuringFactory());
   }
   factories.add(new PSystemCreoleFactory());
   factories.add(new PSystemEggFactory());
   factories.add(new PSystemAppleTwoFactory());
   factories.add(new PSystemRIPFactory());
   factories.add(new PSystemLostFactory());
   factories.add(new PSystemPathFactory());
   factories.add(new PSystemOregonFactory());
   factories.add(new PSystemCharlieFactory());
   if (License.getCurrent() == License.GPL) {
     factories.add(new PSystemXearthFactory());
   }
   factories.add(new PSystemProjectFactory2());
   factories.add(new FlowDiagramFactory());
   factories.add(new PSystemTreeFactory(DiagramType.JUNGLE));
   factories.add(new PSystemCuteFactory(DiagramType.CUTE));
   return factories;
 }
  private String getVersion() {
    final StringBuilder toAppend = new StringBuilder();
    toAppend.append("PlantUML version ");
    toAppend.append(Version.versionString());
    toAppend.append("(" + Version.compileTimeString() + ")\n");
    toAppend.append("(" + License.getCurrent() + " source distribution)\n");
    final Properties p = System.getProperties();
    toAppend.append(p.getProperty("java.runtime.name"));
    toAppend.append('\n');
    toAppend.append(p.getProperty("java.vm.name"));
    toAppend.append('\n');
    toAppend.append(p.getProperty("java.runtime.version"));
    toAppend.append('\n');
    toAppend.append(p.getProperty("os.name"));

    return toAppend.toString();
  }
 public static void printVersion() throws InterruptedException {
   System.out.println(
       "PlantUML version "
           + Version.versionString()
           + " ("
           + new Date(Version.compileTime())
           + ")");
   System.out.println("(" + License.getCurrent() + " source distribution)");
   final Properties p = System.getProperties();
   System.out.println(p.getProperty("java.runtime.name"));
   System.out.println(p.getProperty("java.vm.name"));
   System.out.println(p.getProperty("java.runtime.version"));
   System.out.println(p.getProperty("os.name"));
   System.out.println();
   for (String s : GraphvizUtils.getTestDotStrings(false)) {
     System.out.println(s);
   }
   exit();
 }
 public static void printLicense() throws InterruptedException {
   for (String s : License.getCurrent().getText()) {
     System.out.println(s);
   }
   exit();
 }