blob: 96ba345826cbc107a02eda9ce23cd5dcab697c8a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Willink Transformations and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink - Initial API and implementation
*******************************************************************************/
package org.eclipse.qvtd.runtime.utilities;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.pivot.Model;
import org.eclipse.ocl.pivot.Operation;
import org.eclipse.ocl.pivot.Parameter;
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
import org.eclipse.qvtd.runtime.model.QVTruntimeLibrary;
public class QVTruntimeLibraryHelper
{
private final @NonNull Operation collectionOperation;
private final @NonNull Operation errorOperation;
private final @NonNull Parameter errorElementsParameter;
private final @NonNull Operation ifOperation;
private final @NonNull Parameter ifConditionParameter;
private final @NonNull Parameter ifThenParameter;
private final @NonNull Parameter ifElseParameter;
private final @NonNull Parameter loopBodyParameter;
private final @NonNull Parameter loopIteratorsParameter;
private final @NonNull Parameter loopSourceParameter;
private final @NonNull Operation loopOperation;
private final @NonNull Operation mapOperation;
private final @NonNull Operation mapPartOperation;
private final @NonNull Parameter mapPartKeyParameter;
private final @NonNull Parameter mapPartValueParameter;
private final @NonNull Operation rangeOperation;
private final @NonNull Parameter rangeFirstParameter;
private final @NonNull Parameter rangeLastParameter;
private final @NonNull Operation shadowOperation;
private final @NonNull Operation tupleOperation;
private final @NonNull Operation typeOperation;
public QVTruntimeLibraryHelper() {
Model libModel = QVTruntimeLibrary.getDefaultModel();
org.eclipse.ocl.pivot.Package libPackage = ClassUtil.nonNullState(NameUtil.getNameable(libModel.getOwnedPackages(), "qvtruntimelibrary"));
org.eclipse.ocl.pivot.Class libClass = ClassUtil.nonNullState(NameUtil.getNameable(libPackage.getOwnedClasses(), "PseudoOperations"));
Iterable<@NonNull Operation> ownedOperations = PivotUtil.getOwnedOperations(libClass);
this.collectionOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "collection"));
this.errorOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "error"));
this.errorElementsParameter = PivotUtil.getOwnedParameter(errorOperation, 0);
this.ifOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "if"));
this.ifConditionParameter = PivotUtil.getOwnedParameter(ifOperation, 0);
this.ifThenParameter = PivotUtil.getOwnedParameter(ifOperation, 1);
this.ifElseParameter = PivotUtil.getOwnedParameter(ifOperation, 2);
this.loopOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "loop"));
this.loopSourceParameter = PivotUtil.getOwnedParameter(loopOperation, 0);
this.loopIteratorsParameter = PivotUtil.getOwnedParameter(loopOperation, 1);
this.loopBodyParameter = PivotUtil.getOwnedParameter(loopOperation, 2);
this.mapOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "map"));
this.mapPartOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "mapPart"));
this.mapPartKeyParameter = PivotUtil.getOwnedParameter(mapPartOperation, 0);
this.mapPartValueParameter = PivotUtil.getOwnedParameter(mapPartOperation, 1);
this.rangeOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "range"));
this.rangeFirstParameter = PivotUtil.getOwnedParameter(rangeOperation, 0);
this.rangeLastParameter = PivotUtil.getOwnedParameter(rangeOperation, 1);
this.shadowOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "shadow"));
this.tupleOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "tuple"));
this.typeOperation = ClassUtil.nonNullState(NameUtil.getNameable(ownedOperations, "type"));
}
public @NonNull Operation getCollectionOperation() {
return collectionOperation;
}
public @NonNull Parameter getErrorElementsParameter() {
return errorElementsParameter;
}
public @NonNull Operation getErrorOperation() {
return errorOperation;
}
public @NonNull Parameter getIfConditionParameter() {
return ifConditionParameter;
}
public @NonNull Parameter getIfElseParameter() {
return ifElseParameter;
}
public @NonNull Operation getIfOperation() {
return ifOperation;
}
public @NonNull Parameter getIfThenParameter() {
return ifThenParameter;
}
public @NonNull Parameter getLoopBodyParameter() {
return loopBodyParameter;
}
public @NonNull Parameter getLoopIteratorsParameter() {
return loopIteratorsParameter;
}
public @NonNull Parameter getLoopSourceParameter() {
return loopSourceParameter;
}
public @NonNull Operation getMapOperation() {
return mapOperation;
}
public @NonNull Operation getMapPartOperation() {
return mapPartOperation;
}
public @NonNull Parameter getMapPartKeyParameter() {
return mapPartKeyParameter;
}
public @NonNull Parameter getMapPartValueParameter() {
return mapPartValueParameter;
}
public @NonNull Parameter getRangeFirstParameter() {
return rangeFirstParameter;
}
public @NonNull Parameter getRangeLastParameter() {
return rangeLastParameter;
}
public @NonNull Operation getRangeOperation() {
return rangeOperation;
}
public @NonNull Operation getShadowOperation() {
return shadowOperation;
}
public @NonNull Operation getTupleOperation() {
return tupleOperation;
}
public @NonNull Operation getTypeOperation() {
return typeOperation;
}
}