public static EDLController createEDLController(
     EDocLiteAssociation edlAssociation,
     EDLGlobalConfig edlGlobalConfig,
     DocumentRouteHeaderValue document) {
   EDLController edlController = createEDLController(edlAssociation, edlGlobalConfig);
   try {
     Document defaultDom = edlController.getDefaultDOM();
     Document documentDom = XmlHelper.readXml(document.getDocContent());
     // get the data node and import it into our default DOM
     Element documentData = (Element) documentDom.getElementsByTagName(EDLXmlUtils.DATA_E).item(0);
     if (documentData != null) {
       Element defaultDomEDL = EDLXmlUtils.getEDLContent(defaultDom, false);
       Element defaultDomData =
           (Element) defaultDomEDL.getElementsByTagName(EDLXmlUtils.DATA_E).item(0);
       defaultDomEDL.replaceChild(defaultDom.importNode(documentData, true), defaultDomData);
     }
     if (LOG.isDebugEnabled()) {
       LOG.debug(
           "Created default Node from document id "
               + document.getDocumentId()
               + " content "
               + XmlJotter.jotNode(defaultDom));
     }
   } catch (Exception e) {
     throw new WorkflowRuntimeException(
         "Problems creating controller for EDL "
             + edlAssociation.getEdlName()
             + " document "
             + document.getDocumentId(),
         e);
   }
   return edlController;
 }
  public static EDLController createEDLController(
      EDocLiteAssociation edlAssociation, EDLGlobalConfig edlGlobalConfig) {
    EDLController edlController = new EDLController();
    edlController.setEdocLiteAssociation(edlAssociation);

    try {
      edlController.setEdlGlobalConfig(edlGlobalConfig);
      edlController.setDefaultDOM(getDefaultDOM(edlAssociation));
      loadConfigProcessors(edlController, edlGlobalConfig);
      loadPreProcessors(edlController, edlGlobalConfig);
      loadPostProcessor(edlController, edlGlobalConfig);
      loadStateComponents(edlController, edlGlobalConfig);
      loadStyle(edlController);

    } catch (Exception e) {
      String edl = null;
      if (edlAssociation != null) {
        edl = edlAssociation.getEdlName();
      }
      String message = "Error creating controller for EDL" + (edl == null ? "" : ": " + edl);
      LOG.error(message, e);
      throw new WorkflowRuntimeException("Problems creating controller for EDL: " + edl, e);
    }

    return edlController;
  }
  private static synchronized void loadConfigProcessors(
      final EDLController edlController, final EDLGlobalConfig edlGlobalConfig) throws Exception {
    EDocLiteAssociation edlAssociation = edlController.getEdocLiteAssociation();
    // these are classes mapped to the conf element from the edlconfig.
    Document document = getEDLService().getDefinitionXml(edlAssociation);
    Element definitionElement = (Element) document.getFirstChild();

    Map configProcessorMappings = new LinkedHashMap();
    edlController.setEdlGlobalConfig(edlGlobalConfig);
    NodeList edlDefinitionNodes = definitionElement.getChildNodes();
    for (int i = 0; i < edlDefinitionNodes.getLength(); i++) {
      Node definitionNode = edlDefinitionNodes.item(i);
      Class configProcessorClass = edlGlobalConfig.getConfigProcessor(definitionNode);
      if (configProcessorClass != null) {
        configProcessorMappings.put(definitionNode, configProcessorClass);
      }
    }
    edlController.setConfigProcessors(
        cloneConfigMap(configProcessorMappings, edlController.getDefaultDOM()));
  }
 private static synchronized void loadStateComponents(
     EDLController edlController, EDLGlobalConfig edlGlobalConfig) {
   edlController.setStateComponents(
       cloneConfigMap(edlGlobalConfig.getStateComponents(), edlController.getDefaultDOM()));
 }
 private static synchronized void loadPostProcessor(
     EDLController edlController, EDLGlobalConfig edlGlobalConfig) {
   edlController.setPostProcessors(
       cloneConfigMap(edlGlobalConfig.getPostProcessors(), edlController.getDefaultDOM()));
 }
 private static synchronized void loadStyle(EDLController edlController) throws Exception {
   EDocLiteService edlService = getEDLService();
   final Templates styleSheet =
       edlService.getStyleAsTranslet(edlController.getEdocLiteAssociation().getStyle());
   edlController.setStyle(styleSheet);
 }