Package org.openstreetmap.osmosis.xml.v0_6.impl

Source Code of org.openstreetmap.osmosis.xml.v0_6.impl.LegacyBoundElementProcessor

// This software is released into the Public Domain.  See copying.txt for details.
package org.openstreetmap.osmosis.xml.v0_6.impl;

import org.xml.sax.Attributes;

import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
import org.openstreetmap.osmosis.core.container.v0_6.BoundContainer;
import org.openstreetmap.osmosis.core.domain.v0_6.Bound;
import org.openstreetmap.osmosis.core.task.v0_6.Sink;
import org.openstreetmap.osmosis.xml.common.BaseElementProcessor;

/**
* Provides an element processor implementation for a node.
*
* @author Karl Newman
*/
public class LegacyBoundElementProcessor extends SourceElementProcessor {
  private static final String ATTRIBUTE_NAME_BOX = "box";
  private static final String ATTRIBUTE_NAME_ORIGIN = "origin";

  private Bound bound;


  /**
   * Creates a new instance.
   *
   * @param parentProcessor
   *            The parent of this element processor.
   * @param sink
   *            The sink for receiving processed data.
   * @param enableDateParsing
   *            If true, dates will be parsed from xml data, else the current date will be used
   *            thus saving parsing time.
   */
  public LegacyBoundElementProcessor(BaseElementProcessor parentProcessor,
          Sink sink,
          boolean enableDateParsing) {
    super(parentProcessor, sink, enableDateParsing);
  }


  /**
   * {@inheritDoc}
   */
  @Override
  public void begin(Attributes attributes) {
    String boxString;
    String origin;
    String[] boundStrings;
    Double right;
    Double left;
    Double top;
    Double bottom;
   
    boxString = attributes.getValue(ATTRIBUTE_NAME_BOX);
   
    if (boxString == null) {
      throw new OsmosisRuntimeException("Missing required box attribute of bound element");
    }
    boundStrings = boxString.split(",");
    if (boundStrings.length != 4) {
      throw new OsmosisRuntimeException("Badly formed box attribute of bound element");
    }
    try {
      bottom = Double.parseDouble(boundStrings[0]);
      left = Double.parseDouble(boundStrings[1]);
      top = Double.parseDouble(boundStrings[2]);
      right = Double.parseDouble(boundStrings[3]);
    } catch (NumberFormatException e) {
      throw new OsmosisRuntimeException("Can't parse box attribute of bound element", e);
    }
    origin = attributes.getValue(ATTRIBUTE_NAME_ORIGIN);
    if (origin == null || origin.equals("")) {
      throw new OsmosisRuntimeException("Origin attribute of bound element is empty or missing.");
    }
    bound = new Bound(right, left, top, bottom, origin);
  }


  /**
   * {@inheritDoc}
   */
  @Override
  public void end() {
    getSink().process(new BoundContainer(bound));
    bound = null;
  }

}
TOP

Related Classes of org.openstreetmap.osmosis.xml.v0_6.impl.LegacyBoundElementProcessor

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.