network picture;

bigger; 
more dot steps; 
small other;

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2240 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
borg-0300 19 years ago
parent 41c4641612
commit 027fa8ab1c

@ -6,9 +6,9 @@
// Frankfurt, Germany, 2005 // Frankfurt, Germany, 2005
// Created 08.10.2005 // Created 08.10.2005
// //
// $LastChangedDate: 2005-10-22 15:28:04 +0200 (Sat, 22 Oct 2005) $ // $LastChangedDate$
// $LastChangedRevision: 968 $ // $LastChangedRevision$
// $LastChangedBy: theli $ // $LastChangedBy$
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License as published by
@ -45,52 +45,53 @@
package de.anomic.plasma; package de.anomic.plasma;
import java.util.Iterator; import de.anomic.yacy.yacyCore;
import java.util.Enumeration; import de.anomic.yacy.yacySearch;
import java.util.Date; import de.anomic.yacy.yacySeed;
import de.anomic.ymage.ymagePainter;
import de.anomic.ymage.ymageMatrix; import de.anomic.ymage.ymageMatrix;
import de.anomic.ymage.ymageMatrixPainter; import de.anomic.ymage.ymageMatrixPainter;
import de.anomic.ymage.ymagePainter;
import de.anomic.yacy.yacyCore; import java.util.Date;
import de.anomic.yacy.yacySeed; import java.util.Enumeration;
import de.anomic.yacy.yacySearch; import java.util.Iterator;
public class plasmaGrafics { public class plasmaGrafics {
private static int shortestName = 10; private static int shortestName = 10;
private static int longestName = 12; private static int longestName = 12;
private static int maxRadius = 28;
private static ymagePainter networkPicture = null; private static ymagePainter networkPicture = null;
private static long networkPictureDate = 0; private static long networkPictureDate = 0;
public static ymagePainter getSearchEventPicture() { public static ymagePainter getSearchEventPicture() {
if (plasmaSearchEvent.lastEvent == null) return null; if (plasmaSearchEvent.lastEvent == null) return null;
yacySearch[] searches = plasmaSearchEvent.lastEvent.getSearchThreads(); yacySearch[] searches = plasmaSearchEvent.lastEvent.getSearchThreads();
if (searches == null) return null; // this was a local search and there are no threads if (searches == null) return null; // this was a local search and there are no threads
// get a copy of a recent network picture // get a copy of a recent network picture
ymagePainter eventPicture = getNetworkPicture(120000); ymagePainter eventPicture = getNetworkPicture(120000);
if (eventPicture instanceof ymageMatrixPainter) eventPicture = new ymageMatrixPainter((ymageMatrix) eventPicture); if (eventPicture instanceof ymageMatrixPainter) eventPicture = new ymageMatrixPainter((ymageMatrix) eventPicture);
// get dimensions // get dimensions
int cr = Math.min(eventPicture.getWidth(), eventPicture.getHeight()) / 5 - 20; int cr = Math.min(eventPicture.getWidth(), eventPicture.getHeight()) / 5 - maxRadius;
int cx = eventPicture.getWidth() / 2; int cx = eventPicture.getWidth() / 2;
int cy = eventPicture.getHeight() / 2; int cy = eventPicture.getHeight() / 2;
String hash; String hash;
int angle; int angle;
// draw in the search peers // draw in the search peers
for (int j = 0; j < searches.length; j++) { for (int j = 0; j < searches.length; j++) {
eventPicture.setColor((searches[j].isAlive()) ? ymageMatrix.ADDITIVE_RED : ymageMatrix.ADDITIVE_GREEN); eventPicture.setColor((searches[j].isAlive()) ? ymageMatrix.ADDITIVE_RED : ymageMatrix.ADDITIVE_GREEN);
hash = searches[j].target().hash; hash = searches[j].target().hash;
angle = (int) ((long) 360 * (yacySeed.dhtPosition(hash) / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000); angle = (int) ((long) 360 * (yacySeed.dhtPosition(hash) / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000);
eventPicture.arcLine(cx, cy, cr - 20, cr, angle); eventPicture.arcLine(cx, cy, cr - maxRadius, cr, angle);
} }
// draw in the search target // draw in the search target
plasmaSearchQuery query = plasmaSearchEvent.lastEvent.getQuery(); plasmaSearchQuery query = plasmaSearchEvent.lastEvent.getQuery();
Iterator i = query.queryHashes.iterator(); Iterator i = query.queryHashes.iterator();
@ -99,44 +100,44 @@ public class plasmaGrafics {
while (i.hasNext()) { while (i.hasNext()) {
hash = (String) i.next(); hash = (String) i.next();
angle = (int) ((long) 360 * (yacySeed.dhtPosition(hash) / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000); angle = (int) ((long) 360 * (yacySeed.dhtPosition(hash) / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000);
eventPicture.arcLine(cx, cy, cr - 20, cr, angle); eventPicture.arcLine(cx, cy, cr - maxRadius, cr, angle);
} }
return eventPicture; return eventPicture;
} }
public static ymagePainter getNetworkPicture(long maxAge) { public static ymagePainter getNetworkPicture(long maxAge) {
return getNetworkPicture(maxAge, 640, 480, 300, 300, 1000, true); return getNetworkPicture(maxAge, 640, 480, 300, 300, 1000, true);
} }
public static ymagePainter getNetworkPicture(long maxAge, int width, int height, int passiveLimit, int potentialLimit, int maxCount, boolean corona) { public static ymagePainter getNetworkPicture(long maxAge, int width, int height, int passiveLimit, int potentialLimit, int maxCount, boolean corona) {
if ((networkPicture == null) || ((System.currentTimeMillis() - networkPictureDate) > maxAge)) { if ((networkPicture == null) || ((System.currentTimeMillis() - networkPictureDate) > maxAge)) {
drawNetworkPicture(width, height, passiveLimit, potentialLimit, maxCount, corona); drawNetworkPicture(width, height, passiveLimit, potentialLimit, maxCount, corona);
} }
return networkPicture; return networkPicture;
} }
private static void drawNetworkPicture(int width, int height, int passiveLimit, int potentialLimit, int maxCount, boolean corona) { private static void drawNetworkPicture(int width, int height, int passiveLimit, int potentialLimit, int maxCount, boolean corona) {
int innerradius = Math.min(width, height) / 5; int innerradius = Math.min(width, height) / 5;
int outerradius = innerradius + innerradius * yacyCore.seedDB.sizeConnected() / 100; int outerradius = innerradius + innerradius * yacyCore.seedDB.sizeConnected() / 100;
if (outerradius > innerradius * 2) outerradius = innerradius * 2; if (outerradius > innerradius * 2) outerradius = innerradius * 2;
if (yacyCore.seedDB == null) return; // no other peers known if (yacyCore.seedDB == null) return; // no other peers known
networkPicture = new ymageMatrixPainter(width, height, "000010"); networkPicture = new ymageMatrixPainter(width, height, "000010");
networkPicture.setMode(ymageMatrix.MODE_ADD); networkPicture.setMode(ymageMatrix.MODE_ADD);
// draw network circle // draw network circle
networkPicture.setColor("008020"); networkPicture.setColor("008020");
networkPicture.arc(width / 2, height / 2, innerradius - 20, innerradius + 20, 0, 360); networkPicture.arc(width / 2, height / 2, innerradius - maxRadius, innerradius + maxRadius, 0, 360);
//System.out.println("Seed Maximum distance is " + yacySeed.maxDHTDistance); //System.out.println("Seed Maximum distance is " + yacySeed.maxDHTDistance);
//System.out.println("Seed Minimum distance is " + yacySeed.minDHTNumber); //System.out.println("Seed Minimum distance is " + yacySeed.minDHTNumber);
yacySeed seed; yacySeed seed;
long lastseen; long lastseen;
// draw connected senior and principals // draw connected senior and principals
int count = 0; int count = 0;
int totalCount = 0; int totalCount = 0;
@ -149,7 +150,7 @@ public class plasmaGrafics {
} }
} }
totalCount += count; totalCount += count;
// draw disconnected senior and principals that have been seen lately // draw disconnected senior and principals that have been seen lately
count = 0; count = 0;
e = yacyCore.seedDB.seedsSortedDisconnected(false, yacySeed.LASTSEEN); e = yacyCore.seedDB.seedsSortedDisconnected(false, yacySeed.LASTSEEN);
@ -163,7 +164,7 @@ public class plasmaGrafics {
} }
} }
totalCount += count; totalCount += count;
// draw juniors that have been seen lately // draw juniors that have been seen lately
count = 0; count = 0;
e = yacyCore.seedDB.seedsSortedPotential(false, yacySeed.LASTSEEN); e = yacyCore.seedDB.seedsSortedPotential(false, yacySeed.LASTSEEN);
@ -177,42 +178,46 @@ public class plasmaGrafics {
} }
} }
totalCount += count; totalCount += count;
// draw my own peer // draw my own peer
drawNetworkPicturePeer(networkPicture, width / 2, height / 2, innerradius, outerradius, yacyCore.seedDB.mySeed, "800000", "AAAAAA", "FFFFFF", corona); drawNetworkPicturePeer(networkPicture, width / 2, height / 2, innerradius, outerradius, yacyCore.seedDB.mySeed, "800000", "AAAAAA", "F00000", corona);
// draw description // draw description
networkPicture.setColor("FFFFFF"); networkPicture.setColor("FFFFFF");
networkPicture.setMode(ymageMatrix.MODE_ADD); networkPicture.setMode(ymageMatrix.MODE_ADD);
networkPicture.print(2, 8, 0, "THE YACY NETWORK", true); networkPicture.print(2, 8, 0, "THE YACY NETWORK", true);
networkPicture.print(2, 16, 0, "DRAWING OF " + totalCount + " SELECTED PEERS", true); networkPicture.print(2, 16, 0, "DRAWING OF " + totalCount + " SELECTED PEERS", true);
networkPicture.print(width - 2, 8, 0, "SNAPSHOT FROM " + new Date().toString().toUpperCase(), false); networkPicture.print(width - 2, 8, 0, "SNAPSHOT FROM " + new Date().toString().toUpperCase(), false);
// set timestamp // set timestamp
networkPictureDate = System.currentTimeMillis(); networkPictureDate = System.currentTimeMillis();
} }
private static void drawNetworkPicturePeer(ymagePainter img, int x, int y, int innerradius, int outerradius, yacySeed seed, String colorDot, String colorLine, String colorText, boolean corona) { private static void drawNetworkPicturePeer(ymagePainter img, int x, int y, int innerradius, int outerradius, yacySeed seed, String colorDot, String colorLine, String colorText, boolean corona) {
String name = seed.getName().toUpperCase(); String name = seed.getName().toUpperCase();
if (name.length() < shortestName) shortestName = name.length(); if (name.length() < shortestName) shortestName = name.length();
if (name.length() > longestName) longestName = name.length(); if (name.length() > longestName) longestName = name.length();
int angle = (int) ((long) 360 * (seed.dhtPosition() / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000); int angle = (int) ((long) 360 * (seed.dhtPosition() / (yacySeed.maxDHTDistance / (long) 10000)) / (long) 10000);
//System.out.println("Seed " + seed.hash + " has distance " + seed.dhtDistance() + ", angle = " + angle); //System.out.println("Seed " + seed.hash + " has distance " + seed.dhtDistance() + ", angle = " + angle);
int linelength = 20 + outerradius * (20 * (name.length() - shortestName) / (longestName - shortestName) + (Math.abs(seed.hash.hashCode()) % 20)) / 60; // int linelength = maxRadius + outerradius * (maxRadius * (name.length() - shortestName) / (longestName - shortestName) + (Math.abs(seed.hash.hashCode()) % maxRadius)) / 60;
// if (linelength > outerradius) linelength = outerradius;
int dotsize = 4 + 2 * (int) (seed.getLinkCount() / 1000000L); // peer dotsize
if (dotsize > (maxRadius - 2)) dotsize = maxRadius - 2;
int linelength = maxRadius + outerradius * (dotsize * (name.length() - shortestName) / (longestName - shortestName) + (Math.abs(seed.hash.hashCode()) % dotsize)) / 60;
if (linelength > outerradius) linelength = outerradius; if (linelength > outerradius) linelength = outerradius;
int dotsize = 6 + 2 * (int) (seed.getLinkCount() / 500000L);
if (dotsize > 18) dotsize = 18;
img.setMode(ymageMatrix.MODE_ADD); img.setMode(ymageMatrix.MODE_ADD);
// draw dot // draw dot
img.setColor(colorDot); img.setColor(colorDot);
img.arcDot(x, y, innerradius, angle, dotsize); img.arcDot(x, y, innerradius, angle, dotsize);
// draw line to text // draw line to text
img.setColor(colorLine); // img.setColor(colorLine);
img.arcLine(x, y, innerradius + 18, innerradius + linelength, angle); img.arcLine(x, y, innerradius + dotsize + 2, innerradius + linelength, angle);
// draw text // draw text
img.setColor(colorText); img.setColor(colorText);
img.arcPrint(x, y, innerradius + linelength, angle, name); img.arcPrint(x, y, innerradius + linelength, angle, name);
// draw corona around dot for crawling activity // draw corona around dot for crawling activity
int ppm10 = seed.getPPM() / 10; int ppm10 = seed.getPPM() / 10;
if ((corona) && (ppm10 > 0)) { if ((corona) && (ppm10 > 0)) {
@ -231,5 +236,5 @@ public class plasmaGrafics {
} }
} }
} }
} }

Loading…
Cancel
Save