blob: 56548a72f7a41db0b888808dd3449ccb1ff465b2 [file] [log] [blame]
/*******************************************************************************
* «codeGenHelper.getCopyright(' * ')»
*
* This code is 100% auto-generated
* using: org.eclipse.qvtd.codegen.qvti.java.QVTiCodeGenerator
*
* Do not edit it.
********************************************************************************/
package org.eclipse.qvtd.doc.exe2016.tests.qvtc;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.pivot.ids.ClassId;
import org.eclipse.ocl.pivot.ids.IdManager;
import org.eclipse.ocl.pivot.ids.TypeId;
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.ValueUtil;
import org.eclipse.ocl.pivot.values.InvalidValueException;
import org.eclipse.ocl.pivot.values.SetValue;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.DoublyLinkedList;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.DoublylinkedlistFactory;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.DoublylinkedlistPackage;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.Element;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.Element2Element;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.List2List;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.List2listFactory;
import org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.List2listPackage;
import org.eclipse.qvtd.runtime.evaluation.AbstractTransformer;
import org.eclipse.qvtd.runtime.evaluation.TransformationExecutor;
import org.eclipse.qvtd.runtime.library.model.ModelObjectsOfKindOperation;
/**
* The Forward2Reverse transformation:
* <p>
* Construct with an evaluator
* <br>
* Populate each input model with {@link addRootObjects(String,List)}
* <br>
* {@link run()}
* <br>
* Extract each output model with {@link getRootObjects(String)}
*/
@SuppressWarnings("nls")
public class Forward2Reverse extends AbstractTransformer
{
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbaseLibrary = IdManager.getNsURIPackageId("http://www.eclipse.org/qvt/2017/QVTbaseLibrary", "qvtbaselib", null);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_DoublyLinkList = IdManager.getNsURIPackageId("http://www.eclipse.org/qvtd/xtext/qvtcore/tests/forward2reverse/1.0/DoublyLinkList", null, DoublylinkedlistPackage.eINSTANCE);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_List2List = IdManager.getNsURIPackageId("http://www.eclipse.org/qvtd/xtext/qvtcore/tests/forward2reverse/1.0/List2List", null, List2listPackage.eINSTANCE);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_Class = PACKid_$metamodel$.getClassId("Class", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_DoublyLinkedList = PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_DoublyLinkList.getClassId("DoublyLinkedList", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_Element = PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_DoublyLinkList.getClassId("Element", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_Element2Element = PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_List2List.getClassId("Element2Element", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_List2List = PACKid_http_c_s_s_www_eclipse_org_s_qvtd_s_xtext_s_qvtcore_s_tests_s_forward2reverse_s_1_0_s_List2List.getClassId("List2List", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull ClassId CLSSid_Model = PACKid_http_c_s_s_www_eclipse_org_s_qvt_s_2015_s_QVTbaseLibrary.getClassId("Model", 0);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull CollectionTypeId SET_CLSSid_DoublyLinkedList = TypeId.SET.getSpecializedId(CLSSid_DoublyLinkedList);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull CollectionTypeId SET_CLSSid_Element = TypeId.SET.getSpecializedId(CLSSid_Element);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull CollectionTypeId SET_CLSSid_Element2Element = TypeId.SET.getSpecializedId(CLSSid_Element2Element);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull CollectionTypeId SET_CLSSid_List2List = TypeId.SET.getSpecializedId(CLSSid_List2List);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@org.eclipse.jdt.annotation.NonNull SetValue Set = ValueUtil.createSetOfEach(SET_CLSSid_Element2Element);
public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@org.eclipse.jdt.annotation.NonNull SetValue Set_0 = ValueUtil.createSetOfEach(SET_CLSSid_List2List);
/*
* Property-source to Property-target unnavigable navigation caches
*/
protected final @NonNull Map<Element,Element2Element> OPPOSITE_OF_Element2Element_element1 = new HashMap<Element,Element2Element>();
protected final @NonNull Map<DoublyLinkedList,List2List> OPPOSITE_OF_List2List_list1 = new HashMap<DoublyLinkedList,List2List>();
/*
* Array of the ClassIds of each class for which allInstances() may be invoked. Array index is the ClassIndex.
*/
private static final @NonNull ClassId[] classIndex2classId = new @NonNull ClassId[]{
CLSSid_DoublyLinkedList, // 0 => DoublyLinkedList
CLSSid_Element // 1 => Element
};
/*
* Mapping from each ClassIndex to all the ClassIndexes to which an object of the outer index
* may contribute results to an allInstances() invocation.
* Non trivial inner arrays arise when one ClassId is a derivation of another and so an
* instance of the derived classId contributes to derived and inherited ClassIndexes.
*/
private final static int @NonNull [] @NonNull [] classIndex2allClassIndexes = new int @NonNull [] @NonNull [] {
{0}, // 0 : DoublyLinkedList -> {DoublyLinkedList}
{1} // 1 : Element -> {Element}
};
public Forward2Reverse(final @NonNull TransformationExecutor executor) {
super(executor, new @NonNull String[] {"forward", "reverse", "middle"}, null, classIndex2classId, classIndex2allClassIndexes);
}
@Override
public boolean run() {
return MAP___root__() && invocationManager.flush();
}
/**
*
* map __root__ in Forward2Reverse {
*
* var _'\u00ABDoublyLinkedList\u00BB' : Set(doublylinkedlist::DoublyLinkedList) := forward.objectsOfKind(doublylinkedlist::DoublyLinkedList)
* ;
* ::ji_DoublyLinkedList : Set(doublylinkedlist::DoublyLinkedList)[*|1]var _'\u00ABElement\u00BB' : Set(doublylinkedlist::Element) := forward.objectsOfKind(doublylinkedlist::Element)
* ;
* ::ji_Element : Set(doublylinkedlist::Element)[*|1]::jm_Element2Element : Set(list2list::Element2Element)[*|1]::jm_List2List : Set(list2list::List2List)[*|1]for loop0 : doublylinkedlist::Element[1] in ji_Element {
* call _'m_Element2Element_Element.p0' {
* jm_Element2Element appendsTo jm_Element2Element;
* source iterates loop0 : doublylinkedlist::Element[1];
* }}
* for loop0 : doublylinkedlist::DoublyLinkedList[1] in ji_DoublyLinkedList {
* call _'m_List2List_DoublyLinkedList.p0' {
* forwardList iterates loop0 : doublylinkedlist::DoublyLinkedList[1];
* jm_List2List appendsTo jm_List2List;
* }}
* for loop0 : list2list::Element2Element[1] in jm_Element2Element {
* call _'m_Element2Element_Element.p1' {
* element2element iterates loop0 : list2list::Element2Element[1];
* }}
* for loop0 : doublylinkedlist::Element[1] in ji_Element {
* call _'m_Element2Element_Element.p3' {
* forwardElement iterates loop0 : doublylinkedlist::Element[1];
* }}
* for loop0 : list2list::List2List[1] in jm_List2List {
* call _'m_List2List_DoublyLinkedList.p1' {
* list2list iterates loop0 : list2list::List2List[1];
* }}
* for loop0 : list2list::Element2Element[1] in jm_Element2Element {
* call _'m_Element2Element_Element.p2' {
* element2element iterates loop0 : list2list::Element2Element[1];
* }}
* for loop0 : doublylinkedlist::DoublyLinkedList[1] in ji_DoublyLinkedList {
* call _'m_List2List_DoublyLinkedList.p2' {
* forwardList iterates loop0 : doublylinkedlist::DoublyLinkedList[1];
* }}
*/
protected boolean MAP___root__() {
try {
final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@org.eclipse.jdt.annotation.NonNull IdResolver idResolver = executor.getIdResolver();
final /*@NonInvalid*/ org.eclipse.ocl.pivot.@org.eclipse.jdt.annotation.NonNull Class TYP_doublylinkedlist_c_c_DoublyLinkedList_0 = idResolver.getClass(CLSSid_DoublyLinkedList, null);
final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@org.eclipse.jdt.annotation.NonNull SetValue objectsOfKind = ModelObjectsOfKindOperation.INSTANCE.evaluate(executor, SET_CLSSid_DoublyLinkedList, models[0/*forward*/], TYP_doublylinkedlist_c_c_DoublyLinkedList_0);
final /*@NonInvalid*/ org.eclipse.ocl.pivot.@org.eclipse.jdt.annotation.NonNull Class TYP_doublylinkedlist_c_c_Element_0 = idResolver.getClass(CLSSid_Element, null);
final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@org.eclipse.jdt.annotation.NonNull SetValue objectsOfKind_0 = ModelObjectsOfKindOperation.INSTANCE.evaluate(executor, SET_CLSSid_Element, models[0/*forward*/], TYP_doublylinkedlist_c_c_Element_0);
// connection variables
final SetValue.@NonNull Accumulator ji_DoublyLinkedList = createUnenforcedSetAccumulatorValue(SET_CLSSid_DoublyLinkedList);
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList iterator : ValueUtil.typedIterable(DoublyLinkedList.class, objectsOfKind)) {
ji_DoublyLinkedList.add(iterator);
}
final SetValue.@NonNull Accumulator ji_Element = createUnenforcedSetAccumulatorValue(SET_CLSSid_Element);
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element iterator_0 : ValueUtil.typedIterable(Element.class, objectsOfKind_0)) {
ji_Element.add(iterator_0);
}
final SetValue.@NonNull Accumulator jm_Element2Element_1 = createUnenforcedSetAccumulatorValue(SET_CLSSid_Element2Element);
final SetValue.@NonNull Accumulator jm_List2List_1 = createUnenforcedSetAccumulatorValue(SET_CLSSid_List2List);
// mapping statements
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element loop0 : ValueUtil.typedIterable(Element.class, ji_Element)) {
MAP_m_Element2Element_Element_46p0(jm_Element2Element_1, loop0);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList loop0_0 : ValueUtil.typedIterable(DoublyLinkedList.class, ji_DoublyLinkedList)) {
MAP_m_List2List_DoublyLinkedList_46p0(loop0_0, jm_List2List_1);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element loop0_1 : ValueUtil.typedIterable(Element2Element.class, jm_Element2Element_1)) {
MAP_m_Element2Element_Element_46p1(loop0_1);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element loop0_2 : ValueUtil.typedIterable(Element.class, ji_Element)) {
MAP_m_Element2Element_Element_46p3(loop0_2);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull List2List loop0_3 : ValueUtil.typedIterable(List2List.class, jm_List2List_1)) {
MAP_m_List2List_DoublyLinkedList_46p1(loop0_3);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element loop0_4 : ValueUtil.typedIterable(Element2Element.class, jm_Element2Element_1)) {
MAP_m_Element2Element_Element_46p2(loop0_4);
}
for (org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList loop0_5 : ValueUtil.typedIterable(DoublyLinkedList.class, ji_DoublyLinkedList)) {
MAP_m_List2List_DoublyLinkedList_46p2(loop0_5);
}
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean __root__ = ValueUtil.TRUE_VALUE;
return __root__;
} catch (Throwable e) {
return handleExecutionFailure("MAP___root__", e);
}
}
/**
*
* map _'m_Element2Element_Element.p0' in Forward2Reverse {
* guard:forward source : doublylinkedlist::Element[1];
* append jm_Element2Element : Set(list2list::Element2Element)[*|1];
* var forwardElement : doublylinkedlist::Element[1] := source.target;
* var list : doublylinkedlist::DoublyLinkedList[1] := forwardElement.list;
* var name : String[1] := forwardElement.name;
* new:middle element2element : list2list::Element2Element[1];
* set element2element.element1 := forwardElement;
* set element2element.name := name;
* add jm_Element2Element += element2element;
*
*/
protected boolean MAP_m_Element2Element_Element_46p0(final SetValue.@NonNull Accumulator jm_Element2Element, final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element source) {
try {
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element target = source.getTarget();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList list = target.getList();
@SuppressWarnings("null")
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.NonNull String name = target.getName();
// creations
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.Nullable Element2Element element2element_1 = List2listFactory.eINSTANCE.createElement2Element();
assert element2element_1 != null;
models[2/*middle*/].add(element2element_1);
// mapping statements
OPPOSITE_OF_Element2Element_element1.put(target, element2element_1);
element2element_1.setElement1(target);
element2element_1.setName(name);
jm_Element2Element.add(element2element_1);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Element2Element_Element_p0 = ValueUtil.TRUE_VALUE;
return m_Element2Element_Element_p0;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_Element2Element_Element_46p0", e);
}
}
/**
*
* map _'m_Element2Element_Element.p1' in Forward2Reverse {
* guard:middle element2element : list2list::Element2Element[1];
* var forwardElement : doublylinkedlist::Element[1] := element2element.element1;
* var name : String[1] := element2element.name;
* var list : doublylinkedlist::DoublyLinkedList[1] := forwardElement.list;
* var source : doublylinkedlist::Element[1] := forwardElement.source;
* var middle1 : list2list::Element2Element[1] := source.middle1;
* var middle11 : list2list::List2List[1] := list.middle1;
* check name = forwardElement.name;
* new:reverse reverseElement : doublylinkedlist::Element[1];
* set element2element.element2 := reverseElement;
* set reverseElement.name := name;
* set element2element.list2list := middle11;
*
*/
protected boolean MAP_m_Element2Element_Element_46p1(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element element2element) {
try {
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element element1 = element2element.getElement1();
@SuppressWarnings("null")
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.NonNull String name = element2element.getName();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList list = element1.getList();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element source_0 = element1.getSource();
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element middle1 = ClassUtil.nonNullState (OPPOSITE_OF_Element2Element_element1.get(source_0));
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull List2List middle1_0 = ClassUtil.nonNullState (OPPOSITE_OF_List2List_list1.get(list));
@SuppressWarnings("null")
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.NonNull String name_0 = element1.getName();
final /*@Thrown*/ boolean symbol_0 = name.equals(name_0);
/*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean symbol_5;
if (symbol_0) {
// creations
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.Nullable Element reverseElement = DoublylinkedlistFactory.eINSTANCE.createElement();
assert reverseElement != null;
models[1/*reverse*/].add(reverseElement);
// mapping statements
element2element.setElement2(reverseElement);
reverseElement.setName(name);
element2element.setList2list(middle1_0);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Element2Element_Element_p1 = ValueUtil.TRUE_VALUE;
symbol_5 = m_Element2Element_Element_p1;
}
else {
symbol_5 = ValueUtil.FALSE_VALUE;
}
return symbol_5;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_Element2Element_Element_46p1", e);
}
}
/**
*
* map _'m_Element2Element_Element.p2' in Forward2Reverse {
* guard:middle element2element : list2list::Element2Element[1];
* var middle1 : list2list::List2List[1] := element2element.list2list;
* var reverseElement : doublylinkedlist::Element[1] := element2element.element2;
* var list2 : doublylinkedlist::DoublyLinkedList[1] := middle1.list2;
* set reverseElement.list := list2;
*
*/
protected boolean MAP_m_Element2Element_Element_46p2(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element element2element_0) {
try {
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull List2List list2list_0 = element2element_0.getList2list();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element element2 = element2element_0.getElement2();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList list2 = list2list_0.getList2();
// mapping statements
element2.setList(list2);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Element2Element_Element_p2 = ValueUtil.TRUE_VALUE;
return m_Element2Element_Element_p2;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_Element2Element_Element_46p2", e);
}
}
/**
*
* map _'m_Element2Element_Element.p3' in Forward2Reverse {
* guard:forward forwardElement : doublylinkedlist::Element[1];
* var element2element : list2list::Element2Element[1] := forwardElement.middle1;
* var source : doublylinkedlist::Element[1] := forwardElement.source;
* var middle1 : list2list::Element2Element[1] := source.middle1;
* var reverseElement : doublylinkedlist::Element[1] := element2element.element2;
* var element2 : doublylinkedlist::Element[1] := middle1.element2;
* set reverseElement.target := element2;
*
*/
protected boolean MAP_m_Element2Element_Element_46p3(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element forwardElement) {
try {
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element middle1 = ClassUtil.nonNullState (OPPOSITE_OF_Element2Element_element1.get(forwardElement));
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element source_0 = forwardElement.getSource();
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element middle1_0 = ClassUtil.nonNullState (OPPOSITE_OF_Element2Element_element1.get(source_0));
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element element2 = middle1.getElement2();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element element2_0 = middle1_0.getElement2();
// mapping statements
element2.setTarget(element2_0);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_Element2Element_Element_p3 = ValueUtil.TRUE_VALUE;
return m_Element2Element_Element_p3;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_Element2Element_Element_46p3", e);
}
}
/**
*
* map _'m_List2List_DoublyLinkedList.p0' in Forward2Reverse {
* guard:forward forwardList : doublylinkedlist::DoublyLinkedList[1];
* append jm_List2List : Set(list2list::List2List)[*|1];
* var headElement : doublylinkedlist::Element[?] := forwardList.headElement;
* var name : String[1] := forwardList.name;
* new:middle list2list : list2list::List2List[1];
* set list2list.list1 := forwardList;
* set list2list.name := name;
* add jm_List2List += list2list;
*
*/
protected boolean MAP_m_List2List_DoublyLinkedList_46p0(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList forwardList, final SetValue.@NonNull Accumulator jm_List2List) {
try {
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.Nullable Element headElement = forwardList.getHeadElement();
@SuppressWarnings("null")
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.NonNull String name = forwardList.getName();
// creations
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.Nullable List2List list2list_0 = List2listFactory.eINSTANCE.createList2List();
assert list2list_0 != null;
models[2/*middle*/].add(list2list_0);
// mapping statements
OPPOSITE_OF_List2List_list1.put(forwardList, list2list_0);
list2list_0.setList1(forwardList);
list2list_0.setName(name);
jm_List2List.add(list2list_0);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_List2List_DoublyLinkedList_p0 = ValueUtil.TRUE_VALUE;
return m_List2List_DoublyLinkedList_p0;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_List2List_DoublyLinkedList_46p0", e);
}
}
/**
*
* map _'m_List2List_DoublyLinkedList.p1' in Forward2Reverse {
* guard:middle list2list : list2list::List2List[1];
* var name : String[1] := list2list.name;
* new:reverse reverseList : doublylinkedlist::DoublyLinkedList[1];
* set list2list.list2 := reverseList;
* set reverseList.name := name;
*
*/
protected boolean MAP_m_List2List_DoublyLinkedList_46p1(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull List2List list2list) {
try {
@SuppressWarnings("null")
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.NonNull String name = list2list.getName();
// creations
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.Nullable DoublyLinkedList reverseList = DoublylinkedlistFactory.eINSTANCE.createDoublyLinkedList();
assert reverseList != null;
models[1/*reverse*/].add(reverseList);
// mapping statements
list2list.setList2(reverseList);
reverseList.setName(name);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_List2List_DoublyLinkedList_p1 = ValueUtil.TRUE_VALUE;
return m_List2List_DoublyLinkedList_p1;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_List2List_DoublyLinkedList_46p1", e);
}
}
/**
*
* map _'m_List2List_DoublyLinkedList.p2' in Forward2Reverse {
* guard:forward forwardList : doublylinkedlist::DoublyLinkedList[1];
* var headElement : doublylinkedlist::Element[?] := forwardList.headElement;
* var list2list : list2list::List2List[1] := forwardList.middle1;
* var middle1 : list2list::Element2Element[1] := headElement.middle1;
* var reverseList : doublylinkedlist::DoublyLinkedList[1] := list2list.list2;
* var element2 : doublylinkedlist::Element[1] := middle1.element2;
* set reverseList.headElement := element2;
*
*/
protected boolean MAP_m_List2List_DoublyLinkedList_46p2(final /*@NonInvalid*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList forwardList_0) {
try {
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.Nullable Element headElement = forwardList_0.getHeadElement();
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull List2List middle1 = ClassUtil.nonNullState (OPPOSITE_OF_List2List_list1.get(forwardList_0));
if (headElement == null) {
throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/qvtd/xtext/qvtcore/tests/forward2reverse/1.0/DoublyLinkList\'::Element::middle1\'");
}
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.list2list.@org.eclipse.jdt.annotation.NonNull Element2Element middle1_0 = ClassUtil.nonNullState (OPPOSITE_OF_Element2Element_element1.get(headElement));
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull DoublyLinkedList list2 = middle1.getList2();
@SuppressWarnings("null")
final /*@Thrown*/ org.eclipse.qvtd.doc.exe2016.tests.qvtc.doublylinkedlist.@org.eclipse.jdt.annotation.NonNull Element element2 = middle1_0.getElement2();
// mapping statements
list2.setHeadElement(element2);
final /*@Thrown*/ java.lang.@org.eclipse.jdt.annotation.Nullable Boolean m_List2List_DoublyLinkedList_p2 = ValueUtil.TRUE_VALUE;
return m_List2List_DoublyLinkedList_p2;
} catch (Throwable e) {
return handleExecutionFailure("MAP_m_List2List_DoublyLinkedList_46p2", e);
}
}
}