/*
 * $Id: DrawableNode.java,v 1.2 2005/07/12 16:46:56 rampil Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.gdrn.shell.command.topo;

import org.logical_paradox.rss.dsr.routing.Node;

/**
 * オーバーレイネットワークビューに配置可能なノード
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class DrawableNode extends Node {
	/** メトリック計測相手 */
	private Node buddy;
	/** 距離 */
	private double distance = 0.0;
	/**
	 * コンストラクタ
	 * @param node ノード
	 */
	public DrawableNode(Node node) {
		super(node.getRegistry(), node.getNodeId());
	}
	/**
	 * 2点間の距離を計測する
	 * @param node 比較するノード
	 * @return 長さ(直線距離)
	 */
	public double distanceFrom(Node node) {
		if(node.equals(buddy) == false) {
			// 前回の比較相手と違う場合、距離を再計算する
			distance = super.distanceFrom(node);
			buddy = node;
		}

		return distance;
	}
	/**
	 * キャッシュをクリアする
	 * 同じ相手との距離を再度計測しなおしたい場合に使用する
	 */
	public void clear() {
		buddy = null;
		distance = 0.0;
	}
}
