Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSina Madani2019-08-16 19:19:05 +0000
committerSina Madani2019-08-16 19:19:05 +0000
commit49a17f3c6a3a0c707b13c50941e2aec70ed1a9ed (patch)
treec4d90158da165b0c92e042589342b60a28e5e89e
parent97e236b0c3e4a65a84987b6e1566e050ba77dfbd (diff)
downloadorg.eclipse.epsilon-49a17f3c6a3a0c707b13c50941e2aec70ed1a9ed.tar.gz
org.eclipse.epsilon-49a17f3c6a3a0c707b13c50941e2aec70ed1a9ed.tar.xz
org.eclipse.epsilon-49a17f3c6a3a0c707b13c50941e2aec70ed1a9ed.zip
Added environment variable fallback for Simulink MATLAB engine properties
-rw-r--r--plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java10
-rw-r--r--plugins/org.eclipse.epsilon.emc.simulink.common/src/org/eclipse/epsilon/emc/simulink/model/AbstractSimulinkModel.java48
-rw-r--r--plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/models/Model.java5
3 files changed, 56 insertions, 7 deletions
diff --git a/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java b/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
index e368f066c..1779dc11a 100644
--- a/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
+++ b/plugins/org.eclipse.epsilon.common/src/org/eclipse/epsilon/common/util/FileUtil.java
@@ -136,6 +136,16 @@ public class FileUtil {
public static String getPath(String name, Class<?> relativeTo) {
return getFile(name, relativeTo).getAbsolutePath();
}
+
+ /**
+ *
+ * @param path
+ * @return
+ * @since 1.6
+ */
+ public static boolean isEmptyPath(String path) {
+ return path == null || path.trim().isEmpty();
+ }
public static void checkFileExists(final File file) throws FileNotFoundException {
if (!file.exists()) {
diff --git a/plugins/org.eclipse.epsilon.emc.simulink.common/src/org/eclipse/epsilon/emc/simulink/model/AbstractSimulinkModel.java b/plugins/org.eclipse.epsilon.emc.simulink.common/src/org/eclipse/epsilon/emc/simulink/model/AbstractSimulinkModel.java
index 4eca7d93c..de121a6db 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink.common/src/org/eclipse/epsilon/emc/simulink/model/AbstractSimulinkModel.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink.common/src/org/eclipse/epsilon/emc/simulink/model/AbstractSimulinkModel.java
@@ -13,6 +13,7 @@ import java.io.File;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collection;
+import org.eclipse.epsilon.common.util.FileUtil;
import org.eclipse.epsilon.common.util.OperatingSystem;
import org.eclipse.epsilon.common.util.StringProperties;
import org.eclipse.epsilon.emc.simulink.engine.MatlabEngine;
@@ -43,6 +44,9 @@ public abstract class AbstractSimulinkModel extends CachedModel<ISimulinkModelEl
public static final String PROPERTY_MATLAB_PATH = "matlab_path";
public static final String PROPERTY_LIBRARY_PATH = "library_path";
public static final String PROPERTY_ENGINE_JAR_PATH = "engine_jar_path";
+ public static final String ENV_MATLAB_PATH = ENV_PREFIX + PROPERTY_MATLAB_PATH;
+ public static final String ENV_LIBRARY_PATH = ENV_PREFIX + PROPERTY_LIBRARY_PATH;
+ public static final String ENV_ENGINE_JAR_PATH = ENV_PREFIX + PROPERTY_ENGINE_JAR_PATH;
protected File file;
protected SimulinkPropertyGetter propertyGetter;
@@ -162,12 +166,24 @@ public abstract class AbstractSimulinkModel extends CachedModel<ISimulinkModelEl
).toAbsolutePath().toString();
}
+ protected void setLibraryPathFromEnv() {
+ libraryPath = System.getenv(ENV_LIBRARY_PATH);
+ }
+
+ protected void setEngineJarPathFromEnv() {
+ engineJarPath = System.getenv(ENV_ENGINE_JAR_PATH);
+ }
+
+ protected void setMatlabPathFromEnv() {
+ matlabPath = System.getenv(ENV_MATLAB_PATH);
+ }
+
public Object parseMatlabEngineVariable(String variableName) throws MatlabException {
return MatlabEngineUtil.parseMatlabEngineVariable(engine, variableName);
}
public void statement(String statement) throws EolRuntimeException {
- try{
+ try {
engine.eval(statement);
} catch (MatlabException e) {
throw new EolRuntimeException(e.getMessage());
@@ -219,6 +235,7 @@ public abstract class AbstractSimulinkModel extends CachedModel<ISimulinkModelEl
@Override
public void load(StringProperties properties, IRelativePathResolver resolver) throws EolModelLoadingException {
super.load(properties, resolver);
+
String filePath = properties.getProperty(PROPERTY_FILE);
if (filePath != null && filePath.trim().length() > 0)
file = new File(resolver.resolve(filePath));
@@ -233,16 +250,33 @@ public abstract class AbstractSimulinkModel extends CachedModel<ISimulinkModelEl
if (properties.hasProperty(PROPERTY_ENGINE_JAR_PATH))
engineJarPath = properties.getProperty(PROPERTY_ENGINE_JAR_PATH);
- boolean emptyLibraryPath = libraryPath == null || libraryPath.trim().isEmpty();
- boolean emptyEngineJarPath = engineJarPath == null || engineJarPath.trim().isEmpty();
+ boolean emptyLibraryPath = FileUtil.isEmptyPath(libraryPath);
+ boolean emptyEngineJarPath = FileUtil.isEmptyPath(engineJarPath);
+ boolean emptyMatlabPath = FileUtil.isEmptyPath(matlabPath);
- if (matlabPath != null || matlabPath.trim().isEmpty()) {
- if (emptyLibraryPath)
+ if (emptyMatlabPath) {
+ setMatlabPathFromEnv();
+ emptyMatlabPath = FileUtil.isEmptyPath(matlabPath);
+ }
+ if (FileUtil.isEmptyPath(matlabPath) == false) {
+ if (emptyLibraryPath) {
setLibraryPathFromRoot();
- if (emptyEngineJarPath)
+ emptyLibraryPath = FileUtil.isEmptyPath(libraryPath);
+ }
+ if (emptyEngineJarPath) {
setEngineJarPathFromRoot();
+ emptyEngineJarPath = FileUtil.isEmptyPath(engineJarPath);
+ }
+ }
+ if (emptyLibraryPath) {
+ setLibraryPathFromEnv();
+ emptyLibraryPath = FileUtil.isEmptyPath(libraryPath);
+ }
+ if (emptyEngineJarPath) {
+ setEngineJarPathFromEnv();
+ emptyEngineJarPath = FileUtil.isEmptyPath(engineJarPath);
}
- else if (emptyLibraryPath || emptyEngineJarPath) {
+ if (emptyLibraryPath || emptyEngineJarPath) {
String errMsg = "Unresolved MATLAB environment variables."
+ "Please ensure that '"+PROPERTY_MATLAB_PATH+"' points to a valid MATLAB installation."
+ "Alternatively, specify the '",
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/models/Model.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/models/Model.java
index fc5de7ec9..299d2d619 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/models/Model.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/models/Model.java
@@ -34,6 +34,11 @@ public abstract class Model implements IModel {
public static final String PROPERTY_STOREONDISPOSAL = "storeOnDisposal";
public static final String PROPERTY_ALIASES = "aliases";
+ /**
+ * @since 1.6
+ */
+ protected static final String ENV_PREFIX = "org.eclipse.epsilon.emc.";
+
protected String name;
protected List<String> aliases = new ArrayList<>();
protected boolean storeOnDisposal = false;

Back to the top