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

com.reprezen.genflow.common.jsonschema.builder.ReferenceLinkNode Maven / Gradle / Ivy

package com.reprezen.genflow.common.jsonschema.builder;

import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Objects;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNodeFactory;
import com.reprezen.genflow.common.jsonschema.builder.NamedSchemaNode;
import com.reprezen.genflow.common.jsonschema.builder.ReferenceTreatmentNode;
import com.reprezen.rapidml.CollectionRealizationLevelEnum;
import com.reprezen.rapidml.Feature;
import com.reprezen.rapidml.ReferenceLink;
import com.reprezen.rapidml.util.TagUtils;
import java.util.List;

@SuppressWarnings("all")
public class ReferenceLinkNode extends ReferenceTreatmentNode {
  public ReferenceLinkNode(final JsonSchemaNodeFactory director, final ReferenceLink element) {
    super(director, element);
  }
  
  @Override
  public void writeType(final ObjectNode node) {
    boolean _isPresent = TagUtils.getTagWithName(this.element, TagUtils.WITH_DEFAULT_OBJECT_REALIZATION).isPresent();
    if (_isPresent) {
      final NamedSchemaNode resourceLinkNode = this.factory.createDefaultLinkNode(this.element);
      this.factory.getDefinitionsNode().addReferenceToDefinition(node, resourceLinkNode);
    } else {
      this.setObjectAsType(node);
      this.addVendorExtensions(node, this._extensionsHelper.getRapidExtensions(this.element));
      final ObjectNode propertiesNode = node.putObject("properties");
      final List requiredProperties = Lists.newArrayList();
      Iterables.addAll(requiredProperties, this.getRequiredPropertyNames(this.element.getReferenceRealization()));
      this.factory.addRapidLink(propertiesNode, requiredProperties, this.element);
      this.writeRequiredProperties(node, requiredProperties);
      List _includedPrimitiveProperties = this._zenModelHelper.getIncludedPrimitiveProperties(this.element);
      for (final Feature prop : _includedPrimitiveProperties) {
        this.factory.createFeatureNode(prop).write(propertiesNode);
      }
    }
  }
  
  @Override
  public boolean isArrayProperty() {
    return (this.isMultiValued() && (Objects.equal(this.element.getCollectionRealizationLevel(), CollectionRealizationLevelEnum.ITEM_LEVEL) || ReferenceLinkNode.isLinkToCollectionWithItemBasedProperties(this.element)));
  }
  
  public static boolean isLinkToCollectionWithItemBasedProperties(final ReferenceLink element) {
    return (Objects.equal(element.getCollectionRealizationLevel(), CollectionRealizationLevelEnum.COLLECTION_LEVEL) && 
      (!element.getReferenceRealization().getProperties().getAllIncludedProperties().isEmpty()));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy