GpxPoiParser.java :  » UnTagged » yozi » com » robert » maps » kml » XMLparser » Android Open Source

Android Open Source » UnTagged » yozi 
yozi » com » robert » maps » kml » XMLparser » GpxPoiParser.java
package com.robert.maps.kml.XMLparser;

import org.andnav.osm.util.GeoPoint;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.robert.maps.kml.PoiManager;
import com.robert.maps.kml.PoiPoint;

import android.util.*;


public class GpxPoiParser extends DefaultHandler {
  private StringBuilder builder;
  private PoiManager mPoiManager;
  private PoiPoint mPoiPoint;
  private int mCategoryId;
  
  private static final String WPT = "wpt";
  private static final String LAT = "lat";
  private static final String LON = "lon";
  private static final String NAME = "name";
  private static final String CMT = "cmt";
  private static final String DESC = "desc";
  private static final String LONGDESC = "long_description";


  public GpxPoiParser(PoiManager poiManager, int CategoryId) {
    super();
    builder = new StringBuilder();
    mPoiManager = poiManager;
    mCategoryId = CategoryId;
    mPoiPoint = new PoiPoint();
  }

  @Override
  public void characters(char[] ch, int start, int length) throws SAXException {
    builder. append(ch, start, length);
    super.characters(ch, start, length);
  }

  @Override
  public void startElement(String uri, String localName, String name, Attributes attributes)
      throws SAXException {
    builder.delete(0, builder.length());
    if(localName.equalsIgnoreCase(WPT)){
      mPoiPoint = new PoiPoint();
      mPoiPoint.CategoryId = mCategoryId;
      mPoiPoint.GeoPoint = GeoPoint.from2DoubleString(attributes.getValue(LAT), attributes.getValue(LON));
    }
    super.startElement(uri, localName, name, attributes);
  }

  @Override
  public void endElement(String uri, String localName, String name) throws SAXException {

//    Log.d("IMPORT", "tag: " + localName);


    if(localName.equalsIgnoreCase(WPT)){
      if(mPoiPoint.Title.equalsIgnoreCase("")) mPoiPoint.Title = "POI";
      mPoiManager.updatePoi(mPoiPoint);
    }
    else if(localName.equalsIgnoreCase(NAME))
      mPoiPoint.Title = builder.toString().trim();
    else if(localName.equalsIgnoreCase(CMT))
      mPoiPoint.Descr = builder.toString().trim();
    else if(localName.equalsIgnoreCase(DESC))
    {
      if(mPoiPoint.Descr.equals(""))
        mPoiPoint.Descr = builder.toString().trim();
    }
    else if(localName.contains(LONGDESC))
    {
      String htmlString = builder.toString().trim(); 
      String noHTMLString = htmlString.replaceAll("\\<.*?\\>", "\n");
      mPoiPoint.Descr = htmlString;
    }

    super.endElement(uri, localName, name);
  }

}
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.