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

ai.stapi.graphoperations.graphLanguage.graphDescription.graphDescriptionBuilder.specificDescriptionBuilders.positive.AbstractAttributeDescriptionBuilder Maven / Gradle / Ivy

There is a newer version: 0.3.2
Show newest version
package ai.stapi.graphoperations.graphLanguage.graphDescription.graphDescriptionBuilder.specificDescriptionBuilders.positive;

import ai.stapi.graphoperations.graphLanguage.graphDescription.GraphDescription;
import ai.stapi.graphoperations.graphLanguage.graphDescription.graphDescriptionBuilder.specificDescriptionBuilders.SpecificGraphDescriptionBuilder;
import ai.stapi.graphoperations.graphLanguage.graphDescription.specific.positive.AttributeDescriptionParameters;
import ai.stapi.graphoperations.graphLanguage.graphDescription.specific.positive.PositiveGraphDescription;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public abstract class AbstractAttributeDescriptionBuilder
    extends AbstractPositiveDescriptionBuilder {
  
  private String attributeName;

  protected abstract PositiveGraphDescription buildAttributeDescription(
      AttributeDescriptionParameters parameters,
      List children
  );

  public abstract String getSupportedStructureTypeId();

  @Override
  public abstract boolean represents(GraphDescription graphDescription);

  @Override
  public abstract PositiveGraphDescription copyWithNewChildren(
      GraphDescription graphDescription,
      List newChildren
  );

  @Override
  public abstract AbstractAttributeDescriptionBuilder getCopy();

  @Override
  public PositiveGraphDescription build() {
    var children = this.getChildren().stream()
        .map(SpecificGraphDescriptionBuilder::build)
        .collect(Collectors.toCollection(ArrayList::new));
    return this.buildAttributeDescription(
        new AttributeDescriptionParameters(attributeName),
        children
    );
  }

  @Override
  public AbstractPositiveDescriptionBuilder setValues(GraphDescription graphDescription) {
    var params = (AttributeDescriptionParameters) graphDescription.getParameters();
    this.setAttributeName(params.getAttributeName());
    return this;
  }

  public AbstractAttributeDescriptionBuilder setAttributeName(String attributeName) {
    this.attributeName = attributeName;
    return this;
  }

  public String getAttributeName() {
    return attributeName;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy