Пример #1
0
  /**
   * Gets the uri of a Kleisli model instance extension.
   *
   * @param modelEndpoint The Kleisli model endpoint whose target is to be extended.
   * @return The uri of the Kleisli model extension.
   * @generated NOT
   */
  private String getModelExtendedUri(KleisliModelEndpoint modelEndpoint) {

    return ((KleisliModelRel) modelEndpoint.eContainer()).getExtendedUri()
        + MMINT.URI_SEPARATOR
        + modelEndpoint.getMetatype().getName()
        + MMINT.ENDPOINT_SEPARATOR
        + modelEndpoint.getTarget().getName()
        + MMINT.MODEL_FILEEXTENSION_SEPARATOR
        + MultiModelTypeFactory.ECORE_REFLECTIVE_FILE_EXTENSION;
  }
Пример #2
0
  /** @generated NOT */
  public KleisliModel kleisliCreateType(KleisliModelEndpoint containerModelTypeEndpoint)
      throws MMINTException {

    // TODO MMINT[KLEISLI] should try to emulate normal api structure
    if (MultiModelConstraintChecker.isInstancesLevel(this)) {
      throw new MMINTException("Can't execute TYPES level operation on INSTANCES level element");
    }

    Model origModelType = containerModelTypeEndpoint.getTarget();
    String kModelTypeUri =
        getModelTypeExtendedUri(
            (KleisliModelRel) containerModelTypeEndpoint.eContainer(),
            origModelType,
            containerModelTypeEndpoint.getName());
    if (!MultiModelUtils.isFileOrDirectoryInState(kModelTypeUri)) {
      try {
        EPackage origRootModelTypeObj = origModelType.getEMFTypeRoot();
        String origModelTypeUri = origRootModelTypeObj.getNsURI();
        origRootModelTypeObj.setNsURI(
            origModelTypeUri + KleisliReasoningEngine.KLEISLI_MODELTYPE_URI_SUFFIX);
        MultiModelUtils.createModelFileInState(origRootModelTypeObj, kModelTypeUri);
        origRootModelTypeObj.setNsURI(
            origModelTypeUri); // restore original for packages coming from the registry
      } catch (Exception e) {
        throw new MMINTException("Error creating extended metamodel file");
      }
    }

    KleisliModel kModelType = KleisliFactory.eINSTANCE.createKleisliModel();
    kModelType.setUri(kModelTypeUri);
    kModelType.setName(origModelType.getName());
    kModelType.setLevel(MIDLevel.TYPES);
    kModelType.setSupertype(origModelType.getSupertype());
    kModelType.setDynamic(true);
    kModelType.setAbstract(origModelType.isAbstract());
    ExtendibleElementConstraint origConstraint = origModelType.getConstraint();
    if (origConstraint != null) {
      ExtendibleElementConstraint kConstraint =
          MIDFactory.eINSTANCE.createExtendibleElementConstraint();
      kConstraint.setLanguage(origConstraint.getLanguage());
      kConstraint.setImplementation(origConstraint.getImplementation());
      kModelType.setConstraint(kConstraint);
    }
    kModelType.setOrigin(ModelOrigin.CREATED);
    kModelType.setFileExtension(origModelType.getFileExtension());
    containerModelTypeEndpoint.setExtendedTarget(kModelType);

    return kModelType;
  }
Пример #3
0
  /** @generated NOT */
  public KleisliModel kleisliCreateInstance(KleisliModelEndpoint containerModelEndpoint)
      throws MMINTException {

    if (MultiModelConstraintChecker.isInstancesLevel(this)) {
      throw new MMINTException("Can't execute TYPES level operation on INSTANCES level element");
    }

    Model origModel = containerModelEndpoint.getTarget();
    KleisliModel kModel = KleisliFactory.eINSTANCE.createKleisliModel();
    kModel.setUri(getModelExtendedUri(containerModelEndpoint));
    kModel.setName(origModel.getName());
    kModel.setLevel(MIDLevel.INSTANCES);
    kModel.setDynamic(true);
    kModel.setSupertype(null);
    kModel.setMetatypeUri(origModel.getMetatypeUri());
    kModel.setOrigin(ModelOrigin.CREATED);
    kModel.setFileExtension(origModel.getFileExtension());
    containerModelEndpoint.setExtendedTarget(kModel);

    return kModel;
  }