Package org.openstreetmap.osmosis.core.container.v0_6

Source Code of org.openstreetmap.osmosis.core.container.v0_6.EntityContainerBuilder

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

import org.openstreetmap.osmosis.core.domain.v0_6.EntityBuilder;
import org.openstreetmap.osmosis.core.domain.v0_6.NodeBuilder;
import org.openstreetmap.osmosis.core.domain.v0_6.RelationBuilder;
import org.openstreetmap.osmosis.core.domain.v0_6.WayBuilder;
import org.openstreetmap.osmosis.core.task.v0_6.Sink;
import org.openstreetmap.osmosis.core.task.v0_6.Source;


/**
* Provides a mechanism to manipulate entities without directly manipulating and instantiating their
* containers. This class does nothing by default, sub-classes must override methods to add their
* own functionality
*
* @author Brett Henderson
*
* @deprecated The builder classes are not required because entities are now writeable.
*/
@Deprecated
public class EntityContainerBuilder implements EntityProcessor, Source {

  private Sink sink;
  private NodeBuilder nodeBuilder;
  private WayBuilder wayBuilder;
  private RelationBuilder relationBuilder;

  /**
   * Creates a new instance.
   */
  public EntityContainerBuilder() {
    nodeBuilder = new NodeBuilder();
    wayBuilder = new WayBuilder();
    relationBuilder = new RelationBuilder();
  }

  /**
   * Performs generic entity processing. This should be overridden by
   * implementations wishing to perform generic entity processing.
   *
   * @param builder
   *            The entity builder to be processed.
   * @return True if modifications were made to the entity builder during
   *         processing.
   */
  protected boolean processEntity(EntityBuilder<?> builder) {
    return false;
  }

  /**
   * Performs node specific processing. This should be overridden by
   * implementations wishing to perform node processing.
   *
   * @param entityBuilder
   *            The entity builder to be processed.
   * @return True if modifications were made to the entity builder during
   *         processing.
   */
  protected boolean processNode(NodeBuilder entityBuilder) {
    return false;
  }

  /**
   * Performs way specific processing. This should be overridden by
   * implementations wishing to perform way processing.
   *
   * @param entityBuilder
   *            The entity builder to be processed.
   * @return True if modifications were made to the entity builder during
   *         processing.
   */
  protected boolean processWay(WayBuilder entityBuilder) {
    return false;
  }

  /**
   * Performs relation specific processing. This should be overridden by
   * implementations wishing to perform relation processing.
   *
   * @param entityBuilder
   *            The entity builder to be processed.
   * @return True if modifications were made to the entity builder during
   *         processing.
   */
  protected boolean processRelation(RelationBuilder entityBuilder) {
    return false;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void process(BoundContainer boundContainer) {
    sink.process(boundContainer);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void process(NodeContainer nodeContainer) {
    boolean modified;
   
    nodeBuilder.initialize(nodeContainer.getEntity());
   
    modified = false;
    modified = modified || processEntity(nodeBuilder);
    modified = modified || processNode(nodeBuilder);
   
    if (modified) {
      sink.process(new NodeContainer(nodeBuilder.buildEntity()));
    } else {
      sink.process(nodeContainer);
    }
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void process(WayContainer wayContainer) {
    boolean modified;
   
    wayBuilder.initialize(wayContainer.getEntity());
   
    modified = false;
    modified = modified || processEntity(wayBuilder);
    modified = modified || processWay(wayBuilder);
   
    if (modified) {
      sink.process(new WayContainer(wayBuilder.buildEntity()));
    } else {
      sink.process(wayContainer);
    }
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void process(RelationContainer relationContainer) {
    boolean modified;
   
    relationBuilder.initialize(relationContainer.getEntity());
   
    modified = false;
    modified = modified || processEntity(relationBuilder);
    modified = modified || processRelation(relationBuilder);
   
    if (modified) {
      sink.process(new RelationContainer(relationBuilder.buildEntity()));
    } else {
      sink.process(relationContainer);
    }
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void setSink(Sink sink) {
    this.sink = sink;
  }
}
TOP

Related Classes of org.openstreetmap.osmosis.core.container.v0_6.EntityContainerBuilder

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.