SenceParser.java :  » Graphics-3D-2D-OpenGL » xrace-sa » com » sa » xrace » client » objects » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » xrace sa 
xrace sa » com » sa » xrace » client » objects » SenceParser.java
package com.sa.xrace.client.objects;
import java.util.ArrayList;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.tree.DefaultElement;

public class SenceParser {

  private SenceObj sence;
  private Document doc ;
  public SenceParser(Document doc) {
    if (doc != null) {
      this.doc = doc;
      sence = getSenceObj();
    }
  }
  
  public SenceObj getScene()
  {
    return this.sence;
  }

  // get Sence Object
  public SenceObj getSenceObj() {
    SenceObj senceTemp = new SenceObj();
    senceTemp.setName(getSenceName());
    senceTemp.setLModelList(getModelList());
    return senceTemp;
  }

  private ArrayList<ModelObj> getModelList() {
    ArrayList<ModelObj> modelListTemp = new ArrayList<ModelObj>();
    Element root =(Element) doc.getRootElement();
    ModelObj mObjTemp = null;
    Iterator it = root.elementIterator("Model");
    while(it.hasNext()){
      Element eModel = (Element)it.next();
      mObjTemp = new ModelObj();  
      //set all attributes
      mObjTemp.setFilename(eModel.attribute(0).getValue());
      mObjTemp.setID(eModel.attribute(1).getValue());
      mObjTemp.setType(eModel.attribute(2).getValue());
      mObjTemp.setScale(eModel.attribute(3).getValue());
      mObjTemp.setRadius((Float.parseFloat(eModel.attribute(4).getValue())));
      //setLocation
      if(eModel.element("Location") != null){
        mObjTemp.setLocation(getLocation(eModel.element("Location")));    
      }
      modelListTemp.add(mObjTemp);
    }
    return modelListTemp;
  }
  
  private LocationObj getLocation(Element eLocationTemp) {    
    LocationObj locationTemp = new LocationObj();
    int locationSize = Integer.parseInt(eLocationTemp.attribute(0).getValue());
    locationTemp.setSize(locationSize);
    
    if(locationSize > 0){
      Point[] allPointTemp = new Point[locationSize];
      Iterator it = eLocationTemp.elementIterator("point");        
      Point pTemp = null;
      int i = 0;
      while (it.hasNext()){
        pTemp = new Point();
        Element ePoint = (Element)it.next();
        pTemp.setX(Float.parseFloat(ePoint.attribute(0).getValue()));
        pTemp.setY(Float.parseFloat(ePoint.attribute(1).getValue()));
        pTemp.setZ(Float.parseFloat(ePoint.attribute(2).getValue()));
        pTemp.setAngle(Float.parseFloat(ePoint.attribute(3).getValue()));
        allPointTemp[i] = pTemp;
        i++;
      }
      locationTemp.setPoint(allPointTemp);
      return locationTemp;
    }else{
      return locationTemp;
    }  
  }

  private String getSenceName() {
    Node nSence = this.doc.selectSingleNode("//Scene");
    DefaultElement eSence = (DefaultElement) nSence;
    return eSence.attribute(0).getValue();
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.