Session.java :  » Image » bungee-view » log » Java Open Source

Java Open Source » Image » bungee view 
bungee view » log » Session.java
package log;

import java.awt.Color;
import java.text.DateFormat;
import java.util.Date;

import edu.cmu.cs.bungee.piccoloUtils.gui.APText;
import edu.cmu.cs.bungee.piccoloUtils.gui.LazyPNode;
import edu.cmu.cs.bungee.piccoloUtils.gui.LazyPPath;
import edu.cmu.cs.bungee.piccoloUtils.gui.MyInputEventHandler;
import edu.umd.cs.piccolo.PNode;

class Session extends LazyPPath {

  int ID;
  int nOps;
  Date start;
  Date end;
  String db;
  String IPaddress;
  static final int maxEdge = 30;
  static final Color normalColor = Color.cyan;
  static final Color highlightColor = Color.black;

  Session(int sessionID, String dbName, int opCount, Date minDate,
      Date maxDate, String IP) {
    ID = sessionID;
    nOps = opCount;
    start = minDate;
    end = maxDate;
    db = dbName;
    IPaddress = IP;

    setStroke(LazyPPath.getStrokeInstance(1));
    setStrokePaint(normalColor);
  }

  void setSize(int maxSize) {
    double edgeRatio = Math.sqrt(maxSize) / maxEdge;
    float edge = (float) (Math.sqrt(nOps) / edgeRatio);
    setBounds(-edge / 2, -edge / 2, edge, edge);

    float[] Xs = { -edge / 2, edge / 2, edge / 2, -edge / 2, -edge / 2 };
    float[] Ys = { -edge / 2, -edge / 2, edge / 2, edge / 2, -edge / 2 };
    setPathToPolyline(Xs, Ys);

    LazyPNode child = new LazyPNode();
    child.setPaint(Color.white);
    child.setTransparency(0.001f);
    child.setBounds(getBounds());
    addChild(child);
    child.addInputEventListener(new SessionEventHandler());
  }

  String elapsedTime() {
    long elapsedS = (end.getTime() - start.getTime()) / 1000;
    long elapsedM = elapsedS / 60;
    long elapsedS1 = elapsedS % 60;
    return elapsedM + ":" + elapsedS1;
  }

  @Override
  public String toString() {
    return "<Session " + start + " elapsed time=" + elapsedTime()
        + " nOps=" + nOps + " " + db + ">";
  }

  private class SessionEventHandler extends MyInputEventHandler {

    private APText popup = new APText();

    SessionEventHandler() {
      super(Session.class);
      popup.setOffset(0, 30);
    }

    @Override
    protected boolean enter(PNode node) {
      popup.setText(DateFormat.getDateTimeInstance().format(start)
          + "\nelapsed time: " + elapsedTime() + "\nnOps: " + nOps
          + "\nIP address: " + IPaddress);
      addChild(popup);
      ((Chart) getParent()).highlight(IPaddress);
      return true;
    }

    @Override
    protected boolean exit(PNode node) {
      removeChild(popup);
      ((Chart) getParent()).highlight(null);
      return true;
    }

    @Override
    protected boolean click(PNode node) {
      String URLstring = "http://localhost/bungee/bungee.jsp?db=" + db
          + "&session=" + ID;
      ((Chart) getParent()).showDocument(URLstring);
      return true;
    }
  }

   void highlight(String address) {
    Color color = IPaddress.equals(address) ? highlightColor : normalColor;
    setStrokePaint(color);
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.