Package analysis

Source Code of analysis.FlaDesignFileAnalyser

package analysis;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;

import org.dom4j.Document;
import org.dom4j.Element;

import config.ProjectConfig;

import meta.FlaFileMeta;
import utils.XMLUtils;
import vo.FlaSourceFileVo;

public class FlaDesignFileAnalyser {
  private static FlaDesignFileAnalyser instatnce;

  public static FlaDesignFileAnalyser getInstance() {
    if (instatnce == null) {
      instatnce = new FlaDesignFileAnalyser();
    }
    return instatnce;
  }

  private ArrayList<FlaSourceFileVo> flaSourceFileVoList = new ArrayList<FlaSourceFileVo>(0);

  // ==========
  // == Initialze
  // ==========
  @SuppressWarnings("unchecked")
  public FlaDesignFileAnalyser() {
    // read flaSourceFile , get all the source symbol.
    for (Iterator flaSourceFileMetaIt = ProjectConfig.getInstance().flaSourceFileMetaList.iterator(); flaSourceFileMetaIt.hasNext();) {
      FlaFileMeta meta = (FlaFileMeta) flaSourceFileMetaIt.next();
      flaSourceFileVoList.add(FlaSourceFileAnalyser.analysisFlaSourceFile(meta));
    }
  }

  // ===========
  // == Portal function
  // ===========
  @SuppressWarnings("unchecked")
  public void analysisFlaDesignFile(FlaFileMeta meta, Element partentElement) {
    Element generateComponentElement = partentElement.addElement("Component");

    Document flaDesignFileDoc = XMLUtils.readXml(meta.filePath);
    /*
     * <DOMSymbolItem> <timeline> <DOMTimeline> <layers> ... </layers>
     * </DOMTimeline> </timeline> </DOMSymbolItem>
     */
    Element readRootElement = flaDesignFileDoc.getRootElement().element("timeline").element(
        "DOMTimeline").element("layers");
    for (Iterator layerElementIt = readRootElement.elements("DOMLayer").iterator(); layerElementIt.hasNext();) {
      Element generateLayerElement = generateComponentElement.addElement("layer");
      /*
       * ... <DOMLayer> <frames> <DOMFrame> <elements> </elements>
       * </DOMFrame> </frames> </DOMLayer> ...
       */
      Element layerElement = (Element) layerElementIt.next();
      Element elementsRoot = layerElement.element("frames").element("DOMFrame").element(
          "elements");

      for (Iterator analysElementIt = elementsRoot.elements("DOMSymbolInstance").iterator(); analysElementIt.hasNext();) {
        Element analysElement = (Element) analysElementIt.next();
        // make sure the
        generateChildElementByType(
            analysElement.attributeValue("name"),
            generateLayerElement,
            meta.getFilePathWithoutName() + analysElement.attributeValue("libraryItemName") + ".xml");
      }
    }

  }

  private void generateChildElementByType(String type, Element parentElement, String possiblePath) {
    StringTokenizer analysTokenizer = new StringTokenizer(type, "_");

    String symbolName = analysTokenizer.nextToken();

    String symbolType = analysTokenizer.nextToken();

    String[] symbolAttribute = new String[analysTokenizer.countTokens()];
    int index = 0;
    while (analysTokenizer.hasMoreTokens()) {
      symbolAttribute[index] = analysTokenizer.nextToken();
      index++;
    }

    // startAnalys
    if (symbolType.equals("Symbol")) {
      Document symbolDoc = XMLUtils.readXml(possiblePath);
      // name :: xxx_Symbol_xxx
      SymbolElementAnalyser.analyserSymbolNode(symbolDoc, parentElement, symbolAttribute);
    }

  }

  // =============
  // == Utils function
  // =============
  @SuppressWarnings("unchecked")
  private FlaSourceFileVo findFlaSourceFileVoBySymbolName(String symbolName) {
    for (Iterator flaSourceFileVoIt = flaSourceFileVoList.iterator(); flaSourceFileVoIt.hasNext();) {
      FlaSourceFileVo flaSourceFileVo = (FlaSourceFileVo) flaSourceFileVoIt.next();
      if (flaSourceFileVo.isSymbolInCurrentFile(symbolName)) {
        return flaSourceFileVo;
      }
    }
    return null;
  }

}
TOP

Related Classes of analysis.FlaDesignFileAnalyser

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.