| /******************************************************************************* |
| * Copyright (c) 2018 Robert Bosch GmbH. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Robert Bosch GmbH - initial API and implementation |
| *******************************************************************************/ |
| |
| package app4mc.example.transform.m2m.transformers |
| |
| import app4mc.example.transform.samplemodel.Model |
| import org.eclipse.app4mc.amalthea.model.Cache |
| import org.eclipse.app4mc.amalthea.model.ProcessingUnit |
| import org.eclipse.app4mc.transformation.ServiceConstants |
| import org.eclipse.app4mc.transformation.transformers.AbstractTransformer |
| import org.osgi.service.component.annotations.Activate |
| import org.osgi.service.component.annotations.Component |
| import org.osgi.service.component.annotations.ConfigurationPolicy |
| import org.osgi.service.component.annotations.Reference |
| import org.slf4j.LoggerFactory |
| import org.slf4j.Logger |
| |
| @Component( |
| configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID, |
| configurationPolicy = ConfigurationPolicy.REQUIRE, |
| service=#[ProcessingUnitTransformer,AbstractTransformer] |
| ) |
| class ProcessingUnitTransformer extends AbstractTransformer { |
| |
| static final Logger LOG = LoggerFactory.getLogger(typeof(AmaltheaModel2ModelTransformer)); |
| |
| @Reference CacheTransformer cacheTransformer |
| |
| @Activate |
| def package void activate() { |
| LOG.debug("ProcessingUnitTransformer activated : "+this.hashCode) |
| } |
| |
| def transfromProcessingUnit(ProcessingUnit hwModule, Model outputModel) { |
| |
| hwModule.caches.forEach [ puSpecificCache | |
| // local cache : object creation |
| val outputCache = cacheTransformer.transfromCache(puSpecificCache) |
| outputModel.caches.add(outputCache) |
| ] |
| |
| hwModule?.accessElements?.forEach [ hwAccessElement | |
| val referredCaches = hwAccessElement?.accessPath?.pathElements.filter [ |
| it instanceof Cache |
| ] |
| |
| referredCaches?.forEach [ referredCache | |
| val outputCache = cacheTransformer.transfromCache(referredCache as Cache) |
| LOG.info("Cache referred in path elements is : " + outputCache) |
| ] |
| ] |
| |
| } |
| |
| } |