| /** |
| ******************************************************************************** |
| * Copyright (c) 2020 Eclipse APP4MC contributors. |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| ******************************************************************************** |
| */ |
| |
| package org.eclipse.app4mc.amalthea._import.atdb; |
| |
| import java.sql.SQLException; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.app4mc.amalthea.model.ActivityGraph; |
| import org.eclipse.app4mc.amalthea.model.Amalthea; |
| import org.eclipse.app4mc.amalthea.model.AmaltheaPackage; |
| import org.eclipse.app4mc.amalthea.model.ISR; |
| import org.eclipse.app4mc.amalthea.model.Process; |
| import org.eclipse.app4mc.amalthea.model.Runnable; |
| import org.eclipse.app4mc.amalthea.model.RunnableCall; |
| import org.eclipse.app4mc.amalthea.model.SWModel; |
| import org.eclipse.app4mc.amalthea.model.Stimulus; |
| import org.eclipse.app4mc.amalthea.model.Task; |
| import org.eclipse.app4mc.amalthea.model.util.ModelUtil; |
| import org.eclipse.app4mc.atdb.ATDBConnection; |
| |
| public class ProcessConverter extends AConverter { |
| |
| public ProcessConverter(final Amalthea model, final ATDBConnection con) { |
| super(model, con, "processes"); |
| } |
| |
| @Override |
| protected void execute() throws SQLException { |
| final SWModel swModel = ModelUtil.getOrCreateSwModel(model); |
| |
| final List<Process> processes = new ArrayList<>(); |
| con.getAllTasks().forEach(taskName -> processes.add(AmaltheaModelUtil.getOrAddNew(swModel, AmaltheaPackage.eINSTANCE.getSWModel_Tasks(), |
| taskName, Task.class))); |
| con.getAllISRs().forEach(isrName -> processes.add(AmaltheaModelUtil.getOrAddNew(swModel, AmaltheaPackage.eINSTANCE.getSWModel_Isrs(), |
| isrName, ISR.class))); |
| |
| for(final Process proc:processes) { |
| // fill activity graph |
| final ActivityGraph ag = ModelUtil.getOrCreateActivityGraph(proc); |
| con.getRunnablesOfProcess(proc.getName()).forEach(runnableName -> |
| AmaltheaModelUtil.getOrAddNewWithContainer(ag, |
| AmaltheaPackage.eINSTANCE.getIActivityGraphItemContainer_Items(), RunnableCall.class, |
| AmaltheaPackage.eINSTANCE.getRunnableCall(), |
| AmaltheaPackage.eINSTANCE.getRunnableCall_Runnable(), Runnable.class, |
| AmaltheaPackage.eINSTANCE.getRunnable(), runnableName).getKey()); |
| |
| // connect stimuli |
| con.getStimuliOfProcess(proc.getName()).forEach(stimulusName -> |
| AmaltheaModelUtil.getOrAddNew(proc, AmaltheaPackage.eINSTANCE.getProcess_Stimuli(), stimulusName, Stimulus.class)); |
| } |
| } |
| |
| } |