All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.apis.support.mapping.PropertyMapper Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.apis.support.mapping;

import edu.colorado.cires.cmg.mvt.VectorTile;
import edu.colorado.cires.cmg.mvt.adapt.jts.IUserDataConverter;
import edu.colorado.cires.cmg.mvt.adapt.jts.UserDataKeyValueMapConverter;
import edu.colorado.cires.cmg.mvt.build.MvtLayerProps;
import java.util.Collection;
import org.opentripplanner.inspector.vector.KeyValue;

/**
 * This class is used for adding data for each object in the vector layer from the userData in the
 * geometry.
 *
 * @param  is type of userData in the geometry.
 * @see UserDataKeyValueMapConverter
 */
public abstract class PropertyMapper implements IUserDataConverter {

  public void addTags(
    Object userData,
    MvtLayerProps layerProps,
    VectorTile.Tile.Feature.Builder featureBuilder
  ) {
    if (userData != null) {
      for (var e : map((T) userData)) {
        if (e.key() != null && e.value() != null) {
          final int valueIndex = layerProps.addValue(e.value());

          if (valueIndex >= 0) {
            featureBuilder.addTags(layerProps.addKey(e.key()));
            featureBuilder.addTags(valueIndex);
          }
        }
      }
    }
  }

  /**
   * The return type is to allow null values.
   */
  protected abstract Collection map(T input);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy