Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Haug2012-11-07 17:11:38 +0000
committerJuergen Haug2012-11-07 17:11:38 +0000
commit7badae06f1e2b21c3a5e0d1b812503655a0f8419 (patch)
tree6038b7a9228bd0de324ed187ff425b6f8052243b /plugins/org.eclipse.etrice.core.config/src
parent1a88593291ca91aebc655ceebcbd3a053f4f41b6 (diff)
downloadorg.eclipse.etrice-7badae06f1e2b21c3a5e0d1b812503655a0f8419.tar.gz
org.eclipse.etrice-7badae06f1e2b21c3a5e0d1b812503655a0f8419.tar.xz
org.eclipse.etrice-7badae06f1e2b21c3a5e0d1b812503655a0f8419.zip
[CQ 6485][config, generator] refactor dataConfiguration,
rewritten attribute init java Change-Id: I333fd9420c2f38f4c4d15ce9c4dc1bd18051d36e
Diffstat (limited to 'plugins/org.eclipse.etrice.core.config/src')
-rw-r--r--plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfiguration.xtend135
-rw-r--r--plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfigurationHelper.java191
2 files changed, 0 insertions, 326 deletions
diff --git a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfiguration.xtend b/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfiguration.xtend
deleted file mode 100644
index fe0d33f91..000000000
--- a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfiguration.xtend
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.eclipse.etrice.core.config
-
-import java.util.ArrayList
-import java.util.List
-import org.eclipse.emf.ecore.resource.ResourceSet
-import org.eclipse.etrice.core.ConfigStandaloneSetup
-import org.eclipse.etrice.core.genmodel.base.ILogger
-import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance
-import org.eclipse.etrice.core.room.ActorClass
-import org.eclipse.etrice.core.room.Attribute
-import org.eclipse.etrice.core.room.ProtocolClass
-import org.eclipse.etrice.core.room.SubSystemClass
-import org.eclipse.etrice.generator.base.IDataConfiguration
-
-class DataConfiguration implements IDataConfiguration {
-
-
- override doSetup() {
- ConfigStandaloneSetup::doSetup()
- }
-
- override setResources(ResourceSet resource, ILogger logger) {
- DataConfigurationHelper::setConfigModels(resource, logger)
- }
-
- // static
-
- override getAttrClassConfigValue(ActorClass actor, List<Attribute> path) {
- actor.getAttrClassConfig(path)?.value?.toStringExpr
- }
-
- override getAttrClassConfigMaxValue(ActorClass actor, List<Attribute> path) {
- actor.getAttrClassConfig(path)?.min?.toStringExpr
- }
-
- override getAttrClassConfigMinValue(ActorClass actor, List<Attribute> path) {
- actor.getAttrClassConfig(path)?.max?.toStringExpr
- }
-
- def private getAttrClassConfig(ActorClass actor, List<Attribute> path){
- var id = '''/«actor.name»/«path.toStringPath»'''.toString
- DataConfigurationHelper::actorClassAttrMap.get(id)
- }
-
- override getAttrClassConfigValue(ProtocolClass pc, boolean regular, List<Attribute> path) {
- var id = '''/«pc.name»/«IF regular»regular«ELSE»conjugated«ENDIF»/«path.toStringPath»'''.toString
- DataConfigurationHelper::protocolClassAttrMap.get(id)?.value?.toStringExpr
- }
-
- def private toStringPath(List<Attribute> path){
- '''«FOR a : path SEPARATOR '/'»«a.name»«ENDFOR»'''.toString
- }
-
- override getAttrInstanceConfigValue(ActorInstance ai, List<Attribute> path) {
- var id = ai.path+"/"+path.toStringPath
- DataConfigurationHelper::actorInstanceAttrMap.get(id)?.value?.toStringExpr
- }
-
- // dynamic
-
- override getPollingTimerUser(SubSystemClass subsystem) {
- subsystem.config?.dynConfig?.polling
- }
-
- override getUserCode1(SubSystemClass subsystem) {
- var dynConfig = subsystem.config?.dynConfig
- return
- if(dynConfig?.filePath != null)
- "import org.eclipse.etrice.runtime.java.config.ConfigSourceFile; // TODO JH make lang independent"
- else
- dynConfig?.userCode1
- }
-
- override getUserCode2(SubSystemClass subsystem) {
- var dynConfig = subsystem.config?.dynConfig
- return
- if(dynConfig?.filePath != null)
- '''new ConfigSourceFile("«dynConfig.filePath»")'''
- else
- dynConfig?.userCode2
- }
-
- override getDynConfigReadAttributes(String actorInstance) {
- val result = new ArrayList<Attribute>
- var configs = DataConfigurationHelper::dynActorInstanceAttrMap.get(actorInstance)
- configs?.forEach(c | if(c.readOnly)result.add(c.attribute))
-
- return result
- }
-
- override getDynConfigWriteAttributes(String actorInstance) {
- val result = new ArrayList<Attribute>
- var configs = DataConfigurationHelper::dynActorInstanceAttrMap.get(actorInstance)
- configs?.forEach(c | if(!c.readOnly)result.add(c.attribute))
-
- return result
- }
-
-
- override hasVariableService(SubSystemClass subsystem) {
- subsystem.config?.dynConfig != null
- }
-
- def private toStringExpr(LiteralArray literal){
- '''«FOR l : literal.literals SEPARATOR ','»«l.toStringExpr»«ENDFOR»'''.toString
- }
-
- def private toStringExpr(Literal literal){
- switch(literal){
- BooleanLiteral: literal.isTrue.toString
- IntLiteral: literal.value.toString
- RealLiteral: literal.value.toString
- StringLiteral: literal.value.toString
- }
- }
-
- def private getConfig(SubSystemClass cc){
- DataConfigurationHelper::subSystemConfigMap.get(cc)
- }
-
- override getDynConfigReadAttributes(ActorClass actor) {
- val result = new ArrayList<Attribute>
- var configs = DataConfigurationHelper::dynActorClassAttrMap.get(actor)
- configs?.forEach(c | if(c.readOnly)result.add(c.attribute))
- return result
- }
-
- override getDynConfigWriteAttributes(ActorClass actor) {
- val result = new ArrayList<Attribute>
- var configs = DataConfigurationHelper::dynActorClassAttrMap.get(actor)
- configs?.forEach(c | if(!c.readOnly)result.add(c.attribute))
- return result
- }
-
-} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfigurationHelper.java b/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfigurationHelper.java
deleted file mode 100644
index 7dd910625..000000000
--- a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/config/DataConfigurationHelper.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Juergen Haug
- * 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:
- * Juergen Haug
- *
- *******************************************************************************/
-package org.eclipse.etrice.core.config;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.etrice.core.config.ActorClassConfig;
-import org.eclipse.etrice.core.config.ActorInstanceConfig;
-import org.eclipse.etrice.core.config.AttrInstanceConfig;
-import org.eclipse.etrice.core.config.ConfigModel;
-import org.eclipse.etrice.core.config.ProtocolClassConfig;
-import org.eclipse.etrice.core.config.SubSystemConfig;
-import org.eclipse.etrice.core.config.util.ConfigUtil;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.SubSystemClass;
-
-public class DataConfigurationHelper {
-
- // static
- public static Map<String, AttrClassConfig> actorClassAttrMap = new HashMap<String, AttrClassConfig>();
- public static Map<String, AttrClassConfig> protocolClassAttrMap = new HashMap<String, AttrClassConfig>();
- public static Map<String, AttrInstanceConfig> actorInstanceAttrMap = new HashMap<String, AttrInstanceConfig>();
-
- // dynamic
- public static Map<SubSystemClass, SubSystemConfig> subSystemConfigMap = new HashMap<SubSystemClass, SubSystemConfig>();
- public static Map<String, List<AttrInstanceConfig>> dynActorInstanceAttrMap = new HashMap<String, List<AttrInstanceConfig>>();
- public static Map<ActorClass, List<AttrInstanceConfig>> dynActorClassAttrMap = new HashMap<ActorClass, List<AttrInstanceConfig>>();
-
- public static boolean setConfigModels(ResourceSet rs, ILogger logger) {
- actorClassAttrMap.clear();
- protocolClassAttrMap.clear();
- actorInstanceAttrMap.clear();
- subSystemConfigMap.clear();
- dynActorInstanceAttrMap.clear();
- dynActorClassAttrMap.clear();
-
- boolean error = false;
-
- List<ConfigModel> configs = new ArrayList<ConfigModel>();
- for (Resource res : rs.getResources()) {
- EObject object = res.getContents().get(0);
- if (object instanceof ConfigModel)
- configs.add((ConfigModel) object);
- }
-
- if (!configs.isEmpty())
- logger.logInfo("-- loading configurations");
-
- Set<ActorClass> actorClasses = new HashSet<ActorClass>();
- Set<ProtocolClass> protocolClasses = new HashSet<ProtocolClass>();
- Set<String> actorInstances = new HashSet<String>();
- for (ConfigModel config : configs) {
- for (ActorClassConfig classConfig : config.getActorClassConfigs()) {
- if (actorClasses.contains(classConfig.getActor())) {
- logger.logError("Multiple configurations for actor class "
- + classConfig.getActor().getName() + " found", null);
- error = true;
- } else {
- actorClasses.add(classConfig.getActor());
- collectConfigs(classConfig, actorClassAttrMap);
- }
- }
- for (ProtocolClassConfig protocolConfig : config
- .getProtocolClassConfigs()) {
- if (protocolClasses.contains(protocolConfig.getProtocol())) {
- logger.logError(
- "Multiple configurations for protocol class "
- + protocolConfig.getProtocol().getName()
- + " found", null);
- error = true;
- } else {
- protocolClasses.add(protocolConfig.getProtocol());
- collectConfigs(protocolConfig, protocolClassAttrMap);
- }
- }
- for (ActorInstanceConfig instanceConfig : config
- .getActorInstanceConfigs()) {
- String path = "/" + instanceConfig.getRoot().getName()
- + toStringPath(instanceConfig.getPath().getRefs(), "/");
- if (actorInstances.contains(path)) {
- logger.logError(
- "Multiple configurations for actor instance "
- + path + " found", null);
- } else {
- actorInstances.add(path);
- collectConfigs(instanceConfig, path, actorInstanceAttrMap);
- }
- }
- for (SubSystemConfig ssConfig : config.getSubSystemConfigs()) {
- if (subSystemConfigMap.containsKey(ssConfig.getSubSystem())) {
- logger.logError(
- "Multiple configurations for subSystem class "
- + ssConfig.getSubSystem().getName()
- + " found", null);
- error = true;
- } else
- subSystemConfigMap.put(ssConfig.getSubSystem(), ssConfig);
- }
- }
-
- return !error;
- }
-
- private static void collectConfigs(ActorInstanceConfig actorConfig,
- String path, Map<String, AttrInstanceConfig> map) {
- for (AttrInstanceConfig c : actorConfig.getAttributes()) {
- collectConfigs(c, path + "/" + c.getAttribute().getName(), map);
-
- if (c.isDynConfig()) {
- List<AttrInstanceConfig> list = dynActorInstanceAttrMap
- .get(path);
- if (list == null)
- list = new ArrayList<AttrInstanceConfig>();
- list.add(c);
- dynActorInstanceAttrMap.put(path, list);
-
- ActorClass ac = ConfigUtil.getLastActorRef(
- actorConfig.getRoot(), actorConfig.getPath()).getType();
- if ((list = dynActorClassAttrMap.get(ac)) == null)
- list = new ArrayList<AttrInstanceConfig>();
- list.add(c);
- dynActorClassAttrMap.put(ac, list);
- }
- }
- }
-
- private static void collectConfigs(ProtocolClassConfig protocolConfig,
- Map<String, AttrClassConfig> map) {
- String path = "/" + protocolConfig.getProtocol().getName();
- for (AttrClassConfig c : protocolConfig.getRegular().getAttributes())
- collectConfigs(c, path + "/regular/" + c.getAttribute().getName(),
- map);
- for (AttrClassConfig c : protocolConfig.getConjugated().getAttributes())
- collectConfigs(c, path + "/conjugated/"
- + c.getAttribute().getName(), map);
- }
-
- private static void collectConfigs(ActorClassConfig actorConfig,
- Map<String, AttrClassConfig> map) {
- String path = "/" + actorConfig.getActor().getName();
- for (AttrClassConfig c : actorConfig.getAttributes())
- collectConfigs(c, path + "/" + c.getAttribute().getName(), map);
- }
-
- private static void collectConfigs(AttrClassConfig config, String path,
- Map<String, AttrClassConfig> map) {
- Attribute a = config.getAttribute();
- if (a.getRefType().getType() instanceof DataClass)
- for (AttrClassConfig c : config.getAttributes())
- collectConfigs(c, path + "/" + c.getAttribute().getName(), map);
- map.put(path, config);
- }
-
- private static void collectConfigs(AttrInstanceConfig config, String path,
- Map<String, AttrInstanceConfig> map) {
- Attribute a = config.getAttribute();
- if (a.getRefType().getType() instanceof DataClass)
- for (AttrInstanceConfig c : config.getAttributes())
- collectConfigs(c, path + "/" + c.getAttribute().getName(), map);
- map.put(path, config);
- }
-
- public static String toStringPath(Iterable<String> path, String pathDelim) {
- StringBuilder b = new StringBuilder();
- for (String p : path)
- b.append(pathDelim + p);
-
- return b.toString();
- }
-}

Back to the top