diff m-toolbox/classes/@LTPDAworkbench/jpl2mpl.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/@LTPDAworkbench/jpl2mpl.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,91 @@
+% JPL2MPL converts a java plist to a matlab plist
+%
+% CALL:  mpl = jpl2mpl(jpl)
+%
+% M Hewitson 23-11-08
+%
+% $Id: jpl2mpl.m,v 1.7 2010/08/06 19:10:49 ingo Exp $
+%
+function mpl = jpl2mpl(jpl)
+  
+  mpl = plist;
+  mpl.setName(char(jpl.getName()));
+  
+  % build java plist
+  for aa=1:awtinvoke(jpl, 'getNparams')
+    p = awtinvoke(jpl, 'getParam', aa-1);
+    if p.isActive
+      val = awtinvoke(p, 'getDefaultVal');
+      key = awtinvoke(p, 'getKey');
+      if isempty(val)
+        if strcmp(awtinvoke(p,'getValueType'), 'char')
+          val = '';
+        else
+          val = [];
+        end
+      end
+      if ischar(val)
+        % Try to evaluate the string
+        disp(sprintf('$$$ checking parameter value %s', val));
+        try
+          if any(strcmpi(val, utils.helper.ltpda_classes))
+            % we don't eval strings that are a class name
+            pval = val;
+          elseif ~isempty(getBaseVariable(val))
+            
+            pval = getBaseVariable(val);
+            
+          elseif strcmpi(val, 'false') || strcmpi(val, 'true')
+            
+            % Handle true and false as logicals
+            pval = eval(lower(val));
+            
+          elseif  exist(val) ~=0
+            %           warning('parameter value ''%s'' is a file on the MATLAB path: not evaluating', val);
+            % we don't eval strings that are any kind of MATLAB file
+            pval = val;
+            
+          elseif strcmpi(key, 'start') || strcmpi(key, 'end') || ...
+              strcmpi(key, 'startt') || strcmpi(key, 'endt') || ...
+              strcmpi(key, 'start_time') || strcmpi(key, 'end_time') || ...
+              strcmpi(key, 'starttimes') || ...
+              strcmpi(key, 't0')
+            
+            pval = val;
+            
+          else
+            % then we can eval this
+            pval = evalin('base', val);
+          end
+        catch
+          %         warning('Evaluation of string parameter value %s failed', val);
+          % if the evaluation of the string failed, just return the string
+          pval = val;
+        end
+      else
+        % if the value is not a string, just return it
+        pval = val;
+      end
+      mpl.append(param(char(awtinvoke(p,'getKey')), pval));
+    end
+  end
+end
+
+% Checks to see if a value from a plist represents a variable in the base
+% workspace. If so, the variable is evaluated and the result returned.
+%
+function res = getBaseVariable(val)
+  
+  try
+    if evalin('base', sprintf('exist(''%s'', ''var'')', val))
+      cmd = ['exist(''' val ''')'];
+      res = evalin('base', val);
+    else
+      res = [];
+    end
+  catch
+    res = [];
+  end
+  
+end
+