edu.cmu.tetradapp.app.SessionWrappers Maven / Gradle / Ivy
The newest version!
///////////////////////////////////////////////////////////////////////////////
// For information as to what this class does, see the Javadoc, below. //
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, //
// 2007, 2008, 2009, 2010, 2014, 2015, 2022 by Peter Spirtes, Richard //
// Scheines, Joseph Ramsey, and Clark Glymour. //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
///////////////////////////////////////////////////////////////////////////////
package edu.cmu.tetradapp.app;
import edu.cmu.tetrad.graph.Edge;
import edu.cmu.tetrad.graph.Endpoint;
import edu.cmu.tetrad.graph.Node;
import edu.cmu.tetradapp.model.SessionNodeWrapper;
import edu.cmu.tetradapp.model.SessionWrapper;
import edu.cmu.tetradapp.session.SessionNode;
/**
* A collection of public static methods to help construct SessionWrappers manually.
*
* @author josephramsey
*/
final class SessionWrappers {
/**
* addNode.
*
* @param sessionWrapper a {@link edu.cmu.tetradapp.model.SessionWrapper} object
* @param nodeType a {@link java.lang.String} object
* @param nodeName a {@link java.lang.String} object
* @param centerX a int
* @param centerY a int
* @return a {@link edu.cmu.tetrad.graph.Node} object
*/
public static Node addNode(SessionWrapper sessionWrapper, String nodeType,
String nodeName, int centerX, int centerY) {
SessionNodeWrapper node = SessionWrappers.getNewModelNode(nodeType, nodeName);
node.setCenter(centerX, centerY);
sessionWrapper.addNode(node);
return node;
}
/**
* addEdge.
*
* @param sessionWrapper a {@link edu.cmu.tetradapp.model.SessionWrapper} object
* @param nodeName1 a {@link java.lang.String} object
* @param nodeName2 a {@link java.lang.String} object
*/
public static void addEdge(SessionWrapper sessionWrapper, String nodeName1,
String nodeName2) {
// Retrieve the nodes from the session wrapper.
Node node1 = sessionWrapper.getNode(nodeName1);
Node node2 = sessionWrapper.getNode(nodeName2);
// Make sure nodes existed in the session wrapper by these names.
if (node1 == null) {
throw new RuntimeException(
"There was no node by name nodeName1 in " +
"the session wrapper: " + nodeName1);
}
if (node2 == null) {
throw new RuntimeException(
"There was no node by name nodeName2 in " +
"the session wrapper: " + nodeName2);
}
// Construct an edge.
SessionNodeWrapper nodeWrapper1 = (SessionNodeWrapper) node1;
SessionNodeWrapper nodeWrapper2 = (SessionNodeWrapper) node2;
Edge edge = new Edge(nodeWrapper1, nodeWrapper2, Endpoint.TAIL,
Endpoint.ARROW);
// Add the edge.
sessionWrapper.addEdge(edge);
}
private static SessionNodeWrapper getNewModelNode(String nextButtonType,
String name) {
if (nextButtonType == null) {
throw new NullPointerException(
"Next button type must be a " + "non-null string.");
}
Class>[] modelClasses = SessionWrappers.getModelClasses(nextButtonType);
SessionNode newNode =
new SessionNode(nextButtonType, name, modelClasses);
SessionNodeWrapper nodeWrapper = new SessionNodeWrapper(newNode);
nodeWrapper.setButtonType(nextButtonType);
return nodeWrapper;
}
/**
* @return the model classes associated with the given button type.
* @throws NullPointerException if no classes are stored for the given type.
*/
private static Class>[] getModelClasses(String nextButtonType) {
TetradApplicationConfig config = TetradApplicationConfig.getInstance();
SessionNodeConfig nodeConfig = config.getSessionNodeConfig(nextButtonType);
if (nodeConfig == null) {
throw new NullPointerException("There is no configuration for: " + nextButtonType);
}
return nodeConfig.getModels();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy