pl.trammer.ludwik.geo
Class HttpMap

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by pl.trammer.ludwik.geo.LudMapPanel
                      extended by pl.trammer.ludwik.geo.HttpMap
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class HttpMap
extends LudMapPanel

Klasa dziedzicząca z klasy LudMapPanel, przystosowana do graficznego prezentowania na mapie komunikacji z serwerami. Wewnątrz klasy przechowywana jest lista serwerów i obiektów klasy HttpMap.ConversationProperties, zawierających dane o komunikacji z tymi serwerami.

Klasa posiada m.in. metody pozwalające na dodawanie kolejnych serwerów do wyświetlenia oraz na oznaczanie części z nich jako wyróżnione.

Terminologia:

Author:
Ludwik Trammer
See Also:
Serialized Form

Nested Class Summary
 class HttpMap.ConversationProperties
          Obiekty tej klasy przechowują zbiorcze informacje na temat komunikacji z serwerem, wykorzystywane do rysowania na mapie ścieżek połączeń między hostami.
 class HttpMap.IntermediateRouter
          Obiekty tej klasy symbolizują routery pośredniczące w komunikacji z serwerem.
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
Component.BaselineResizeBehavior
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
HttpMap()
           
 
Method Summary
 void clear()
          Usuwa wszystkie informacje o wcześniejszej komunikacji z serwerami.
 void drawConnection(Graphics2D g2d, HttpMap.ConversationProperties properties, float saturation, float brigthness)
          Rysuje na mapie linie symbolizującą komunikację z serwerem, której właściwości zostały przekazane jako parametr properties.
 void drawText(Graphics2D g2d, String text, Coordinates co, Color color)
          Wypisywanie tekstu w określonym punkcie mapy.
 void paintComponent(Graphics g)
          Rysuje na mapie informacje o komunikacji z serwerami wg.
 void processConnection(InetAddress server, double latency, int length)
          Przekazuje do obiektu informacje o pojedyńczym połączeniu z serwerem (wraz z parametrami takimi jak ilość otrzymanych danych i opóźnienie).
 void processResponse(ServerResponse response)
          Na podstawie obiektu klasy ServerResponse przekazuje do obiektu informacje na temat połączenia w ramach którego otrzymano tę odpowiedź.
 void setSelected(Set<InetAddress> selected)
          Ustawia listę serwerów, które mają zostać wyróżnione na mapie.
 
Methods inherited from class pl.trammer.ludwik.geo.LudMapPanel
CoordinatesToMapPoint, getMapCenter, getMapUpperLeftCorner, scale
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HttpMap

public HttpMap()
Method Detail

processResponse

public void processResponse(ServerResponse response)
Na podstawie obiektu klasy ServerResponse przekazuje do obiektu informacje na temat połączenia w ramach którego otrzymano tę odpowiedź. Odbywa się to zgodnie z zasadami opisanymi przy okazji metody processConnection(InetAddress, double, int).

Parameters:
response - odpowiedź od serwera

processConnection

public void processConnection(InetAddress server,
                              double latency,
                              int length)
Przekazuje do obiektu informacje o pojedyńczym połączeniu z serwerem (wraz z parametrami takimi jak ilość otrzymanych danych i opóźnienie).

Jeśli na mapie nie było wcześniej informacji o komunikacji z danym serwerem to metoda sprawdzi (w nowym wątku) fizyczne położenie serwera, oraz ścieżkę routerów na drodze do niego (traceroute) i doda do mapy informacje o komunikacji z serwerem. Jeśli mapa obejmowała już wcześniej komunikację z danym serwerem to metoda jedynie zaktualizuje jej właściwości korzystając z parametrów latency (opóźnienie) i length (ilość danych w połączniu).

Parameters:
server - adres ip serwera którego dotyczy to połączenie
latency - wartość opóźnienia w połączeniu (w sekundach)
length - ilość bajtów danych otrzymanych w ramach danego połączenia
See Also:
HttpMap.ConversationProperties.update(double, int), paintComponent(Graphics), Geolocation, Traceroute

clear

public void clear()
Usuwa wszystkie informacje o wcześniejszej komunikacji z serwerami.


paintComponent

public void paintComponent(Graphics g)
Rysuje na mapie informacje o komunikacji z serwerami wg. listy serwerów przechowywanej wewnątrz obiektu.

Każda linia narysowana na mapie symbolizuje sumę wszystkich połączeń wykonanych z danym serwerem. Grubość i kolor linii zależy od właściwości opisanych w opisie metody drawConnection(Graphics2D, ConversationProperties, float, float).

Jeśli obiekt otrzymał listę "wyróżnionych" połączeń (czyli w praktyce tych, które są zaznaczone w tabeli pod mapą) to pozostałe linie zostaną "wyszarzone", a do wyróżnionych linii dodatkowo dodane zostaną etykiety komputerów na krańcach połączenia (na biało) oraz routerów biorących udział w przekazywaniu wiadomości (na szaro).

Overrides:
paintComponent in class LudMapPanel

drawText

public void drawText(Graphics2D g2d,
                     String text,
                     Coordinates co,
                     Color color)
Wypisywanie tekstu w określonym punkcie mapy.

Parameters:
g2d - kontekst graficzny
text - tekst do wypisania
co - współrzędne geograficzne punktu na mapie w którym ma zostać wypisany tekst
color - kolor tekstu (niezależnie od wybranego koloru tekst będzie dodatkowo posiadał czarny cień)

drawConnection

public void drawConnection(Graphics2D g2d,
                           HttpMap.ConversationProperties properties,
                           float saturation,
                           float brigthness)
Rysuje na mapie linie symbolizującą komunikację z serwerem, której właściwości zostały przekazane jako parametr properties.

Grubość linii zależy od sumy ilości danych, które zostały otrzymwane w komunikacji z serwerem. Bazowo jest to 1px, każde pełne 50kb otrzymanych danych zwiększa grubość o dodatkowe 1px. Maksymalna grubość to 10px.

Kolor linii zależy od średniego opóźnienia w komunikacji z serwerem. Barwa płynnie przechodzi od koloru turkusowego (wartości zbliżone do 0 ms), przez zielony i żółty aż do czerwonego (wartości w okolicach 500ms i więcej).

Parameters:
g2d - kontekst graficzny
properties - właściwości komunikacji do narysowania
saturation - nasycenie koloru linii
brigthness - jasność koloru linii

setSelected

public void setSelected(Set<InetAddress> selected)
Ustawia listę serwerów, które mają zostać wyróżnione na mapie. Komunikacja z nimi będzie wyróżniona kolorystycznie i będzie zawierać tekstowe etykiety.

Parameters:
selected - adresy ip serwerów których komunikacja ma być wyróżniona lub wartość null jeśli nic nie ma być wyróżnione.
See Also:
paintComponent(Graphics)