/*
* TestBasic.java
*
* Created on May 12, 2003, 4:41 PM
*/
package hep.aida.ref.remote.basic;
import hep.aida.IAnalysisFactory;
import hep.aida.IBaseHistogram;
import hep.aida.IHistogram1D;
import hep.aida.IHistogramFactory;
import hep.aida.IManagedObject;
import hep.aida.IPlotter;
import hep.aida.ITree;
import hep.aida.ITreeFactory;
import hep.aida.dev.IDevTree;
import hep.aida.ref.event.AIDAListener;
import hep.aida.ref.event.HistogramEvent;
import hep.aida.ref.event.IsObservable;
import hep.aida.ref.event.TreeEvent;
import hep.aida.ref.remote.basic.interfaces.UpdateEvent;
import hep.aida.ref.tree.Tree;
import java.util.EventObject;
/**
* Test basic client-server interaction for the Basic classes.
* @author serbo
*/
public class TestBasic implements AIDAListener {
private Tree tree;
/** Creates a new instance of TestBasic */
public TestBasic(Tree tree) {
this.tree = tree;
tree.addListener(this);
tree.setFolderIsWatched("/", true);
tree.setValid(this);
}
public void stateChanged(EventObject ev) {
System.out.println("TestBasic.stateChanged GOT Event: "+ev);
if (ev instanceof TreeEvent) {
TreeEvent tev = (TreeEvent) ev;
//System.out.println("TestBasic.stateChanged GOT TreeEvent: id="+tev.getID()+", type="+
// tev.getType()+", flags="+tev.getFlags()+
// ", path="+(tev.getPath())[(tev.getPath()).length-1]);
} else if (ev instanceof HistogramEvent) {
IBaseHistogram hist = (IBaseHistogram) ev.getSource();
int id = UpdateEvent.NODE_UPDATED;
String pathString = tree.findPath((IManagedObject) hist);
String nodeType = hist.getClass().getName();
((IsObservable) hist).setValid(this);
//System.out.println("TestBasic.stateChanged GOT HistogramEvent id="+id+", path="+pathString+
// ", type="+nodeType);
}
}
public static void main(String[] args) {
java.util.Random r = new java.util.Random();
IAnalysisFactory af = IAnalysisFactory.create();
IPlotter plotter = af.createPlotterFactory().create("Plot");
plotter.createRegions(2,2,0);
ITreeFactory tf = af.createTreeFactory();
IDevTree clientTree = (IDevTree) tf.create();
ITree serverTree = tf.create();
TestBasic bt = new TestBasic((Tree) serverTree);
IHistogramFactory histogramFactory = af.createHistogramFactory(serverTree);
int nEntries = 1000;
int xbins = 10;
double xLowerEdge = -10.;
double xUpperEdge = 10.;
serverTree.mkdir("/dir1");
IHistogram1D h1 = histogramFactory.createHistogram1D("Hist-1",xbins,xLowerEdge,xUpperEdge);
IHistogram1D h2 = histogramFactory.createHistogram1D("Hist-2",xbins,xLowerEdge,xUpperEdge);
/* Fill the histogram */
for (int i=0; i<nEntries; i++) {
double xval = r.nextGaussian()*3+2.;
h1.fill( xval );
xval = r.nextGaussian()*3+2.;
h2.fill( xval );
}
System.out.println("Creating TreeServer ...");
BasicTreeServer server = new BasicTreeServer(serverTree, "Server_Tree");
/*
try {
System.out.println("Server is ready. To continue press ENTER");
System.in.read();
System.out.println("\nCreating TreeClient ...");
BasicTreeClient client = new BasicTreeClient(clientTree, true, server);
System.out.println("Client is ready. To connect to Server press ENTER");
System.in.read();
client.connect();
client.read(clientTree, new HashMap(), true, false);
System.out.println("Client is connected. To get histogram 1 press ENTER");
System.in.read();
IHistogram1D ho = (IHistogram1D) clientTree.find("/Hist-1");
System.out.println("Found: name="+ho.title()+", entries="+ho.allEntries());
System.out.println("To update histogram 1 press ENTER");
System.in.read();
double xval = r.nextGaussian()*3+2.;
h1.fill( xval );
System.out.println("To update histogram 2 press ENTER");
System.in.read();
System.out.println("Currently: name="+ho.title()+", entries="+ho.allEntries());
xval = r.nextGaussian()*3+2.;
h2.fill( xval );
System.out.println("To add histogram 3 to server Tree press ENTER");
System.in.read();
IHistogram1D h3 = histogramFactory.createHistogram1D("Hist-3",xbins,xLowerEdge,xUpperEdge);
System.out.println("To update histogram 3 press ENTER");
System.in.read();
xval = r.nextGaussian()*3+2.;
h3.fill( xval );
System.out.println("To make directory /dir1/dir2/dir3 press ENTER");
System.in.read();
serverTree.mkdirs("/dir1/dir2/dir3");
System.out.println("To add histogram 4 to directory /dir1/dir2/dir3 press ENTER");
System.in.read();
serverTree.cd("/dir1/dir2/dir3");
IHistogram1D h4 = histogramFactory.createHistogram1D("Hist-4",xbins,xLowerEdge,xUpperEdge);
System.out.println("To update histogram 4 press ENTER");
System.in.read();
xval = r.nextGaussian()*3+2.;
h4.fill( xval );
System.out.println("To get histogram 4 from Client press ENTER");
System.in.read();
client.read(clientTree, "/dir1/dir2/dir3");
IManagedObject mo = clientTree.find("/dir1/dir2/dir3/Hist-4");
System.out.println("Found: name="+mo.name());
System.out.println("To update histogram 4 press ENTER");
System.in.read();
xval = r.nextGaussian()*3+2.;
h4.fill( xval );
System.out.println("To disconnect from Server press ENTER");
System.in.read();
client.disconnect();
} catch(Exception e) {
e.printStackTrace();
}
*/
}
}