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

com.reprezen.genflow.common.jsonschema.builder.xchange.DefaultLinkNode Maven / Gradle / Ivy

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

import com.fasterxml.jackson.databind.node.ObjectNode;
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.PropertyRealizationNode;
import com.reprezen.rapidml.NamedLinkDescriptor;
import com.reprezen.rapidml.PropertyRealization;
import com.reprezen.rapidml.ReferenceElement;
import com.reprezen.rapidml.ReferenceLink;
import com.reprezen.rapidml.ReferenceProperty;
import com.reprezen.rapidml.ReferenceRealization;
import com.reprezen.rapidml.ReferenceTreatment;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

@SuppressWarnings("all")
public class DefaultLinkNode extends NamedSchemaNode {
  public DefaultLinkNode(final JsonSchemaNodeFactory director, final ReferenceLink element) {
    super(director, element);
  }
  
  @Override
  public String getName() {
    String _realizationName = this.element.getReferenceRealization().getRealizationName();
    boolean _tripleNotEquals = (_realizationName != null);
    if (_tripleNotEquals) {
      return this.element.getReferenceRealization().getRealizationName();
    }
    String _name = this.element.getTargetResource().getName();
    final String link = (_name + "_link");
    if (((this.element.getTargetResource() instanceof ServiceDataResource) && (((ServiceDataResource) this.element.getTargetResource()).getDefaultLinkDescriptor() != null))) {
      ResourceDefinition _targetResource = this.element.getTargetResource();
      NamedLinkDescriptor _defaultLinkDescriptor = ((ServiceDataResource) _targetResource).getDefaultLinkDescriptor();
      return ((NamedLinkDescriptor) _defaultLinkDescriptor).getName();
    }
    return link;
  }
  
  @Override
  public void writeBody(final ObjectNode node) {
    this.setObjectAsType(node);
    final ReferenceRealization realization = this.element.getReferenceRealization();
    ReferenceElement _referenceElement = this.element.getReferenceElement();
    if ((_referenceElement instanceof ReferenceProperty)) {
      ReferenceElement _referenceElement_1 = this.element.getReferenceElement();
      this.addVendorExtensions(node, this._extensionsHelper.getRapidExtensions(((ReferenceProperty) _referenceElement_1)));
    }
    this.addVendorExtensions(node, this._extensionsHelper.getRapidExtensions(this.element));
    final ObjectNode propertiesNode = node.putObject("properties");
    final Function1 _function = (PropertyRealization e) -> {
      boolean _hasReferenceTreatment = this._zenModelHelper.hasReferenceTreatment(realization, e.getBaseProperty());
      return Boolean.valueOf((!_hasReferenceTreatment));
    };
    final Iterable includedProperties = IterableExtensions.filter(realization.getProperties().getAllIncludedProperties(), _function);
    for (final PropertyRealization includedProperty : includedProperties) {
      new PropertyRealizationNode(this.factory, includedProperty).write(propertiesNode);
    }
    EList _referenceTreatments = realization.getReferenceTreatments();
    for (final ReferenceTreatment referenceTreatment : _referenceTreatments) {
      this.factory.createReferenceTreatmentNode(referenceTreatment).inlineOrAddTopLevelNode(propertiesNode);
    }
    final List requiredProperties = Lists.newArrayList(this.getRequiredPropertyNames(realization));
    this.factory.addRapidLink(propertiesNode, requiredProperties, this.element);
    this.writeRequiredProperties(node, requiredProperties);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy