JPythonInterpreterDriver.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:4k
源码类别:

Telnet客户端

开发平台:

Java

  1. /**
  2.  * JPythonInterpreterDriver.java
  3.  *
  4.  *
  5.  * Created: Wed Dec 23 16:03:41 1998
  6.  *
  7.  * @author
  8.  * @version
  9.  */
  10. package org.tn5250j.scripting;
  11. import java.io.File;
  12. import org.python.util.PythonInterpreter;
  13. import org.python.core.*;
  14. import org.tn5250j.SessionGUI;
  15. import javax.swing.JOptionPane;
  16. public class JPythonInterpreterDriver implements InterpreterDriver {
  17.    private static JPythonInterpreterDriver _instance;
  18.    private PythonInterpreter _interpreter;
  19.    static {
  20.       // the inizialization is being done in the startup program
  21.       //      Properties props = new Properties();
  22.       //      props.setProperty("python.path", ".;jt400.jar");
  23.       //      PythonInterpreter.initialize(System.getProperties(), props,
  24.       //                        new String[] {""});
  25.       System.setProperty("python.cachedir", 
  26.       System.getProperty("user.home") + File.separator + ".tn5250j" + 
  27.       File.separator);
  28.       
  29.       try {
  30.         _instance = new JPythonInterpreterDriver();
  31.       }
  32.       catch (Exception ex) {
  33.           
  34.           
  35.       }
  36.       InterpreterDriverManager.registerDriver(_instance);
  37.    }
  38.    JPythonInterpreterDriver () {
  39.       try {
  40.         _interpreter = new PythonInterpreter();
  41.       }
  42.       catch (Exception ex) {
  43.         
  44.       }
  45.        
  46.    }
  47.    
  48.    public void executeScript(SessionGUI session, String script)
  49.          throws InterpreterDriver.InterpreterException {
  50.       try {
  51.          session.setMacroRunning(true);
  52.          _interpreter.set("_session",session);
  53.          _interpreter.exec(script);
  54.          session.setMacroRunning(false);
  55.       }
  56.       catch (PyException ex) {
  57.          throw new InterpreterDriver.InterpreterException(ex);
  58.       }
  59.    }
  60.    public void executeScript(String script)
  61.          throws InterpreterDriver.InterpreterException {
  62.       try {
  63.          _interpreter = new PythonInterpreter();
  64.          _interpreter.exec(script);
  65.       }
  66.       catch (PyException ex) {
  67.          throw new InterpreterDriver.InterpreterException(ex);
  68.       }
  69.    }
  70.    public void executeScriptFile(SessionGUI session, String scriptFile)
  71.                   throws InterpreterDriver.InterpreterException {
  72.       try {
  73.          final SessionGUI s1 = session;
  74.          final String s2 = scriptFile;
  75.          s1.setMacroRunning(true);
  76.          Runnable interpretIt = new Runnable() {
  77.             public void run() {
  78. //               PySystemState.initialize(System.getProperties(),null, new String[] {""},this.getClass().getClassLoader());
  79.                _interpreter = new PythonInterpreter();
  80.                _interpreter.set("_session",s1);
  81.                try {
  82.                   _interpreter.execfile(s2);
  83.                }
  84.                catch (org.python.core.PySyntaxError pse) {
  85.                   JOptionPane.showMessageDialog(s1,pse,"Error in script " + s2,JOptionPane.ERROR_MESSAGE);
  86.                }
  87.                catch (org.python.core.PyException pse) {
  88.                   JOptionPane.showMessageDialog(s1,pse,"Error in script " + s2,JOptionPane.ERROR_MESSAGE);
  89.                }
  90.                finally {
  91.                   s1.setMacroRunning(false);
  92.                }
  93.             }
  94.            };
  95.          // lets start interpreting it.
  96.          Thread interpThread = new Thread(interpretIt);
  97.          interpThread.setDaemon(true);
  98.          interpThread.start();
  99.       }
  100.       catch (PyException ex) {
  101.          throw new InterpreterDriver.InterpreterException(ex);
  102.       }
  103.       catch (Exception ex2) {
  104.          throw new InterpreterDriver.InterpreterException(ex2);
  105.       }
  106.    }
  107.    public void executeScriptFile(String scriptFile)
  108.                   throws InterpreterDriver.InterpreterException {
  109.       try {
  110.          _interpreter.execfile(scriptFile);
  111.       }
  112.       catch (PyException ex) {
  113.          throw new InterpreterDriver.InterpreterException(ex);
  114.       }
  115.    }
  116.     public String[] getSupportedExtensions() {
  117.    return new String[]{"py"};
  118.     }
  119.     public String[] getSupportedLanguages() {
  120.    return new String[]{"Python", "JPython"};
  121.     }
  122.     public static void main(String[] args) {
  123.    try {
  124.        _instance.executeScript("print "Hello"");
  125.        _instance.executeScriptFile("test.py");
  126.    } catch (Exception ex) {
  127.        System.out.println(ex);
  128.    }
  129.     }
  130. }