| /** |
| ******************************************************************************** |
| * Copyright (c) 2018-2021 Robert Bosch GmbH and others. |
| * |
| * 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 |
| * |
| * Contributors: |
| * Robert Bosch GmbH - initial API and implementation |
| ******************************************************************************** |
| */ |
| |
| package app4mc.example.transform.m2m.transformers.hw; |
| |
| import java.util.List; |
| import java.util.stream.Collectors; |
| |
| import org.eclipse.app4mc.amalthea.model.Cache; |
| import org.eclipse.app4mc.amalthea.model.HwAccessElement; |
| import org.eclipse.app4mc.amalthea.model.ProcessingUnit; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| import com.google.inject.Inject; |
| import com.google.inject.Singleton; |
| |
| import app4mc.example.transform.samplemodel.Model; |
| |
| @Singleton |
| public class ExampleProcessingUnitTransformer { |
| private static final Logger LOG = LoggerFactory.getLogger(ExampleProcessingUnitTransformer.class); |
| |
| @Inject |
| private ExampleCacheTransformer cacheTransformer; |
| |
| public void transfrom(final ProcessingUnit pu, final Model outputModel) { |
| |
| for (Cache puSpecificCache : pu.getCaches()) { |
| |
| final app4mc.example.transform.samplemodel.Cache outputCache = cacheTransformer.transfrom(puSpecificCache); |
| outputModel.getCaches().add(outputCache); |
| } |
| |
| for (HwAccessElement hwAccessElement : pu.getAccessElements()) { |
| |
| if (hwAccessElement != null && hwAccessElement.getAccessPath() != null) { |
| List<Cache> referredCaches = hwAccessElement.getAccessPath().getPathElements() |
| .stream() |
| .filter(it -> it instanceof Cache) |
| .map(it -> (Cache) it) |
| .collect(Collectors.toList()); |
| |
| for (Cache referredCache : referredCaches) { |
| |
| final app4mc.example.transform.samplemodel.Cache outputCache = cacheTransformer.transfrom(referredCache); |
| LOG.info("Cache referred in path elements is : {}", outputCache); |
| } |
| } |
| } |
| } |
| |
| } |