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

com.reprezen.genflow.common.jsonschema.builder.CollectionResourceNode 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.base.Strings;
import com.reprezen.genflow.common.jsonschema.builder.DefinitionsNode;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNodeFactory;
import com.reprezen.genflow.common.jsonschema.builder.NamedSchemaNode;
import com.reprezen.genflow.common.jsonschema.builder.ObjectResourceNode;
import com.reprezen.genflow.common.jsonschema.builder.ReferenceLinkNode;
import com.reprezen.genflow.common.jsonschema.builder.ResourceLinkNode;
import com.reprezen.rapidml.CollectionRealizationEnum;
import com.reprezen.rapidml.CollectionResource;
import com.reprezen.rapidml.ReferenceLink;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import org.eclipse.emf.common.util.EList;

@SuppressWarnings("all")
public class CollectionResourceNode extends NamedSchemaNode {
  public static class CollectionResourceArrayItemNode extends ObjectResourceNode {
    public CollectionResourceArrayItemNode(final JsonSchemaNodeFactory director, final ServiceDataResource element) {
      super(director, element);
    }
    
    @Override
    public void writeBody(final ObjectNode node) {
      CollectionRealizationEnum _resourceRealizationKind = ((CollectionResource) this.element).getResourceRealizationKind();
      boolean _equals = Objects.equal(_resourceRealizationKind, 
        CollectionRealizationEnum.EMBEDDED_OBJECT_LIST);
      if (_equals) {
        super.writeBody(node);
      } else {
      }
    }
    
    @Override
    public String getName() {
      if ((this.element.isWithDefaultRealization() && Strings.isNullOrEmpty(this.element.getRealizationName()))) {
        return this.factory.createStructureNode(this.element.getDataType()).getName();
      }
      String _collectionResourceName = CollectionResourceNode.getCollectionResourceName(this.element);
      return (_collectionResourceName + "_item");
    }
  }
  
  public static class ObjectResourceLinkNode extends ReferenceLinkNode {
    public ObjectResourceLinkNode(final JsonSchemaNodeFactory director, final ReferenceLink element) {
      super(director, element);
    }
    
    @Override
    public boolean isArrayProperty() {
      return false;
    }
  }
  
  public CollectionResourceNode(final JsonSchemaNodeFactory director, final ServiceDataResource element) {
    super(director, element);
  }
  
  @Override
  public String getName() {
    return CollectionResourceNode.getCollectionResourceName(this.element);
  }
  
  private static String getCollectionResourceName(final ServiceDataResource resource) {
    String _xblockexpression = null;
    {
      if ((resource.isWithDefaultRealization() && (!Strings.isNullOrEmpty(resource.getRealizationName())))) {
        return resource.getRealizationName();
      }
      _xblockexpression = resource.getName();
    }
    return _xblockexpression;
  }
  
  @Override
  public void writeBody(final ObjectNode node) {
    final ObjectNode items = node.put("type", "array").putObject("items");
    final CollectionResourceNode.CollectionResourceArrayItemNode arrayItemNode = new CollectionResourceNode.CollectionResourceArrayItemNode(this.factory, this.element);
    if (this.factory.schemaFormat.inlineSimpleTypes) {
      arrayItemNode.writeBody(items);
    } else {
      CollectionRealizationEnum _resourceRealizationKind = ((CollectionResource) this.element).getResourceRealizationKind();
      boolean _equals = Objects.equal(CollectionRealizationEnum.REFERENCE_LINK_LIST, _resourceRealizationKind);
      if (_equals) {
        EList _referenceLinks = this.element.getReferenceLinks();
        for (final ReferenceLink hyperlink : _referenceLinks) {
          DefinitionsNode _definitionsNode = this.factory.getDefinitionsNode();
          ResourceDefinition _targetResource = hyperlink.getTargetResource();
          ResourceLinkNode _resourceLinkNode = new ResourceLinkNode(this.factory, _targetResource);
          _definitionsNode.addReferenceToDefinition(items, _resourceLinkNode);
        }
      } else {
        this.factory.getDefinitionsNode().addReferenceToDefinition(items, arrayItemNode);
      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy