Class Feature.Builder

java.lang.Object
com.luciad.models.features.Feature.Builder
All Implemented Interfaces:
AutoCloseable
Enclosing class:
Feature

public static final class Feature.Builder extends Object implements AutoCloseable
Allows the incremental creation of a Feature object.

Make sure to

Otherwise a java.lang.IllegalStateException will be thrown.

  • Constructor Details

  • Method Details

    • finalize

      protected void finalize()
      Overrides:
      finalize in class Object
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • build

      @NotNull public Feature build() throws IllegalStateException
      Build the feature using the settings configured.

      After this method is invoked once, this builder can no longer be used.

      Returns:
      the feature
      Throws:
      IllegalStateException - if the id or dataType are not configured
    • id

      @NotNull public Feature.Builder id(long id)
      Configures the id of the feature being built.

      A feature id should be unique across a model.

      This method is not mandatory, though Features in a model must have an id. It is allowed to temporarily have features without id, for example during Feature creation. As soon as such a temporary Feature is added to a model, it must be assigned an id though.

      When no id is set, Feature#getId will throw an exception.

      Parameters:
      id - the id
      Returns:
      this builder
    • resetId

      @NotNull public Feature.Builder resetId()
      Resets the id.

      Calling this method will cause the built Feature to have no id, thus throwing an exception when calling Feature#getId.

      Features in a model must have an id. It is allowed to temporarily have features without id, for example during Feature creation. As soon as such a temporary Feature is added to a model, it must be assigned an id though.

      Note that for a newly created Feature.Builder using the Feature#newBuilder() method, the id will be empty by default. This method is less useful in that case. It is mainly useful when using the Feature#asBuilder() method.

      Returns:
      this builder
      Since:
      2023.1
    • dataType

      @NotNull public Feature.Builder dataType(@NotNull DataType dataType)
      Configures the dataType of the feature being built.

      The DataType needs to be set before value() is called.

      Parameters:
      dataType - the data type
      Returns:
      this builder
    • value

      @NotNull public <T> Feature.Builder value(@NotNull DataPropertyPath propertyPath, @NotNull T value) throws IllegalArgumentException
      Sets the value associated with the given property.

      Example

          featureBuilder.value(booleanPropertyPath, booleanValue);
          featureBuilder.value(intPropertyPath, intValue);
          featureBuilder.value(longPropertyPath, longValue);
          featureBuilder.value(floatPropertyPath, floatValue);
          featureBuilder.value(doublePropertyPath, doubleValue);
          featureBuilder.value(stringPropertyPath, stringValue);
          featureBuilder.value(geometryPropertyPath, geometry);
      
      Type Parameters:
      T - the supported types are java.lang.Boolean, java.lang.Integer, java.lang.Long, java.lang.Float, java.lang.Double, java.lang.String and Geometry
      Parameters:
      propertyPath - the property for which to set the value
      value - the value
      Returns:
      this builder
      Throws:
      IllegalArgumentException - when the dataType has not been configured yet, the property is not of a known type, or if it doesn't exist in the DataType.
    • resetValue

      @NotNull public Feature.Builder resetValue(@NotNull DataPropertyPath propertyPath) throws IllegalArgumentException
      Resets the value associated with the given property.

      Calling this method will cause the built Feature to return an empty optional for the given property.

      Note that for a newly created Feature.Builder using the Feature#newBuilder() method, all values will be empty by default. This method is less useful in that case. It is mainly useful when using the Feature#asBuilder() method.

      Parameters:
      propertyPath - the property for which to reset the value
      Returns:
      this builder
      Throws:
      IllegalArgumentException - when the dataType has not been configured yet, the property is not of a known type, or if it doesn't exist in the DataType.