Java tutorial
/** * This file is part of the Kompics P2P Framework. * * Copyright (C) 2009 Swedish Institute of Computer Science (SICS) * Copyright (C) 2009 Royal Institute of Technology (KTH) * * Kompics 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 se.sics.kompics.p2p.experiment.cyclon; import java.util.TreeMap; import org.apache.commons.math.stat.descriptive.SummaryStatistics; import se.sics.kompics.p2p.overlay.OverlayAddress; import se.sics.kompics.p2p.overlay.cyclon.CyclonNeighbors; import se.sics.kompics.p2p.overlay.cyclon.GraphUtil; /** * The <code>CyclonDataPoint</code> class represents a Cyclon data point. * * @author Cosmin Arad <cosmin@sics.se> * @version $Id$ */ public class CyclonDataPoint { private int index; private int networkSize; private int diameter; private double averagePathLength; private double clusteringCoefficient; SummaryStatistics inDegree = new SummaryStatistics(); SummaryStatistics outDegree = new SummaryStatistics(); public CyclonDataPoint(int index, TreeMap<OverlayAddress, CyclonNeighbors> alivePeers) { this.index = index; this.networkSize = alivePeers.size(); GraphUtil g = new GraphUtil(alivePeers); averagePathLength = g.getMeanPathLength(); diameter = g.getDiameter(); clusteringCoefficient = g.getMeanClusteringCoefficient(); inDegree = g.getInStats(); outDegree = g.getOutStats(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Data point: ").append(index); sb.append("\nNetwork size: ").append(networkSize); sb.append("\nDiameter: ").append(diameter); sb.append("\nAverage path length: ").append(averagePathLength); sb.append("\nClustering-coefficient: ").append(clusteringCoefficient); sb.append("\nAverage in-degree: ").append(inDegree.getMean()); sb.append("\nIn-degree stddev: ").append(inDegree.getStandardDeviation()); sb.append("\nAverage out-degree: ").append(outDegree.getMean()); return sb.toString(); } }