return hasChimeraModel(modelNubmer, 0);
}
- public boolean hasChimeraModel(Integer modelNubmer, Integer subModelNumber)
+ public boolean hasChimeraModel(Integer modelNubmer,
+ Integer subModelNumber)
{
- return currentModelsMap.containsKey(ChimUtils.makeModelKey(modelNubmer,
- subModelNumber));
+ return currentModelsMap.containsKey(
+ ChimUtils.makeModelKey(modelNubmer, subModelNumber));
}
public void addChimeraModel(Integer modelNumber, Integer subModelNumber,
ChimUtils.makeModelKey(modelNumber, subModelNumber), model);
}
- public void removeChimeraModel(Integer modelNumber, Integer subModelNumber)
+ public void removeChimeraModel(Integer modelNumber,
+ Integer subModelNumber)
{
int modelKey = ChimUtils.makeModelKey(modelNumber, subModelNumber);
if (currentModelsMap.containsKey(modelKey))
if (!modelList.contains(newModel))
{
newModel.setModelName(modelName);
- sendChimeraCommand(
- "setattr M name " + modelName + " #"
- + newModel.getModelNumber(), false);
+ sendChimeraCommand("setattr M name " + modelName + " #"
+ + newModel.getModelNumber(), false);
modelList.add(newModel);
}
}
{
sendChimeraCommand("close " + model.toSpec(), false);
// currentModelNamesMap.remove(model.getModelName());
- currentModelsMap.remove(ChimUtils.makeModelKey(
- model.getModelNumber(), model.getSubModelNumber()));
+ currentModelsMap.remove(ChimUtils.makeModelKey(model.getModelNumber(),
+ model.getSubModelNumber()));
// selectionList.remove(chimeraModel);
}
else
public void startListening()
{
- sendChimeraCommand("listen start models; listen start selection", false);
+ sendChimeraCommand("listen start models; listen start selection",
+ false);
}
public void stopListening()
if (error.length() == 0)
{
this.chimeraRestPort = getPortNumber();
- System.out.println("Chimera REST API started on port "
- + chimeraRestPort);
+ System.out.println(
+ "Chimera REST API started on port " + chimeraRestPort);
// structureManager.initChimTable();
structureManager.setChimeraPathProperty(workingPath);
// TODO: [Optional] Check Chimera version and show a warning if below 1.8
* Adds command-line arguments to start the REST server
* <p>
* Method extracted for Jalview to allow override in ChimeraXManager
+ *
* @param args
*/
protected void addLaunchArguments(List<String> args)
{
int port = 0;
InputStream readChan = chimera.getInputStream();
- BufferedReader lineReader = new BufferedReader(new InputStreamReader(
- readChan));
+ BufferedReader lineReader = new BufferedReader(
+ new InputStreamReader(readChan));
StringBuilder responses = new StringBuilder();
try
{
}
} catch (Exception e)
{
- logger.error("Failed to get REST port number from " + responses
- + ": " + e.getMessage());
+ logger.error("Failed to get REST port number from " + responses + ": "
+ + e.getMessage());
} finally
{
try
}
if (port == 0)
{
- System.err
- .println("Failed to start Chimera with REST service, response was: "
+ System.err.println(
+ "Failed to start Chimera with REST service, response was: "
+ responses);
}
- logger.info("Chimera REST service listening on port " + chimeraRestPort);
+ logger.info(
+ "Chimera REST service listening on port " + chimeraRestPort);
return port;
}
String[] lineParts = inputLine.split("\\s");
if (lineParts.length == 5)
{
- ChimeraResidue residue = ChimUtils
- .getResidue(lineParts[2], model);
+ ChimeraResidue residue = ChimUtils.getResidue(lineParts[2],
+ model);
String value = lineParts[4];
if (residue != null)
{
*/
public List<String> sendChimeraCommand(String command, boolean reply)
{
- if (debug) {
+ if (debug)
+ {
System.out.println("chimeradebug>> " + command);
}
if (!isChimeraLaunched() || command == null
{
return null;
}
- // TODO do we need a maximum wait time before aborting?
- while (busy)
+ /*
+ * set a maximum wait time before trying anyway
+ * to avoid hanging indefinitely
+ */
+ int waited = 0;
+ int pause = 25;
+ while (busy && waited < 1001)
{
try
{
- Thread.sleep(25);
+ Thread.sleep(pause);
+ waited += pause;
} catch (InterruptedException q)
{
}
+ (System.currentTimeMillis() - startTime) + "ms: "
+ command);
}
-
}
}
}
/**
- * Returns "POST" as the HTTP request method to use for REST service calls to Chimera
+ * Returns "POST" as the HTTP request method to use for REST service calls to
+ * Chimera
+ *
* @return
*/
protected String getHttpRequestMethod()