Package org.openiaml.docs.generation

Source Code of org.openiaml.docs.generation.DocumentationGenerator

/**
*
*/
package org.openiaml.docs.generation;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.openiaml.docs.generation.LoadFileMetrics.FileMetricAccumulator;
import org.openiaml.docs.generation.semantics.HandleExampleTag;
import org.openiaml.docs.generation.semantics.HandleImplementationTag;
import org.openiaml.docs.generation.semantics.HandleInferenceTag;
import org.openiaml.docs.generation.semantics.HandleOperationalTag;
import org.openiaml.docs.generation.semantics.ITagHandler;
import org.openiaml.docs.modeldoc.ModelDocumentation;
import org.openiaml.docs.modeldoc.ModeldocFactory;
import org.openiaml.docs.modeldoc.ModeldocPackage;
import org.openiaml.model.drools.CreateMissingElementsWithDrools;
import org.openiaml.model.model.ModelPackage;

/**
* Collects documentation information from multiple sources into a
* modeldoc model.
*
* @author jmwright
*
*/
public class DocumentationGenerator {
 
  private List<ITagHandler> semanticTagHandlers;
 
  public List<ITagHandler> getSemanticTagHandlers() {
    return semanticTagHandlers;
  }
   
  public ModelDocumentation createDocumentation() throws Exception {
    final ModeldocFactory factory = ModeldocFactory.eINSTANCE;
   
    final ModelDocumentation root = factory.createModelDocumentation();
   
    // create Semantics handlers
    semanticTagHandlers = new ArrayList<ITagHandler>();
    semanticTagHandlers.add(new HandleOperationalTag(root, factory));
    semanticTagHandlers.add(new HandleInferenceTag(root, factory));
    semanticTagHandlers.add(new HandleImplementationTag(root, factory));
    semanticTagHandlers.add(new HandleExampleTag(root, factory,
          "examples" /* plugin */));
   
    // load all EMF classes
    {
      ILoader loader = new LoadEMFClasses(
          ModelPackage.eINSTANCE,
          "org.openiaml.model",
          "org.openiaml.model.",
          this
      );
      loader.load(factory, root);
    }

    // load additional documentation
    {
      ILoader loader = new LoadEMFDescription(
          "../org.openiaml.model/model/docs" /* doc base */,
          "org.openiaml.model" /* plugin */,
          "model.docs" /* package base */,
          this
      );
      loader.load(factory, root);
    }
   
    // set up inheritance
    {
      ILoader loader = new LoadInheritance();
      loader.load(factory, root);
    }

    // set up references
    {
      ILoader loader = new LoadEMFReferences(this);
      loader.load(factory, root);
    }
   
    // get all constraints
    {
      ILoader loader = new LoadOAWConstraints(
          "../org.openiaml.model.codegen.php/src/metamodel/Checks.chk",
          "org.openiaml.model.codegen.php",
          "src.metamodel",
          "Checks.chk"
      );
      loader.load(factory, root);
    }
   
    // get all model extensions
    {
      ILoader loader = new LoadOAWExtensions(
          "../org.openiaml.model.codegen.php/src/metamodel/Extensions.ext",
          "org.openiaml.model.codegen.php",
          "src.metamodel",
          "Extensions.ext"
      );
      loader.load(factory, root);
    }
    {
      ILoader loader = new LoadOAWExtensions(
          "../org.openiaml.model.codegen.php/src/template/GeneratorExtensions.ext",
          "org.openiaml.model.codegen.php",
          "src.template",
          "GeneratorExtensions.ext"
      );
      loader.load(factory, root);
    }
   
    // load all test cases for operational semantics
    {
      ILoader loader = new LoadSemanticsFromTests(
          new File("../org.openiaml.model.tests/src/org") /* source folder */,
          "org.openiaml.model.tests" /* plugin */,
          "org" /* starting package */,
          this
      );
      loader.load(factory, root);
   
   
    // load all rule files for inference semantics
    {
      ILoader loader = new LoadSemanticsFromRules(
          new CreateMissingElementsWithDrools(null, false) /* engine */,
          "org.openiaml.model.drools" /* plugin */,
          "../org.openiaml.model.drools/" /* engine base */,
          this
      );
      loader.load(factory, root);
    }
   
    // load all OAW templates for implementation notes
    {
      ILoader loader = new LoadOAWImplementationNotes(
          new File("../org.openiaml.model.codegen.php/src/template") /* source folder */,
          "org.openiaml.model.codegen.php" /* plugin */,
          "template" /* starting package */,
          this
      );
      loader.load(factory, root);
    }
   
    // get all icons
    {
      ILoader loader = new LoadIcons(
          new File("../org.openiaml.model.edit/icons/full/obj16/") /* icon base */,
          "org.openiaml.model.edit" /* plugin */,
          "icons.full.obj16" /* package base */
      );
      loader.load(factory, root);
    }

    // get all icons
    {
      ILoader loader = new LoadGMFEditors(
          new File("../org.openiaml.model.tests.elements/") /* editor base */,
          "org.openiaml.model.tests.elements" /* plugin */,
          "" /* package base */
      );
      loader.load(factory, root);
    }

    // get all metrics
    {
      ILoader loader = new LoadMetamodelMetrics(
          ModelPackage.eINSTANCE /* root package */
      );
      loader.load(factory, root);
    }
   
    // get all metrics of the Modeldoc package
    {
      ILoader loader = new LoadMetamodelMetrics(
          ModeldocPackage.eINSTANCE, /* modeldoc package */
          "Modeldoc"
      );
      loader.load(factory, root);
    }
   
    // file metrics
    {
      FileMetricAccumulator acc = new FileMetricAccumulator();
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model/") /* file root */,
            "org.openiaml.model" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.codegen.php/") /* file root */,
            "org.openiaml.model.codegen.php" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.drools/") /* file root */,
            "org.openiaml.model.drools" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.runtime/") /* file root */,
            "org.openiaml.model.runtime" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.tests/") /* file root */,
            "org.openiaml.model.tests" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.tests.diagram/") /* file root */,
            "org.openiaml.model.tests.diagram" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
     
      // publish total metrics
      acc.publish(factory, root);
    }
   
    // file metrics of just /src folders in tests
    {
      FileMetricAccumulator acc = new FileMetricAccumulator(".src");
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model/src/") /* file root */,
            "org.openiaml.model.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.codegen.php/src/") /* file root */,
            "org.openiaml.model.codegen.php.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.drools/src/") /* file root */,
            "org.openiaml.model.drools.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.runtime/src/") /* file root */,
            "org.openiaml.model.runtime.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.tests/src/") /* file root */,
            "org.openiaml.model.tests.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
      {
        LoadFileMetrics loader = new LoadFileMetrics(
            new File("../org.openiaml.model.tests.diagram/src/") /* file root */,
            "org.openiaml.model.tests.diagram.src" /* plugin name */
        );
        loader.load(factory, root);
        acc.add(loader);
      }
     
      // publish total metrics
      acc.publish(factory, root);
    }

    return root;
  }
 
}
TOP

Related Classes of org.openiaml.docs.generation.DocumentationGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.