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

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

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

import com.fasterxml.jackson.databind.node.ObjectNode;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNodeFactory;
import com.reprezen.genflow.common.jsonschema.builder.NamedSchemaNode;
import com.reprezen.rapidml.Feature;
import com.reprezen.rapidml.NamedLinkDescriptor;
import com.reprezen.rapidml.PropertyRealization;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import java.util.List;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.ListExtensions;

@SuppressWarnings("all")
public class ResourceLinkNode extends NamedSchemaNode {
  public ResourceLinkNode(final JsonSchemaNodeFactory director, final ResourceDefinition element) {
    super(director, element);
  }
  
  @Override
  public String getName() {
    String _name = this.element.getName();
    final String link = (_name + "_link");
    if (((this.element instanceof ServiceDataResource) && (((ServiceDataResource) this.element).getDefaultLinkDescriptor() != null))) {
      NamedLinkDescriptor _defaultLinkDescriptor = ((ServiceDataResource) this.element).getDefaultLinkDescriptor();
      return ((NamedLinkDescriptor) _defaultLinkDescriptor).getName();
    }
    return link;
  }
  
  @Override
  public void writeBody(final ObjectNode node) {
    this.setObjectAsType(node);
    this.addVendorExtensions(node, this._extensionsHelper.getRapidExtensions(this.element));
    final ObjectNode propertiesNode = node.putObject("properties");
    final ObjectNode rapidLink = propertiesNode.putObject(this.factory.getRapidLinkPropertyName());
    final NamedSchemaNode rapidLinkNode = this.factory.createRapidLinkNode();
    this.factory.getDefinitionsNode().addReferenceToDefinition(rapidLink, rapidLinkNode);
    if (((this.element instanceof ServiceDataResource) && (((ServiceDataResource) this.element).getDefaultLinkDescriptor() != null))) {
      final Function1 _function = (PropertyRealization it) -> {
        return it.getBaseProperty();
      };
      List _map = ListExtensions.map(((ServiceDataResource) this.element).getDefaultLinkDescriptor().getAllIncludedProperties(), _function);
      for (final Feature prop : _map) {
        this.factory.createFeatureNode(prop).write(propertiesNode);
      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy