+/* vim: set ts=2: */
+/**
+ * Copyright (c) 2006 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions, and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. Redistributions must acknowledge that this software was
+ * originally developed by the UCSF Computer Graphics Laboratory
+ * under support by the NIH National Center for Research Resources,
+ * grant P41-RR01081.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
package ext.edu.ucsf.rbvi.strucviz2;
import jalview.ws.HttpClientUtils;
*/
public class ChimeraManager
{
+ private static final int REST_REPLY_TIMEOUT_MS = 15000;
+
+ private static final int CONNECTION_TIMEOUT_MS = 100;
+
private static final boolean debug = false;
private int chimeraRestPort;
return null;
}
- List<ChimeraModel> newModelList = getModelList();
- for (ChimeraModel newModel : newModelList)
+ // patch for Jalview - set model name in Chimera
+ // TODO: find a variant that works for sub-models
+ for (ChimeraModel newModel : getModelList())
{
if (!modelList.contains(newModel))
{
"setattr M name " + modelName + " #"
+ newModel.getModelNumber(), false);
modelList.add(newModel);
-
}
}
// assign color and residues to open models
for (ChimeraModel chimeraModel : modelList)
{
- // // patch for Jalview - set model name in Chimera
- // // TODO: find a variant that works for sub-models
// get model color
Color modelColor = getModelColor(chimeraModel);
if (modelColor != null)
sendChimeraCommand("stop really", false);
try
{
+ // TODO is this too violent? could it force close the process
+ // before it has done an orderly shutdown?
chimera.destroy();
} catch (Exception ex)
{
"list selection level residue", true);
if (chimeraReply != null)
{
+ /*
+ * expect 0, 1 or more lines of the format
+ * residue id #0:43.A type GLY
+ * where we are only interested in the atomspec #0.43.A
+ */
for (String inputLine : chimeraReply)
{
String[] inputLineParts = inputLine.split("\\s+");
*/
public List<String> sendChimeraCommand(String command, boolean reply)
{
- // System.out.println("chimeradebug>> " + command);
+ // System.out.println("chimeradebug>> " + command);
if (!isChimeraLaunched() || command == null
|| "".equals(command.trim()))
{
BufferedReader response = null;
try
{
- response = HttpClientUtils
- .doHttpUrlPost(restUrl, commands, 100, 5000);
+ response = HttpClientUtils.doHttpUrlPost(restUrl, commands, CONNECTION_TIMEOUT_MS,
+ REST_REPLY_TIMEOUT_MS);
String line = "";
while ((line = response.readLine()) != null)
{
{
return busy;
}
+
+ public Process getChimeraProcess()
+ {
+ return chimera;
+ }
}