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

com.reprezen.genflow.rapidml.wadl.xtend.WadlHelper Maven / Gradle / Ivy

The newest version!
/**
 * Copyright © 2013, 2016 Modelsolv, Inc.
 * All Rights Reserved.
 * 
 * NOTICE: All information contained herein is, and remains the property
 * of ModelSolv, Inc. See the file license.html in the root directory of
 * this project for further information.
 */
package com.reprezen.genflow.rapidml.wadl.xtend;

import com.google.common.base.Objects;
import com.reprezen.genflow.api.zenmodel.util.CommonServices;
import com.reprezen.rapidml.Element;
import com.reprezen.rapidml.Feature;
import com.reprezen.rapidml.LinkRelation;
import com.reprezen.rapidml.MediaType;
import com.reprezen.rapidml.MessageParameter;
import com.reprezen.rapidml.Parameter;
import com.reprezen.rapidml.PrimitiveProperty;
import com.reprezen.rapidml.PrimitiveTypeSourceReference;
import com.reprezen.rapidml.PropertyRealization;
import com.reprezen.rapidml.PropertyReference;
import com.reprezen.rapidml.ReferenceLink;
import com.reprezen.rapidml.ReferenceProperty;
import com.reprezen.rapidml.SourceReference;
import com.reprezen.rapidml.TypedMessage;
import java.util.Arrays;
import java.util.Collection;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

@SuppressWarnings("all")
public class WadlHelper {
  private final CommonServices commonServices = new CommonServices();
  
  public String getRelValue(final ReferenceLink referenceLink) {
    LinkRelation _linkRelation = referenceLink.getLinkRelation();
    String _name = null;
    if (_linkRelation!=null) {
      _name=_linkRelation.getName();
    }
    return _name;
  }
  
  /**
   * MediaTypeHelpers begin
   */
  public Collection getMediaSuperTypes(final MediaType mediaType) {
    return this.commonServices.getMediaSuperTypes(mediaType);
  }
  
  public boolean supportsJaxb(final MediaType mediaType) {
    return (this.mediaTypeIsKindOf(mediaType, "application/json") || this.isXmlMediaType(mediaType));
  }
  
  public boolean isXmlMediaType(final MediaType mediaType) {
    return this.mediaTypeIsKindOf(mediaType, "application/xml");
  }
  
  public boolean mediaTypeIsKindOf(final MediaType mediaType, final String mediaTypeName) {
    boolean _xblockexpression = false;
    {
      Collection mediaTypesList = this.getMediaSuperTypes(mediaType);
      mediaTypesList.add(mediaType);
      final Function1 _function = (MediaType it) -> {
        String _name = it.getName();
        return Boolean.valueOf(Objects.equal(_name, mediaTypeName));
      };
      _xblockexpression = IterableExtensions.exists(mediaTypesList, _function);
    }
    return _xblockexpression;
  }
  
  /**
   * Parameters Helpers
   */
  public String paramName(final SourceReference sourceReference) {
    return ((PropertyReference) sourceReference).getConceptualFeature().getName();
  }
  
  public Iterable getPrimitiveParameters(final TypedMessage message) {
    final Function1 _function = (MessageParameter it) -> {
      return Boolean.valueOf(this.isPrimitivePropertyParameter(it));
    };
    return IterableExtensions.filter(message.getParameters(), _function);
  }
  
  public boolean isPrimitivePropertyParameter(final Parameter parameter) {
    return this.isPrimitiveSourceReference(parameter.getSourceReference());
  }
  
  public PrimitiveProperty getPrimitiveProperty(final Parameter parameter) {
    SourceReference _sourceReference = parameter.getSourceReference();
    PrimitiveProperty _conceptualFeature = ((PropertyReference) _sourceReference).getConceptualFeature();
    return ((PrimitiveProperty) _conceptualFeature);
  }
  
  public Iterable getReferenceParameters(final TypedMessage message) {
    final Function1 _function = (MessageParameter it) -> {
      return Boolean.valueOf(this.isReferencePropertyParameter(it));
    };
    return IterableExtensions.filter(message.getParameters(), _function);
  }
  
  public boolean isReferencePropertyParameter(final Parameter parameter) {
    return this.isReferenceSourceReference(parameter.getSourceReference());
  }
  
  /**
   * MessageType Helpers
   */
  public String getMessageTypeName(final TypedMessage message) {
    return CommonServices.getMessageTypeName(message);
  }
  
  public boolean isPrimitiveSourceReference(final SourceReference sourceReference) {
    boolean _xifexpression = false;
    if ((sourceReference instanceof PropertyReference)) {
      _xifexpression = this.isPrimitivePropertyReference(((PropertyReference) sourceReference));
    } else {
      _xifexpression = (sourceReference instanceof PrimitiveTypeSourceReference);
    }
    return _xifexpression;
  }
  
  public String primitiveFeatureType(final PrimitiveProperty primitiveProperty) {
    return primitiveProperty.getType().getName();
  }
  
  public boolean isReferenceSourceReference(final SourceReference sourceReference) {
    boolean _xifexpression = false;
    if ((sourceReference instanceof PropertyReference)) {
      _xifexpression = this.isReferencePropertyReference(((PropertyReference) sourceReference));
    } else {
      _xifexpression = false;
    }
    return _xifexpression;
  }
  
  public boolean isReferencePropertyReference(final PropertyReference featureReference) {
    return this.isReferenceProperty(featureReference.getConceptualFeature());
  }
  
  public boolean isReferenceProperty(final Feature feature) {
    return (feature instanceof ReferenceProperty);
  }
  
  public boolean isPrimitivePropertyReference(final PropertyReference featureReference) {
    return this.isPrimitiveProperty(featureReference.getConceptualFeature());
  }
  
  public boolean isPrimitiveProperty(final Feature feature) {
    return (feature instanceof PrimitiveProperty);
  }
  
  protected boolean _isMultiValued(final Element feature) {
    return ((feature.getMaxOccurs() > 1) || (feature.getMaxOccurs() == (-1)));
  }
  
  protected boolean _isMultiValued(final PropertyRealization feature) {
    return ((feature.getMaxOccurs() > 1) || (feature.getMaxOccurs() == (-1)));
  }
  
  public  T getEContainer(final EObject ele, final Class type) {
    return CommonServices.getContainerOfType(ele, type);
  }
  
  public boolean isMultiValued(final EObject feature) {
    if (feature instanceof PropertyRealization) {
      return _isMultiValued((PropertyRealization)feature);
    } else if (feature instanceof Element) {
      return _isMultiValued((Element)feature);
    } else {
      throw new IllegalArgumentException("Unhandled parameter types: " +
        Arrays.asList(feature).toString());
    }
  }
}