Merge branch 'develop' into releases/Release_2_11_2_Branch
[jalview.git] / src / jalview / ext / pymol / PymolManager.java
index e3b913b..49ebe08 100644 (file)
@@ -14,6 +14,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.gui.Preferences;
 import jalview.structure.StructureCommand;
 import jalview.structure.StructureCommandI;
@@ -108,17 +109,6 @@ public class PymolManager
     return launched;
   }
 
-  public void exitPymol()
-  {
-    if (isPymolLaunched() && pymolProcess != null)
-    {
-      sendCommand(new StructureCommand("quit"), false);
-    }
-    pymolProcess = null;
-    // currentModelsMap.clear();
-    this.pymolXmlRpcPort = 0;
-  }
-
   /**
    * Sends the command to Pymol; if requested, tries to get and return any
    * replies, else returns null
@@ -151,7 +141,7 @@ public class PymolManager
       int rc = conn.getResponseCode();
       if (rc != HttpURLConnection.HTTP_OK)
       {
-        Cache.log.error(
+        Console.error(
                 String.format("Error status from %s: %d", rpcUrl, rc));
         return result;
       }
@@ -169,7 +159,7 @@ public class PymolManager
     } catch (SocketException e)
     {
       // thrown when 'quit' command is sent to PyMol
-      Cache.log.warn(String.format("Request to %s returned %s", rpcUrl,
+      Console.warn(String.format("Request to %s returned %s", rpcUrl,
               e.toString()));
     } catch (Exception e)
     {
@@ -180,6 +170,14 @@ public class PymolManager
       {
         out.close();
       }
+      if (Console.isTraceEnabled())
+      {
+        Console.trace("Sent: " + command.toString());
+        if (result != null)
+        {
+          Console.trace("Received: " + result);
+        }
+      }
     }
     return result;
   }
@@ -211,13 +209,13 @@ public class PymolManager
     return sb.toString();
   }
 
-  public boolean launchPymol()
+  public Process launchPymol()
   {
     // todo pull up much of this
     // Do nothing if already launched
     if (isPymolLaunched())
     {
-      return true;
+      return pymolProcess;
     }
 
     String error = "Error message: ";
@@ -244,20 +242,28 @@ public class PymolManager
         break;
       } catch (Exception e)
       {
-        // pPymol could not be started using this path
+        // Pymol could not be started using this path
         error += e.getMessage();
       }
     }
-    if (error.length() == 0)
+
+    if (pymolProcess != null)
     {
       this.pymolXmlRpcPort = getPortNumber();
-      System.out.println(
-              "PyMOL XMLRPC started on port " + pymolXmlRpcPort);
-      return (pymolXmlRpcPort > 0);
+      if (pymolXmlRpcPort > 0)
+      {
+        Console.info("PyMOL XMLRPC started on port " + pymolXmlRpcPort);
+      }
+      else
+      {
+        error += "Failed to read PyMOL XMLRPC port number";
+        Console.error(error);
+        pymolProcess.destroy();
+        pymolProcess = null;
+      }
     }
 
-    // logger.warn(error);
-    return false;
+    return pymolProcess;
   }
 
   private int getPortNumber()
@@ -295,9 +301,8 @@ public class PymolManager
       }
     } catch (Exception e)
     {
-      System.err.println(
-              "Failed to get REST port number from " + responses + ": "
-              + e.getMessage());
+      Console.error("Failed to get REST port number from " + responses
+              + ": " + e.getMessage());
       // logger.error("Failed to get REST port number from " + responses + ": "
       // + e.getMessage());
     } finally
@@ -311,10 +316,10 @@ public class PymolManager
     }
     if (port == 0)
     {
-      System.err.println("Failed to start PyMOL with XMLRPC, response was: "
+      Console.error("Failed to start PyMOL with XMLRPC, response was: "
               + responses);
     }
-    System.err.println("PyMOL started with XMLRPC on port " + port);
+    Console.info("PyMOL started with XMLRPC on port " + port);
     return port;
   }