diff options
author | Sina Madani | 2019-08-16 19:19:05 +0000 |
---|---|---|
committer | Sina Madani | 2019-08-16 19:19:05 +0000 |
commit | 49a17f3c6a3a0c707b13c50941e2aec70ed1a9ed (patch) | |
tree | c4d90158da165b0c92e042589342b60a28e5e89e | |
parent | 97e236b0c3e4a65a84987b6e1566e050ba77dfbd (diff) | |
download | org.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
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;
|