You can subscribe to this list here.
2005 |
Jan
|
Feb
(14) |
Mar
|
Apr
(4) |
May
(57) |
Jun
(14) |
Jul
(15) |
Aug
(5) |
Sep
(29) |
Oct
(13) |
Nov
(44) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(14) |
Feb
(78) |
Mar
(55) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(12) |
Dec
(9) |
2007 |
Jan
(21) |
Feb
(67) |
Mar
(39) |
Apr
(28) |
May
(7) |
Jun
|
Jul
(6) |
Aug
(2) |
Sep
(1) |
Oct
(18) |
Nov
(8) |
Dec
(11) |
2008 |
Jan
(16) |
Feb
(12) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Andreas W. <an...@us...> - 2006-01-17 15:51:16
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/model In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22954/src/net/sf/magicmap/server/model Log Message: Directory /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/model added to the repository --> Using per-directory sticky tag `ServerCalculationBranch' |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:14
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/calculation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23010/src/net/sf/magicmap/server/calculation Added Files: Tag: ServerCalculationBranch CalculationManager.java Calculation.java Log Message: First Version --- NEW FILE: CalculationManager.java --- package net.sf.magicmap.server.calculation; import java.util.HashMap; import net.sf.magicmap.server.model.node.NodeModel; public class CalculationManager { private HashMap<String,NodeModel> } --- NEW FILE: Calculation.java --- package net.sf.magicmap.server.calculation; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import javax.swing.SwingUtilities; import net.sf.magicmap.server.dto.AccessPointDTO; import net.sf.magicmap.server.dto.ClientDTO; import net.sf.magicmap.server.dto.PositionDTO; import net.sf.magicmap.server.dto.SignalCharacterDTO; import net.sf.magicmap.server.dto.SimpleScanResultDTO; import net.sf.magicmap.server.interfaces.CalculationInterface; import net.sf.magicmap.server.model.node.AccessPointNode; import net.sf.magicmap.server.model.node.ClientNode; import net.sf.magicmap.server.model.node.LocationNode; import net.sf.magicmap.server.model.node.Node; import net.sf.magicmap.server.model.node.NodeModel; public class Calculation implements CalculationInterface { public void positionCreatedOrUpdatedOrDeleted(String mapName, PositionDTO position) { try{ SwingUtilities.invokeAndWait(new Runnable() { public void run(){ try{ NodeModel nodeModel = controller.getNodeModel(); Node node = nodeModel.findNode(position.getName()); if (position.isDeleted()){ if (position.getClient() == null && position.getAccessPoint() == null){ if (node != null){ // Referenzpunkt wird gelöscht if (node.getType() == NodeModel.NODETYPE_LOCATION){ // Aus dem lokalen Graphen entfernen das Ding nodeModel.removeNode(node); } else{ System.out .println("Position with location information deleted, but node with given name is not a location!"); } } else{ System.out.println("Position with location information deleted, but no node found for it."); } return; } if (position.getClient() != null){ Node client = nodeModel.findNode(position.getClient().getName()); /* if (client != null) { // Client wurde "frei" gemacht if (client.getType() == NodeModel.NODETYPE_CLIENT) { client.setFix(false); System.out.println("Client unfixed."); } else { System.out.println("Position with client deleted, but node with given name is not a client!"); } } else { System.out.println("Position with client deleted, but no node found for it."); }*/ return; } if (position.getAccessPoint() != null){ AccessPointNode ap = nodeModel.findAccessPoint(position.getAccessPoint().getMac()); if (ap != null){ // AccessPoint wurde "frei" gemacht ap.setFix(false); System.out.println("Accesspoint unfixed."); } else{ System.out.println("Position with accesspoint deleted, but no node found for it."); } return; } System.out.println("Position with id " + position.getId().longValue() + " was deleted but not handled."); return; } else{ // Neues Positionsobjekt oder altes wurde aktualisiert (Location) if (position.getClient() == null && position.getAccessPoint() == null){ // Referenzpunkt angelegt oder aktualisiert LocationNode location; if (node == null){ // Referenzpunkt bisher unbekannt location = new LocationNode(nodeModel); location.setId(position.getId().longValue()); location.setName(position.getName()); nodeModel.addNode(location); if (position.getPosX().intValue() != -1 && position.getPosY().intValue() != -1){ location.setPosition(position.getPosX().intValue(), position.getPosY().intValue()); location.setFix(true); } else{ location.setFix(false); } // Signalcharakteristik auswerden und gesehene // AccessPoints ebenfalls erzeugen bzw. mit ihnen Verbindungen // herstellen SignalCharacterDTO sc = position.getCharacter(); SimpleScanResultDTO[] sr = sc.getSimpleScanResults(); for (int i = 0; i < sr.length; i++){ SimpleScanResultDTO r = sr[i]; String mac = r.getMacAP(); // Gibt es ggf. einen AP mit der Mac-Adresse? AccessPointNode ap = nodeModel.findAccessPoint(mac); if (ap == null){ // Nein ap = new AccessPointNode(nodeModel); ap.setMacAddress(mac); nodeModel.addNode(ap); //ap.setName(mac); } location.seesAccessPoint(ap, r.getSignalLevel().doubleValue()); } } else{ System.out.println("Referenzpunkt verschoben."); // Referenzpunkt wird nur aktualisiert, wir gehen davon aus // das sich nur die Position verändern darf (die Programmlogik sieht // es jedenfalls so vor, Ändern der APs geschieht über Löschen und // Neuanlegen) location = (LocationNode) node; location.setId(position.getId().longValue()); // Falls nicht gesetzt // Nur Position von fixierten Orten/Referenzpunkten beachten if (position.isFixed()){ location.setPosition(position.getPosX().intValue(), position.getPosY().intValue()); location.setFix(true); } else{ location.setFix(false); } // Signalcharakteristik auswerden und gesehene // AccessPoints ebenfalls erzeugen bzw. mit ihnen Verbindungen // herstellen SignalCharacterDTO sc = position.getCharacter(); SimpleScanResultDTO[] sr = sc.getSimpleScanResults(); // Alle momentan gesehenen AccessPoints merken ArrayList seenAps = location.getSeenAccessPoints(); for (int i = 0; i < sr.length; i++){ SimpleScanResultDTO r = sr[i]; String mac = r.getMacAP(); // Gibt es ggf. einen AP mit der Mac-Adresse? AccessPointNode ap = nodeModel.findAccessPoint(mac); if (ap == null){ // Nein ap = new AccessPointNode(nodeModel); ap.setMacAddress(mac); nodeModel.addNode(ap); //ap.setName(mac); } else{ // AccessPoint nur aktualisieren? if (seenAps.remove(ap)){ // Nur Signallevel aktualisieren location.setSignalLevelForAcessPoint(ap, r.getSignalLevel().doubleValue()); } else{ // Neu location.seesAccessPoint(ap, r.getSignalLevel().doubleValue()); } } } // Alle APs aus seenAps werden demzufolge nicht mehr gesehen und // dies teilen wir unserem Modell mit for (int i = 0; i < seenAps.size(); i++){ AccessPointNode ap = (AccessPointNode) seenAps.get(i); location.notSeesAccessPoint(ap); } } return; } if (position.getAccessPoint() != null){ System.out.println("Accesspointposition erzeugt oder aktualisiert."); AccessPointDTO apdto = position.getAccessPoint(); AccessPointNode ap = nodeModel.findAccessPoint(apdto.getMac()); if (ap == null){ // Gibt es noch nicht in unserem Modell => Schnell erzeugen ap = new AccessPointNode(nodeModel); ap.setMacAddress(apdto.getMac()); nodeModel.addNode(ap); } ap.setId(position.getId().longValue()); // Nur Position von fixierten AccessPoints beachten if (position.isFixed()){ // AccessPoint wurde fixiert ap.setPosition(position.getPosX().intValue(), position.getPosY().intValue()); ap.setFix(true); } else{ // Loser AccessPoint gemeldet ap.setFix(false); System.out.println("Unfix accesspoint received. This was not in our contract."); } return; } if (position.getClient() != null && position.getCharacter() != null){ //System.out.println("Clientposition erzeugt oder aktualisiert für Client " + position.getClient().getName()); ClientDTO clientdto = position.getClient(); ClientNode client = (ClientNode) nodeModel.findNode(clientdto.getName()); // Wenn eigener Client unfixiert kommt Positionsangaben ignorieren if (client == controller.getClient() && !position.isFixed()){ // Aber noch schnell unfixieren client.setFix(false); System.out.println("Eigener Client wird ignoriert"); return; } else{ if (client == controller.getClient() && position.isFixed()){ System.out.println("Eigener Client empfangen mit fixierter Position."); } } // Sonst beachten wir alle Positionen die wir bekommen if (client == null){ System.out.println("Neuer Client empfangen (" + clientdto.getMac() + ", " + clientdto.getName() + ". Füge zum Graphen hinzu."); client = new ClientNode(nodeModel); client.setMacAddress(clientdto.getMac()); client.setName(clientdto.getName()); nodeModel.addNode(client); } System.out.println("Position für Client " + client.getName() + " empfangen. fix = " + position.isFixed()); //client.setPosition(position.getPosX().intValue(), position.getPosY().intValue()); if (position.isFixed()){ // Client wurde fixiert client.setFix(true); client.setPosition(position.getPosX().intValue(), position.getPosY().intValue()); } else{ client.setFix(false); } client.setId(position.getId().longValue()); // Signalstärken usw. verwaltet der scannende Client selbst if (client == controller.getClient()) return; // Signalcharakteristik auswerden und gesehene // AccessPoints ebenfalls erzeugen bzw. mit ihnen Verbindungen // herstellen SignalCharacterDTO sc = position.getCharacter(); SimpleScanResultDTO[] sr = sc.getSimpleScanResults(); // Alle momentan gesehenen AccessPoints merken ArrayList seenAps = client.getSeenAccessPoints(); if (sr != null){ for (int i = 0; i < sr.length; i++){ SimpleScanResultDTO r = sr[i]; String mac = r.getMacAP(); // Gibt es ggf. einen AP mit der Mac-Adresse? AccessPointNode ap = nodeModel.findAccessPoint(mac); if (ap == null){ // Nein ap = new AccessPointNode(nodeModel); ap.setMacAddress(mac); nodeModel.addNode(ap); //ap.setName(mac); } else{ // AccessPoint nur aktualisieren? if (seenAps.remove(ap)){ // Nur Signallevel aktualisieren client.setSignalLevelForAcessPoint(ap, r.getSignalLevel().doubleValue()); } else{ // Neu client.seesAccessPoint(ap, r.getSignalLevel().doubleValue()); } } } } // Alle APs aus seenAps werden demzufolge nicht mehr gesehen und // dies teilen wir unserem Modell mit for (int i = 0; i < seenAps.size(); i++){ AccessPointNode ap = (AccessPointNode) seenAps.get(i); client.notSeesAccessPoint(ap); } return; } } System.out.println("Unbekannte Position. Kann nix anfangen damit."); } catch (Exception e){ e.printStackTrace(); } } }); } catch (InterruptedException e){ // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e){ // TODO Auto-generated catch block e.printStackTrace(); } } public PositionDTO[] getPositions(String mapName) { // TODO Auto-generated method stub return null; } } |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:14
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/interfaces In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23010/src/net/sf/magicmap/server/interfaces Added Files: Tag: ServerCalculationBranch CalculationInterface.java NodeModelListener.java Log Message: First Version --- NEW FILE: CalculationInterface.java --- package net.sf.magicmap.server.interfaces; import net.sf.magicmap.server.dto.PositionDTO; public interface CalculationInterface { public abstract void positionCreatedOrUpdatedOrDeleted(String mapName, PositionDTO position); public abstract PositionDTO[] getPositions(String mapName); } --- NEW FILE: NodeModelListener.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.interfaces; import net.sf.magicmap.server.model.node.Node; /** * Ändern sich Dinge am Model, so werden die Methoden * dieses Listeners aufgerufen. Ein View kann diesen * implementieren und so seine Darstellung immer auf dem aktuellen * Stand halten * @author thuebner */ public interface NodeModelListener { /** * Knoten im Graph dazu * @param node */ public void nodeAddedEvent(Node node); /** * Knoten hat eigentschaften geändert * @param node */ public void nodeUpdatedEvent(Node node, int type, Object data); /** * Knoten wurde enternt * @param node */ public void nodeRemovedEvent(Node node); } |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:14
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/model/node In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23010/src/net/sf/magicmap/server/model/node Added Files: Tag: ServerCalculationBranch LocationNode.java AccessPointNode.java ClientNode.java AccessPointSeerNode.java Node.java AccessPointEdge.java NodeModel.java Log Message: First Version --- NEW FILE: LocationNode.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; import java.util.ArrayList; /** * Ein Ort bzw. Referenzpunkt ist eine Art eingefrorenes Objekt, welches mal * AccessPoints mit Signalstärken gesehen hat. * @see net.sf.magicmap.client.models#AccessPointSeerNode * @author thuebner */ public class LocationNode extends AccessPointSeerNode { public LocationNode(NodeModel model) { super(model); } /** * Liefert AccessPoints mit denen dieser Referenzpunkt * verbunden werden soll. */ /*public ArrayList getNeighbors() { return super.getNeighbors(); }*/ public ArrayList getLocations(){ ArrayList locations = getModel().getLocationsWithAtLeastOneAccessPoint(super.getNeighbors(), this); return locations; } public ArrayList getNeighbors(){ ArrayList result = super.getNeighbors(); // Alle Locations, die mind. einen AccessPoint gemeinsam haben mit // diesem Client System.out.println("Location sieht " + result.size() + " APs"); ArrayList locations = getModel().getLocationsWithAtLeastOneAccessPoint(result, this); System.out.println("Location: " + getName() + " soll verbunden werden mit " + locations.size() + " anderen Locations."); result.addAll(getLocations()); return result; } /* (non-Javadoc) * @see net.sf.magicmap.client.model.Node#getType() */ public int getType(){ // TODO Auto-generated method stub return NodeModel.NODETYPE_LOCATION; } } --- NEW FILE: Node.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; import java.util.ArrayList; /** * Einfacher Knoten in unserem Graphen aus Clients, AccessPoints, * und Referenzpunkten. * @author thuebner */ public abstract class Node { private static int counter = 0; private String name; // Beschreibung private String internal; protected boolean fix; // Fest oder beweglich protected boolean update = false; // wenn Referenzpunktupdate = true private int x; // Position (nur wenn fix = true) private int y; private long id; private NodeModel model; /** * Erzeugt leeren Knoten. Ein Knoten muß über sein * NodeModel bescheid wissen, damit er verschiedene * Dinge abfragen kann. Nur so können beliebige Knotentypen ohne * Änderungen an NodeModel hinzugefügt werden. Siehe Methode * getNeighbors, welche vom Knotentyp abhängig mit Hilfe von NodeModel * potenzielle Nachbarknoten des Knoten sucht. * @param model */ public Node(NodeModel model) { this.model = model; counter++; // Eindeutigen Defaultnamen setzen this.internal = this.getClass().getName(); this.internal = internal.substring(this.internal.lastIndexOf('.') + 1) + counter; this.name = this.internal; this.id = -1; } public String getDisplayName(){ return this.name; } public boolean isUpdate(){ return update; } public void setUpdate(boolean newupdate){ this.update = newupdate; this.model.updateNode(this,NodeModel.UPDATE_RESCAN,null); } public boolean isFix(){ return fix; } public void setFix(boolean fix){ this.fix = fix; this.model.updateNode(this, NodeModel.UPDATE_FIXSTATE, null); } public String getName(){ return name; } public final void setName(String name){ String oldname = this.name; this.name = name; if (model.nodeExists(oldname)) model.rehashNode(this, oldname); } public int getX(){ return x; } public int getY(){ return y; } public void setPositionSilent(int x, int y){ this.x = x; this.y = y; } public void setPosition(int x, int y){ setPositionSilent(x, y); model.updateNode(this, NodeModel.UPDATE_POSITION, null); } public abstract ArrayList getNeighbors(); public NodeModel getModel(){ return model; } public abstract int getType(); public int hashCode(){ return internal.hashCode(); } public String toString(){ return internal; } public long getId(){ return id; } public void setId(long id){ this.id = id; } } --- NEW FILE: NodeModel.java --- package net.sf.magicmap.server.model.node; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import net.sf.magicmap.server.interfaces.NodeModelListener; /** * Model zur Beschreibung des aktuellen Zustands in der * Welt der Clients und AccessPoints. Es können Anfragen * gestellt und Berechnungen durchgeführt werden auf * dem Modell * * @author thuebner */ public class NodeModel { public static final int UPDATE_SEESACCESSPOINT = 0; public static final int UPDATE_NOTSEESACCESSPOINT = 1; public static final int UPDATE_LABELCHANGED = 2; public static final int UPDATE_FIXSTATE = 3; public static final int UPDATE_CLEAR = 4; public static final int UPDATE_POSITION = 5; public static final int UPDATE_RESCAN = 6; public static final int NODETYPE_ACCESSPOINT = 1; public static final int NODETYPE_CLIENT = 2; public static final int NODETYPE_LOCATION = 3; private HashMap nodes; private HashMap accesspoints; private ArrayList listeners; /** * Erzeugt neues leeres Model * */ public NodeModel() { this.nodes = new HashMap(); this.accesspoints = new HashMap(); this.listeners = new ArrayList(); } public void addNode(Node node){ this.nodes.put(node.getName(), node); if (node.getType() == NODETYPE_ACCESSPOINT){ // Wenn AccessPoint, dann nach MAC-Adresse extra hashen this.accesspoints.put(((AccessPointNode) node).getMacAddress(), node); } Iterator it = listeners.iterator(); while (it.hasNext()){ NodeModelListener l = (NodeModelListener) it.next(); l.nodeAddedEvent(node); } } public void removeNode(Node node){ this.nodes.remove(node.getName()); if (node.getType() == NODETYPE_ACCESSPOINT){ // Wenn AccessPoint, dann nach MAC-Adresse extra hashen this.accesspoints.remove(((AccessPointNode) node).getMacAddress()); } Iterator it = listeners.iterator(); while (it.hasNext()){ NodeModelListener l = (NodeModelListener) it.next(); l.nodeRemovedEvent(node); } } public void fireSeesAccessPoint(Node node, AccessPointNode ap){ updateNode(node, UPDATE_SEESACCESSPOINT, ap); } public void fireNotSeesAccessPoint(Node node, AccessPointNode ap){ updateNode(node, UPDATE_NOTSEESACCESSPOINT, ap); } public void updateNode(Node node, int type, Object data){ Iterator it = listeners.iterator(); while (it.hasNext()){ NodeModelListener l = (NodeModelListener) it.next(); l.nodeUpdatedEvent(node, type, data); } } /** * Aktualisiert den Hash-Schlüssel für einen Knoten. * Unter Node.name wird der neue Hashwert erwartet. * * @param node Knoten der aktualisiert werden soll * @param name Alter Hash-Wert */ public void rehashNode(Node node, String name){ nodes.remove(name); nodes.put(node.getName(), node); updateNode(node, UPDATE_LABELCHANGED, name); } public ArrayList findNeighbors(Node node){ ArrayList result = new ArrayList(); if (node instanceof ClientNode){ ArrayList aes = ((ClientNode) node).getApEdges(); } return result; } public ArrayList findNonNeighbors(Node node){ ArrayList result = new ArrayList(); return result; } public void addNodeModelListener(NodeModelListener l){ if (!listeners.contains(l)){ this.listeners.add(l); Iterator it = nodes.values().iterator(); while (it.hasNext()){ Node node = (Node) it.next(); l.nodeAddedEvent(node); } } } public void removeNodeModelListener(NodeModelListener l){ this.listeners.remove(l); } public NodeModelListener[] nodeModelListeners(){ return (NodeModelListener[]) listeners.toArray(new NodeModelListener[0]); } public ArrayList getLocationsWithAtLeastOneAccessPoint(ArrayList accesspoints){ return getLocationsWithAtLeastOneAccessPoint(accesspoints, null); } /** * Gibt alle Orte/Referenzpunkte zurück, die mindestens einen * AccessPoint mit der übergebenen gemeinsam haben. * @param result * @return */ public ArrayList getLocationsWithAtLeastOneAccessPoint(ArrayList accesspoints, Node exclude){ ArrayList result = new ArrayList(); HashSet accessPointsHash = new HashSet(accesspoints); Iterator it = nodes.values().iterator(); while (it.hasNext()){ Node o = (Node) it.next(); if (o.getType() == NodeModel.NODETYPE_LOCATION && exclude != o){ LocationNode location = (LocationNode) o; ArrayList seenAccessPoints = location.getSeenAccessPoints(); for (int j = 0; j < seenAccessPoints.size(); j++){ AccessPointNode p = (AccessPointNode) seenAccessPoints.get(j); if (accessPointsHash.contains(p)){ result.add(location); break; } } } } return result; } public Node findNode(String name){ Node node = (Node) nodes.get(name); return node; } public boolean nodeExists(String name){ return (findNode(name) != null); } public AccessPointNode findAccessPoint(String mac){ AccessPointNode node = (AccessPointNode) accesspoints.get(mac); return node; } public boolean accessPointExists(String mac){ return (findAccessPoint(mac) != null); } /** * @return */ public Collection getNodes(){ return Collections.unmodifiableCollection(nodes.values()); } /** * Entfernt alles aus dem Model * */ public void clear(){ this.nodes.clear(); this.accesspoints.clear(); updateNode(null, UPDATE_CLEAR, null); } } --- NEW FILE: AccessPointNode.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; import java.util.ArrayList; /** * * @author thuebner */ public class AccessPointNode extends Node { /** * @param model */ public AccessPointNode(NodeModel model) { super(model); } private String macAddress; public String getMacAddress(){ return macAddress; } public void setMacAddress(String macAddress){ this.macAddress = macAddress; } public String getDisplayName(){ return this.macAddress; } // Ein AccessPoint hat von sich aus keine // verbindungen irgendwohin public ArrayList getNeighbors(){ return new ArrayList(); } /* (non-Javadoc) * @see net.sf.magicmap.client.model.Node#getType() */ public int getType(){ // TODO Auto-generated method stub return NodeModel.NODETYPE_ACCESSPOINT; } } --- NEW FILE: AccessPointEdge.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; /** * @author thuebner */ public class AccessPointEdge { public AccessPointNode accessPoint; public double signalLevel; public AccessPointNode getAccessPoint(){ return accessPoint; } public void setAccessPoint(AccessPointNode accessPoint){ this.accessPoint = accessPoint; } public double getSignalLevel(){ return signalLevel; } public void setSignalLevel(double signalStrength){ this.signalLevel = signalStrength; } } --- NEW FILE: ClientNode.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; import java.util.ArrayList; /** * Ein Client sieht Access Points und ist dabei in der Regel * frei beweglich. * @see net.sf.magicmap.client.models#AccessPointSeerNode * @author thuebner */ public class ClientNode extends AccessPointSeerNode { public String macAddress; /** * @param model */ public ClientNode(NodeModel model) { super(model); this.macAddress = "00-00-00-00-00-00"; } public ArrayList getLocations(){ ArrayList locations = getModel().getLocationsWithAtLeastOneAccessPoint(super.getNeighbors()); return locations; } public ArrayList getNeighbors(){ ArrayList result = super.getNeighbors(); // Alle Locations, die mind. einen AccessPoint gemeinsam haben mit // diesem Client ArrayList locations = getModel().getLocationsWithAtLeastOneAccessPoint(result); result.addAll(getLocations()); return result; } /* (non-Javadoc) * @see net.sf.magicmap.client.model.Node#getType() */ public int getType(){ // TODO Auto-generated method stub return NodeModel.NODETYPE_CLIENT; } public String getMacAddress(){ return macAddress; } public void setMacAddress(String macAddress){ this.macAddress = macAddress; } } --- NEW FILE: AccessPointSeerNode.java --- /* * Created on 25.11.2004 */ package net.sf.magicmap.server.model.node; import java.util.ArrayList; import java.util.Iterator; import net.sf.magicmap.server.measurement.Constants; /** * Ein Objekt was Access Points in einer Umgebung mit Signalstärken * sehen kann. * @author thuebner */ public abstract class AccessPointSeerNode extends Node { /* * Alle Kanten zu AccessPoints (AccessPointEdge) mit * entsprechenden Informationen über die Signalstärke * */ private ArrayList apEdges; public AccessPointSeerNode(NodeModel model) { super(model); this.apEdges = new ArrayList(); } public ArrayList getApEdges(){ return apEdges; } public ArrayList getSeenAccessPoints(){ ArrayList result = new ArrayList(); // Alle AccessPoints, die gesehen werden Iterator it = apEdges.iterator(); while (it.hasNext()){ AccessPointEdge ae = (AccessPointEdge) it.next(); result.add(ae.getAccessPoint()); } return result; } /** * Liefert Signalstärke eines AccessPoints zurück, die * vom AccessPointer-Seher gemessen wurde oder * net.sf.magicmap.client.measurement.Constants.MIN_SIGNALLEVEL wenn * AccessPoint nicht gesehen wird. * @param ap * @return */ public double getSignalLevelForAccessPoint(AccessPointNode ap){ Iterator it = apEdges.iterator(); while (it.hasNext()){ AccessPointEdge ae = (AccessPointEdge) it.next(); if (ae.getAccessPoint() == ap){ return ae.getSignalLevel(); } } return Constants.MIN_SIGNALLEVEL; } /** * Setzt / Aktualisiert die Signalstärke zu einem Access Point * @param ap * @param level */ public void setSignalLevelForAcessPoint(AccessPointNode ap, double level){ Iterator it = apEdges.iterator(); while (it.hasNext()){ AccessPointEdge ae = (AccessPointEdge) it.next(); if (ae.getAccessPoint() == ap){ ae.setSignalLevel(level); // Wichtig! this.getModel().fireSeesAccessPoint(this, ap); return; } } // Gibt es noch nicht AccessPointEdge ae = new AccessPointEdge(); ae.setAccessPoint(ap); ae.setSignalLevel(level); this.apEdges.add(ae); this.getModel().fireSeesAccessPoint(this, ap); } public void seesAccessPoint(AccessPointNode ap, double signalStrength){ if (!getSeenAccessPoints().contains(ap)){ AccessPointEdge ae = new AccessPointEdge(); ae.setAccessPoint(ap); ae.setSignalLevel(signalStrength); this.apEdges.add(ae); getModel().fireSeesAccessPoint(this, ap); } } public void notSeesAccessPoint(AccessPointNode ap){ Iterator it = apEdges.iterator(); while (it.hasNext()){ AccessPointEdge ae = (AccessPointEdge) it.next(); if (ae.getAccessPoint() == ap){ it.remove(); break; } } getModel().fireNotSeesAccessPoint(this, ap); } /** * Liefert alle Knoten zurück, zu denen eine gerichtete Kante * gezeichnet werden muß. Dies sind bei einen AccessPoint-Seher nur * die AccessPoints selbst. */ public ArrayList getNeighbors(){ return getSeenAccessPoints(); } } |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:08
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/measurement In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22954/src/net/sf/magicmap/server/measurement Log Message: Directory /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/measurement added to the repository --> Using per-directory sticky tag `ServerCalculationBranch' |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:03
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/calculation In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22954/src/net/sf/magicmap/server/calculation Log Message: Directory /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/calculation added to the repository --> Using per-directory sticky tag `ServerCalculationBranch' |
From: Andreas W. <an...@us...> - 2006-01-17 15:51:03
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/model/node In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22954/src/net/sf/magicmap/server/model/node Log Message: Directory /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/model/node added to the repository |
From: Florian L. <fle...@us...> - 2005-12-06 11:45:27
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27220/src/net/sf/magicmap/server/cache Modified Files: PositionCache.java Log Message: Daten aus Chache in Datanbank schreiben (ServletContextListener) Index: PositionCache.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache/PositionCache.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PositionCache.java 5 Dec 2005 16:11:43 -0000 1.8 --- PositionCache.java 6 Dec 2005 11:45:16 -0000 1.9 *************** *** 363,372 **** while (mapNames.hasMoreElements()){ String currentMap = mapNames.nextElement(); - currentMap = currentMap.substring(0,currentMap.indexOf('#')-1); PositionCacheEntry posCache = this.get(currentMap); ! PositionDTO[] positions = posCache.getPositionsSince(Long.valueOf(-1)); ! for (int i = 0; i < positions.length; ++i){ ! writePositionToDB(currentMap, positions[i]); } } --- 363,374 ---- while (mapNames.hasMoreElements()){ String currentMap = mapNames.nextElement(); PositionCacheEntry posCache = this.get(currentMap); ! currentMap = currentMap.substring(0,currentMap.indexOf('#')); ! if(posCache != null){ ! PositionDTO[] positions = posCache.getPositionsSince(Long.valueOf(-1)); ! for (int i = 0; i < positions.length; ++i){ ! writePositionToDB(currentMap, positions[i]); } + } } |
From: Florian L. <fle...@us...> - 2005-12-05 16:11:59
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8592/src/net/sf/magicmap/server Modified Files: ApplicationWatch.java Log Message: Daten aus Chache in Datanbank schreiben (ServletContextListener) Index: ApplicationWatch.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/ApplicationWatch.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ApplicationWatch.java 11 May 2005 10:45:05 -0000 1.3 --- ApplicationWatch.java 5 Dec 2005 16:11:43 -0000 1.4 *************** *** 11,14 **** --- 11,16 ---- import javax.servlet.ServletContextListener; + import net.sf.magicmap.server.cache.PositionCache; + import net.sf.magicmap.server.dto.PositionDTO; import net.sf.magicmap.server.utils.JDOUtil; *************** *** 71,74 **** --- 73,77 ---- public void contextDestroyed(ServletContextEvent arg0){ + PositionCache.getPositionCache().writeCacheDataToDB(); try{ JDOUtil.pmfactory.close(); |
From: Florian L. <fle...@us...> - 2005-12-05 16:11:53
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8592/src/net/sf/magicmap/server/cache Modified Files: PositionCache.java Log Message: Daten aus Chache in Datanbank schreiben (ServletContextListener) Index: PositionCache.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache/PositionCache.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PositionCache.java 30 Nov 2005 17:57:13 -0000 1.7 --- PositionCache.java 5 Dec 2005 16:11:43 -0000 1.8 *************** *** 19,22 **** --- 19,26 ---- import javax.jdo.Query; import javax.jdo.Transaction; + import javax.servlet.ServletContextEvent; + import javax.servlet.ServletContextListener; + + import com.sun.org.apache.xml.internal.utils.SuballocatedByteVector; import net.sf.magicmap.db.AccessPoint; *************** *** 51,67 **** } ! protected void finalize() throws Throwable{ ! Enumeration<String> mapNames = this.keys(); ! while (mapNames.hasMoreElements()){ ! String currentMap = mapNames.nextElement(); ! PositionCacheEntry posCache = this.get(currentMap); ! PositionDTO[] positions = posCache.getPositionsSince(Long.valueOf(-1)); ! for (int i = 0; i < positions.length; ++i){ ! writePositionToDB(currentMap, positions[i]); ! } ! } ! super.finalize(); ! } ! private Map checkMap(String mapName, PersistenceManager pm) throws MapException{ Map result = null; --- 55,59 ---- } ! private Map checkMap(String mapName, PersistenceManager pm) throws MapException{ Map result = null; *************** *** 155,158 **** --- 147,151 ---- private void writePositionToDB(String mapName, PositionDTO position){ + System.out.println("Finalize:writePositionToDB()"); PersistenceManager pm = null; Transaction tx = null; *************** *** 365,368 **** --- 358,377 ---- } + public void writeCacheDataToDB(){ + System.out.println("Begin Schreiben in Datenbank"); + Enumeration<String> mapNames = this.keys(); + while (mapNames.hasMoreElements()){ + String currentMap = mapNames.nextElement(); + currentMap = currentMap.substring(0,currentMap.indexOf('#')-1); + PositionCacheEntry posCache = this.get(currentMap); + PositionDTO[] positions = posCache.getPositionsSince(Long.valueOf(-1)); + for (int i = 0; i < positions.length; ++i){ + writePositionToDB(currentMap, positions[i]); + } + } + + System.out.println("Schreiben in Datenbank beendet"); + } + } |
From: Florian L. <fle...@us...> - 2005-11-30 17:57:28
|
Update of /cvsroot/magicmap/magicmapserver/web/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15597/web/WEB-INF Modified Files: build.xml server-config.wsdd Log Message: DB integration in die ServerCaches: Daten werden bei initialisierung von der DB in die Caches geladen Index: server-config.wsdd =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/web/WEB-INF/server-config.wsdd,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** server-config.wsdd 25 Nov 2005 15:37:32 -0000 1.6 --- server-config.wsdd 30 Nov 2005 17:57:13 -0000 1.7 *************** *** 46,50 **** <service name="PositionFacade" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> ! <parameter name="className" value="net.sf.magicmap.server.facade.PositionFacade"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns3:SignalCharacterDTO" xmlns:ns3="urn:dto.server.magicmap.sf.net"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO" qname="ns4:SimpleScanResultDTO" xmlns:ns4="urn:dto.server.magicmap.sf.net"/> --- 46,50 ---- <service name="PositionFacade" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> ! <parameter name="className" value="net.sf.magicmap.server.facade.PositionFacade2"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns3:SignalCharacterDTO" xmlns:ns3="urn:dto.server.magicmap.sf.net"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO" qname="ns4:SimpleScanResultDTO" xmlns:ns4="urn:dto.server.magicmap.sf.net"/> Index: build.xml =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/web/WEB-INF/build.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** build.xml 25 Nov 2005 15:04:15 -0000 1.3 --- build.xml 30 Nov 2005 17:57:13 -0000 1.4 *************** *** 19,23 **** xmlfile="deploy_caches.wsdd" /> ! <!-- xmlfile="deploy_db.wsdd" --> </target> </project> --- 19,24 ---- xmlfile="deploy_caches.wsdd" /> ! <!-- xmlfile="deploy_db.wsdd" --> ! <!-- xmlfile="deploy_caches.wsdd" --> </target> </project> |
From: Florian L. <fle...@us...> - 2005-11-30 17:57:25
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15597/src/net/sf/magicmap/server/cache Modified Files: PositionCache.java Log Message: DB integration in die ServerCaches: Daten werden bei initialisierung von der DB in die Caches geladen Index: PositionCache.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache/PositionCache.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PositionCache.java 18 Nov 2005 14:41:59 -0000 1.6 --- PositionCache.java 30 Nov 2005 17:57:13 -0000 1.7 *************** *** 1,5 **** --- 1,11 ---- + package net.sf.magicmap.server.cache; + import java.sql.Timestamp; + import java.util.ArrayList; + import java.util.Arrays; import java.util.Collection; + import java.util.Date; + import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; *************** *** 9,203 **** import java.util.TreeMap; import net.sf.magicmap.db.Map; import net.sf.magicmap.server.dto.PositionDTO; import net.sf.magicmap.server.facade.PositionFacade; ! public class PositionCache extends Hashtable<String,PositionCacheEntry>{ ! ! // Sigleton Hashtable ! private static PositionCache single_positionCache = null; ! ! public static PositionCache getPositionCache(){ ! if (single_positionCache == null) ! single_positionCache = new PositionCache(); ! return single_positionCache; ! } - private PositionCache (){ - //TODO: hohle daten aus der Datenbank - } - - private String getMapString(Map map){ - return map.getName() + "#" + map.getImageURL() + "#" + map.getImageHeight().toString() + "#" + map.getImageWidth().toString(); - } - - private void addMapHashtable(Map map) { - - this.put(getMapString(map),new PositionCacheEntry()); - } - - private boolean existsMapHashtable(Map map){ - return this.containsKey(getMapString(map)); - } - - private PositionCacheEntry getMapHashtable(Map map){ - return this.get(getMapString(map)); - } - - public void createOrUpdatePosition(Map map, PositionDTO position){ - System.out.println("enter createOrUpdatePosition()"); - if(!existsMapHashtable(map)) - addMapHashtable(map); - if(getMapHashtable(map).existsPosition(position.getName())){ - getMapHashtable(map).removePosition(position.getName()); - } - getMapHashtable(map).addPosition(position); - } - - public PositionDTO[] getPositionsForMapSince(Map map,Long time){ - if(!existsMapHashtable(map)) - return new PositionDTO[0]; - return getMapHashtable(map).getPositionsSince(time); - } - - public PositionDTO getPositionForClientOnMap(Map map, String name){ - if(!existsMapHashtable(map)) - return null; - return getMapHashtable(map).getPosition(name); - - } - - public void movePosition (Map map, Long id, int x, int y, boolean fixed){ - if(existsMapHashtable(map)){ - getMapHashtable(map).movePosition(id, x, y, fixed); - } - } - - public void removePosition (Map map, Long id){ - if(existsMapHashtable(map)){ - getMapHashtable(map).removePosition(id); - } - } - - public void removePosition (Map map, String name){ - if(existsMapHashtable(map)){ - getMapHashtable(map).removePosition(name); - } - } - } class PositionCacheEntry { - private Hashtable<String,PositionDTO> positionHash; - private TreeMap<Long ,String> timeMap; - private Hashtable<Long, String> idHash; - - protected PositionCacheEntry (){ - positionHash = new Hashtable<String,PositionDTO>(60); - timeMap = new TreeMap<Long ,String>(); - idHash = new Hashtable<Long, String>(60); - } - - protected void removePosition(Long id) { - PositionDTO pos = getPosition(id); - pos.setDeleted(true); - Long time = System.currentTimeMillis(); - while(timeMap.containsKey(time)){ - ++time; - } - updateTime(pos.getLastModified(), time); - pos.setLastModified(time); - } ! protected void removePosition(String name) { ! PositionDTO pos = getPosition(name); ! pos.setDeleted(true); ! Long time = System.currentTimeMillis(); ! while(timeMap.containsKey(time)){ ! ++time; ! } ! updateTime(pos.getLastModified(), time); ! pos.setLastModified(time); ! } ! protected void addPosition(PositionDTO position){ ! Long id = new Long(1); ! while(idHash.containsKey(id)){ ! ++id; ! } ! position.setId(id); ! ! Long time = System.currentTimeMillis(); ! while(timeMap.containsKey(time)){ ! ++time; ! } ! position.setLastModified(time); ! ! timeMap.put(position.getLastModified(),position.getName()); ! idHash.put(id,position.getName()); ! positionHash.put(position.getName(),position); ! } ! ! protected void movePosition(Long id, int x, int y, boolean fixed){ ! if(!idHash.containsKey(id)){ ! return; ! } ! PositionDTO pos = getPosition(id); ! pos.setPosX(x); ! pos.setPosY(y); ! pos.setFixed(fixed); ! Long time = System.currentTimeMillis(); ! while(timeMap.containsKey(time)){ ! ++time; ! } ! updateTime(pos.getLastModified(), time); ! pos.setLastModified(time); ! } ! ! private void updateTime(Long oldTime, Long time){ ! timeMap.put(time, timeMap.get(oldTime)); ! timeMap.remove(oldTime); ! } ! ! protected boolean existsPosition(String name){ ! return positionHash.containsKey(name); ! } ! ! protected PositionDTO getPosition(String name){ ! return positionHash.get(name); ! } ! ! protected PositionDTO getPosition(Long id){ ! return positionHash.get(idHash.get(id)); ! } ! ! protected void deletePosition(String name){ ! timeMap.remove(positionHash.get(name).getLastModified()); ! idHash.remove(positionHash.get(name).getId()); ! positionHash.remove(name); ! } ! ! protected void deletePosition(Long id){ ! timeMap.remove(idHash.get(id)); ! positionHash.remove(idHash.get(id)); ! idHash.remove(id); ! } ! ! protected PositionDTO[] getPositionsSince(Long time){ ! System.out.println("enter getPositionsSince()"); ! Collection<String> newPositions = timeMap.tailMap(time).values(); ! System.out.println("Daten in timeMap: " + timeMap.toString()); ! System.out.println("Daten in tailMap: " + newPositions.toString()); ! PositionDTO [] positions = new PositionDTO[newPositions.size()]; ! Iterator it = newPositions.iterator(); ! int i = 0; ! while(it.hasNext()){ ! positions[i++] = getPosition((String)it.next()); ! } ! return positions; ! } ! } --- 15,482 ---- import java.util.TreeMap; + import javax.jdo.Extent; + import javax.jdo.PersistenceManager; + import javax.jdo.Query; + import javax.jdo.Transaction; + + import net.sf.magicmap.db.AccessPoint; + import net.sf.magicmap.db.Client; import net.sf.magicmap.db.Map; + import net.sf.magicmap.db.Position; + import net.sf.magicmap.db.ScanResult; + import net.sf.magicmap.db.Session; + import net.sf.magicmap.server.dto.AccessPointDTO; + import net.sf.magicmap.server.dto.ClientDTO; import net.sf.magicmap.server.dto.PositionDTO; + import net.sf.magicmap.server.dto.SignalCharacterDTO; + import net.sf.magicmap.server.dto.SimpleScanResultDTO; + import net.sf.magicmap.server.dto.StringReplacementDTO; + import net.sf.magicmap.server.exception.MapException; + import net.sf.magicmap.server.exception.SessionException; import net.sf.magicmap.server.facade.PositionFacade; + import net.sf.magicmap.server.utils.JDOUtil; + public class PositionCache extends Hashtable<String, PositionCacheEntry> { ! // Sigleton Hashtable ! private static PositionCache single_positionCache = null; ! ! public static PositionCache getPositionCache(){ ! if (single_positionCache == null) single_positionCache = new PositionCache(); ! return single_positionCache; ! } ! ! private PositionCache() { ! getDataFromDB(); ! } ! ! protected void finalize() throws Throwable{ ! Enumeration<String> mapNames = this.keys(); ! while (mapNames.hasMoreElements()){ ! String currentMap = mapNames.nextElement(); ! PositionCacheEntry posCache = this.get(currentMap); ! PositionDTO[] positions = posCache.getPositionsSince(Long.valueOf(-1)); ! for (int i = 0; i < positions.length; ++i){ ! writePositionToDB(currentMap, positions[i]); ! } ! } ! super.finalize(); ! } ! ! private Map checkMap(String mapName, PersistenceManager pm) throws MapException{ ! Map result = null; ! Collection results; ! Extent e = pm.getExtent(Map.class, true); ! Query query = pm.newQuery(e, "name == myName"); ! query.declareParameters("java.lang.String myName"); ! results = (Collection) query.execute(mapName); ! if (results != null && !results.isEmpty()){ ! result = (Map) results.iterator().next(); ! } else{ ! pm.currentTransaction().rollback(); ! throw new MapException("Karte mit dem namen:" + mapName + " existiert nicht"); ! } ! return result; ! } ! ! private Position checkPosition(String positionName, Map map, PersistenceManager pm){ ! Position result = null; ! Collection results; ! Extent e = pm.getExtent(Position.class, true); ! Query query = pm.newQuery(e, "name == myName && map == myMap"); ! query.declareParameters("java.lang.String myName, net.sf.magicmap.db.Map myMap"); ! query.declareImports("import java.lang.String; import net.sf.magicmap.db.Map;"); ! results = (Collection) query.execute(positionName, map); ! if (results != null && !results.isEmpty()){ ! result = (Position) results.iterator().next(); ! } ! return result; ! ! } ! ! private Client checkClient(String mac, PersistenceManager pm) throws MapException{ ! if (mac == null || "".equals(mac)){ ! pm.currentTransaction().rollback(); ! throw new MapException("Client mac darf nicht leer sein"); ! } ! Client result = null; ! Collection results; ! Extent e = pm.getExtent(Client.class, true); ! Query query = pm.newQuery(e, "mac == myMac"); ! query.declareParameters("java.lang.String myMac"); ! results = (Collection) query.execute(mac); ! if (results != null && !results.isEmpty()){ ! result = (Client) results.iterator().next(); ! } else{ ! pm.currentTransaction().rollback(); ! throw new MapException("Client mit der mac-adresse:" + mac + " existiert nicht"); ! } ! return result; ! ! } ! ! private AccessPoint findOrCreateAccessPoint(String macAP, PersistenceManager pm) throws MapException{ ! try{ ! AccessPoint result = null; ! Collection results; ! Extent e = pm.getExtent(AccessPoint.class, true); ! Query query = pm.newQuery(e, "mac == myMac"); ! query.declareParameters("java.lang.String myMac"); ! query.declareImports("import java.lang.String;"); ! results = (Collection) query.execute(macAP); ! if (results != null && !results.isEmpty()){ ! result = (AccessPoint) results.iterator().next(); ! } else{ ! result = new AccessPoint(macAP); ! pm.makePersistent(result); ! } ! return result; ! } catch (Exception e){ ! pm.currentTransaction().rollback(); ! throw new MapException("", e); ! } ! } ! ! private void setNewSignalCharacter(PositionDTO dto, PersistenceManager pm, Client client, Position pos) ! throws MapException{ ! // alle Scanresults dieser Position löschen ! pm.deletePersistentAll(pos.getScanResults()); ! SimpleScanResultDTO[] dtos = dto.getCharacter().getSimpleScanResults(); ! if (dtos != null){ ! for (int i = 0; i < dtos.length; i++){ ! AccessPoint ap = findOrCreateAccessPoint(dtos[i].getMacAP(), pm); ! //@TODO think about? ap.setSsid(dtos[i].getSsid()); ! ScanResult sr = new ScanResult(client, ap, dtos[i].getSignalLevel(), dtos[i].getNoise(), new Timestamp(dto.getLastModified())); ! pm.makePersistent(sr); ! sr.setPosition(pos); ! } ! } ! } ! ! private void writePositionToDB(String mapName, PositionDTO position){ ! PersistenceManager pm = null; ! Transaction tx = null; ! try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Map map = checkMap(mapName, pm); ! Position pos = checkPosition(position.getName(), map, pm); ! if (pos == null){ ! pos = new Position(map, position.getPosX(), position.getPosY(), position.getName()); ! pm.makePersistent(pos); ! } ! pos.setDeleted(position.isDeleted()); ! pos.setPosX(position.getPosX()); ! pos.setPosY(position.getPosY()); ! pos.setFixed(position.isFixed()); ! ! if (position.getClient() != null){ ! Client client = checkClient(position.getClient().getMac(), pm); ! if (client != null){ ! pos.setClient(client); ! setNewSignalCharacter(position, pm, client, pos); ! } ! } ! if (position.getAccessPoint() != null){ ! AccessPoint ap = findOrCreateAccessPoint(position.getAccessPoint().getMac(), pm); ! pos.setAccessPoint(ap); ! } ! JDOUtil.commit(tx);; ! } catch (Exception e){ ! e.printStackTrace(); ! } finally{ ! if (tx.isActive()){ ! tx.rollback(); ! } ! JDOUtil.closePM(pm); ! } ! ! } ! ! /** ! * @param sessionId ! * @param mapName ! * @param positionX ! * @param positionY ! * @param character ! * @param positionName ! * @param pm ! * @param tx ! * @throws SessionException ! * @throws MapException ! */ ! private void createOrUpdatePositionInternal(long sessionId, String mapName, int positionX, int positionY, ! SignalCharacterDTO character, String positionName, boolean fixed, PersistenceManager pm, Transaction tx) ! throws SessionException, MapException{} ! ! private void getDataFromDB(){ ! PersistenceManager pm = null; ! Transaction tx = null; ! try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Extent e = pm.getExtent(Map.class, true); ! Query query = pm.newQuery(e); ! Collection mapResults = (Collection) query.execute(); ! if (mapResults != null){ ! Iterator it1 = mapResults.iterator(); ! while (it1.hasNext()){ ! Map map = (Map) it1.next(); ! addMapHashtable(map); ! // Positionsdaten für map aus der Datenbank holen ! try{ ! Extent extent = pm.getExtent(Position.class, true); ! Query posQuery = pm.newQuery(extent, "map == myMap && deleted == 0"); ! posQuery.declareParameters("net.sf.magicmap.db.Map myMap"); ! posQuery.declareImports("import net.sf.magicmap.db.Map"); ! Collection PositionResults = (Collection) posQuery.execute(map); ! if (PositionResults != null){ ! Iterator it2 = PositionResults.iterator(); ! while (it2.hasNext()){ ! Position pos = (Position) it2.next(); ! PositionDTO dto = new PositionDTO(); ! AccessPoint ap = pos.getAccessPoint(); ! if (ap != null){ ! AccessPointDTO apDTO = new AccessPointDTO(); ! apDTO.setMac(ap.getMac()); ! apDTO.setId(new Long(ap.getId())); ! apDTO.setSsid(ap.getSsid()); ! dto.setAccessPoint(apDTO); ! } ! Client client = pos.getClient(); ! if (client != null){ ! ClientDTO clientDTO = new ClientDTO(); ! clientDTO.setMac(client.getMac()); ! clientDTO.setId(new Long(client.getId())); ! clientDTO.setName(client.getName()); ! dto.setClient(clientDTO); ! } ! dto.setId(new Long(pos.getId())); ! dto.setDeleted(pos.isDeleted()); ! dto.setLastModified(new Long(pos.getLastModified())); ! dto.setPosX(new Integer(pos.getPosX())); ! dto.setPosY(new Integer(pos.getPosY())); ! dto.setFixed(pos.isFixed()); ! dto.setName(pos.getName()); ! dto.setCharacter(new SignalCharacterDTO()); ! // Scanresults holen ! Collection scanResults = pos.getScanResults(); ! if (scanResults != null){ ! Iterator scanIt = scanResults.iterator(); ! while (scanIt.hasNext()){ ! ScanResult sr = (ScanResult) scanIt.next(); ! ! Date lastSeen = null; ! if (sr.getScantime() != null){ ! lastSeen = new Date(sr.getScantime().getTime()); ! } ! ! SimpleScanResultDTO ssr = new SimpleScanResultDTO(); ! ! // ssr.setLastSeen(lastSeen); //TODO: ! // last seen benutzen ! ssr.setMacAP(sr.getAccessPoint().getMac()); ! ssr.setNoise(sr.getNoiseLevel()); ! ssr.setSignalLevel(sr.getSignalLevel()); ! ssr.setSsid(sr.getAccessPoint().getSsid()); ! ! ArrayList list; ! if (dto.getCharacter().getSimpleScanResults() == null){ ! list = new ArrayList(); ! } else{ ! list = new ArrayList(Arrays.asList(dto.getCharacter().getSimpleScanResults())); ! } ! ! list.add(ssr); ! dto.getCharacter().setSimpleScanResults( ! (SimpleScanResultDTO[]) list.toArray(new SimpleScanResultDTO[0])); ! } ! } ! getMapHashtable(map).addPosition(dto); ! } ! } ! } catch (Exception ex){ ! ex.printStackTrace(); ! } ! } ! } ! JDOUtil.commit(tx); ! } finally{ ! JDOUtil.closePM(pm); ! } ! } ! ! private String getMapString(Map map){ ! return map.getName() + "#" + map.getImageURL() + "#" + map.getImageHeight().toString() + "#" ! + map.getImageWidth().toString(); ! } ! ! private void addMapHashtable(Map map){ ! ! this.put(getMapString(map), new PositionCacheEntry()); ! } ! ! private boolean existsMapHashtable(Map map){ ! return this.containsKey(getMapString(map)); ! } ! ! private PositionCacheEntry getMapHashtable(Map map){ ! return this.get(getMapString(map)); ! } ! ! public void createOrUpdatePosition(Map map, PositionDTO position){ ! System.out.println("enter createOrUpdatePosition()"); ! if (!existsMapHashtable(map)) addMapHashtable(map); ! if (getMapHashtable(map).existsPosition(position.getName())){ ! getMapHashtable(map).removePosition(position.getName()); ! } ! getMapHashtable(map).addPosition(position); ! } ! ! public PositionDTO[] getPositionsForMapSince(Map map, Long time){ ! if (!existsMapHashtable(map)) return new PositionDTO[0]; ! return getMapHashtable(map).getPositionsSince(time); ! } ! ! public PositionDTO getPositionForClientOnMap(Map map, String name){ ! if (!existsMapHashtable(map)) return null; ! return getMapHashtable(map).getPosition(name); ! ! } ! ! public void movePosition(Map map, Long id, int x, int y, boolean fixed){ ! if (existsMapHashtable(map)){ ! getMapHashtable(map).movePosition(id, x, y, fixed); ! } ! } ! ! public void removePosition(Map map, Long id){ ! if (existsMapHashtable(map)){ ! getMapHashtable(map).removePosition(id); ! } ! } ! ! public void removePosition(Map map, String name){ ! if (existsMapHashtable(map)){ ! getMapHashtable(map).removePosition(name); ! } ! } } class PositionCacheEntry { ! private Hashtable<String, PositionDTO> positionHash; ! private TreeMap<Long, String> timeMap; ! private Hashtable<Long, String> idHash; ! protected PositionCacheEntry() { ! positionHash = new Hashtable<String, PositionDTO>(60); ! timeMap = new TreeMap<Long, String>(); ! idHash = new Hashtable<Long, String>(60); ! } ! ! protected void removePosition(Long id){ ! PositionDTO pos = getPosition(id); ! pos.setDeleted(true); ! Long time = System.currentTimeMillis(); ! while (timeMap.containsKey(time)){ ! ++time; ! } ! updateTime(pos.getLastModified(), time); ! pos.setLastModified(time); ! } + protected void removePosition(String name){ + + PositionDTO pos = getPosition(name); + pos.setDeleted(true); + Long time = System.currentTimeMillis(); + while (timeMap.containsKey(time)){ + ++time; + } + updateTime(pos.getLastModified(), time); + pos.setLastModified(time); + } + + protected void addPosition(PositionDTO position){ + Long id = new Long(1); + while (idHash.containsKey(id)){ + ++id; + } + position.setId(id); + + Long time = System.currentTimeMillis(); + while (timeMap.containsKey(time)){ + ++time; + } + position.setLastModified(time); + + timeMap.put(position.getLastModified(), position.getName()); + idHash.put(id, position.getName()); + positionHash.put(position.getName(), position); + } + + protected void movePosition(Long id, int x, int y, boolean fixed){ + if (!idHash.containsKey(id)){ + return; + } + PositionDTO pos = getPosition(id); + pos.setPosX(x); + pos.setPosY(y); + pos.setFixed(fixed); + Long time = System.currentTimeMillis(); + while (timeMap.containsKey(time)){ + ++time; + } + updateTime(pos.getLastModified(), time); + pos.setLastModified(time); + } + + private void updateTime(Long oldTime, Long time){ + timeMap.put(time, timeMap.get(oldTime)); + timeMap.remove(oldTime); + } + + protected boolean existsPosition(String name){ + return positionHash.containsKey(name); + } + + protected PositionDTO getPosition(String name){ + return positionHash.get(name); + } + + protected PositionDTO getPosition(Long id){ + return positionHash.get(idHash.get(id)); + } + + protected void deletePosition(String name){ + timeMap.remove(positionHash.get(name).getLastModified()); + idHash.remove(positionHash.get(name).getId()); + positionHash.remove(name); + } + + protected void deletePosition(Long id){ + timeMap.remove(idHash.get(id)); + positionHash.remove(idHash.get(id)); + idHash.remove(id); + } + + protected PositionDTO[] getPositionsSince(Long time){ + System.out.println("enter getPositionsSince()"); + Collection<String> newPositions = timeMap.tailMap(time).values(); + System.out.println("Daten in timeMap: " + timeMap.toString()); + System.out.println("Daten in tailMap: " + newPositions.toString()); + PositionDTO[] positions = new PositionDTO[newPositions.size()]; + Iterator it = newPositions.iterator(); + int i = 0; + while (it.hasNext()){ + positions[i++] = getPosition((String) it.next()); + } + return positions; + } + } |
From: Florian L. <fle...@us...> - 2005-11-30 14:34:50
|
Update of /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5242/src/net/sf/magicmap/client/delegate Modified Files: Tag: MagicMap_Daedalus PositionDelegate.java Added Files: Tag: MagicMap_Daedalus Daedalus.java Log Message: Daedalus integriert --- NEW FILE: Daedalus.java --- /* * Created on 26.11.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.sf.magicmap.client.delegate; import java.net.*; import java.util.*; import net.sf.magicmap.server.dto.PositionDTO; import net.sf.magicmap.server.dto.SignalCharacterDTO; import net.sf.magicmap.server.dto.SimpleScanResultDTO; /** * @author Administrator * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class Daedalus extends Thread { /* * Created on 17.10.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ private String serverIP = "141.20.192.234"; private int port = 8000; private List wantsLock; private List locked; private String mac; private SimpleScanResultDTO[] newSignals; private List fixed, addFix, removeFix; private HashMap positions; private List knownNodes; private HashMap senseValues; public Daedalus (int p, String localMac) { port = p; mac = localMac; knownNodes = new ArrayList(); wantsLock = new ArrayList(); locked = new ArrayList(); fixed = new ArrayList(); addFix = new ArrayList(); removeFix = new ArrayList(); positions = new HashMap(); senseValues = new HashMap(); } private void send (String msg, SocketAddress server) { byte[] bomsg = msg.getBytes(); try { DatagramPacket op = new DatagramPacket (bomsg, bomsg.length, server); DatagramSocket os = new DatagramSocket (); os.send(op); } catch (Exception ex) { ex.printStackTrace(); } } private void scan () { InetSocketAddress server = new InetSocketAddress(serverIP, port); send("search: group: MagicMap-*", server); } public void run () { try { DatagramSocket socket = new DatagramSocket(port+1); System.out.println("socket binding"); byte[] buf; while (true) { buf = new byte[25480]; DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); SocketAddress server = packet.getSocketAddress(); String msg = new String (packet.getData()); System.out.println(packet.getLength() + " :: " + packet.getData().length); System.out.println(msg); String params[] = msg.split(" "); if (params[0].equals("got:")) { if (wantsLock.contains(params[1])) { send("lock: "+params[1], server); wantsLock.remove(params[1]); } else { String ressource[] = params[1].split("-"); String data=""; for (int i=2; i<params.length; i++) data+=params[i]; if (ressource[0].equals("MagicMap")) { if (ressource[1].equals("See")) { if (locked.contains(params[1])) doUpdateSeeTable(params[1], data, server); else onReceiveSeeTable(params[1], data, server); } if (ressource[1].equals("Position")) { if (locked.contains(params[1])) doUpdatePositionTable(params[1], data, server); } if (ressource[1].equals("Fixed")) { if (locked.contains(params[1])) doUpdateFixedTable(params[1], data, server); } if (ressource[1].equals("Sense")) { if (locked.contains(params[1])) doUpdateSenseTable(params[1], data, server); else onReceiveSenseTable(params[1], data, server); } } } } if (params[0].equals("locked:")) { locked.add(params[1]); send("get: "+params[1], server); } if (params[0].equals("set:")) { send("release: "+params[1], server); locked.remove(params[1]); } if (params[0].equals("found:")) { String[] items = params[1].split("-"); if (!knownNodes.contains(items[2])) { knownNodes.add(items[2]); if (items[1].equals("See")) { send("get: MagicMap-See-"+items[2], server); } } } } } catch (Exception ex) { ex.printStackTrace(); } } private void doUpdateSeeTable (String res, String data, SocketAddress server) { boolean newAP = true; int pos = data.indexOf(mac); if ( newAP ) { if (pos == -1) { send("set: "+res+" "+data+"#"+mac, server); } } else { if (pos != -1) { String newData = data.substring(0,pos-1); newData += data.substring(pos+mac.length()+1); send("set: "+res+" "+ newData, server); } } } private void doUpdatePositionTable (String res, String data, SocketAddress server) { String[] parts = res.split("-"); String pos = (String) positions.get(parts[2]); send("set: "+res+" "+ pos, server); positions.remove(parts[2]); } private void doUpdateFixedTable (String res, String data, SocketAddress server) { String[] nodes = data.split("#"); String out =""; for (int i=0; i<nodes.length;i++) { if (!removeFix.contains(nodes[i])) { out+=nodes[i]+"#"; fixed.remove(nodes[i]); } } Iterator iter = addFix.iterator(); while (iter.hasNext()) { String n = (String)iter.next(); out+=n+"#"; fixed.add(n); } addFix.clear(); removeFix.clear(); send("set: "+res+" "+out, server); } private void doUpdateSenseTable (String res, String data, SocketAddress server) { String out = null; for (int i = 0; i<newSignals.length; i++) { out += newSignals[i].getSsid()+"#"+newSignals[i].getMacAP()+"#"+newSignals[i].getSignalLevel()+"#"+newSignals[i].getNoise()+"#"+newSignals[i].getLastSeen()+"$"; if (!data.contains(newSignals[i].getSsid())) { send("lock: MagicMap-See-"+newSignals[i].getMacAP(), server); } } if (out!=null) send("set: "+res+" "+out, server); } private void doGetAllSeeTables () { InetSocketAddress server = new InetSocketAddress(serverIP, port); Iterator iter = knownNodes.iterator(); while (iter.hasNext()) { String node = (String) iter.next(); send("get: MagicMap-See-"+node, server); } } private void onReceiveSeeTable (String nmac, String data, SocketAddress server) { String[] nodes = data.split("#"); for (int i=0; i<nodes.length; i++) { send("get: MagicMap-Sense-"+nodes[i], server); } } private void onReceiveSenseTable (String nmac, String data, SocketAddress server) { String[] nodes = data.split("$"); for (int i=0; i<nodes.length; i++) { String[] values = nodes[i].split("#"); if (values.length < 4) continue; SimpleScanResultDTO result = new SimpleScanResultDTO(); result.setSsid(values[0]); result.setMacAP(values[1]); result.setSignalLevel(new Double(values[2])); result.setNoise(new Double(values[3])); Calendar c = new GregorianCalendar(); c.setTimeInMillis(new Long(values[4]).longValue()); result.setLastSeen(c); SignalCharacterDTO senses; if (senseValues.containsKey(values[1])) { senses = (SignalCharacterDTO)senseValues.get(values[1]); SimpleScanResultDTO[] svalues = senses.getSimpleScanResults(); SimpleScanResultDTO[] svaluesNew = new SimpleScanResultDTO[svalues.length+1]; for (int w=0; w<svalues.length; w++) { svaluesNew[w] = svalues[w]; } svaluesNew[svalues.length] = result; senses.setSimpleScanResults(svaluesNew); } else { senses = new SignalCharacterDTO(); SimpleScanResultDTO[] svalues = new SimpleScanResultDTO[1]; svalues[0] = result; senseValues.put(values[1], svalues); } } } public void updateNodes (SignalCharacterDTO data) { newSignals = data.getSimpleScanResults(); InetSocketAddress server = new InetSocketAddress(serverIP, port); wantsLock.add("MagicMap-Sense-"+mac); send("get: MagicMap-Sense-"+mac, server); } public void updatePositionTable (String nmac, int x, int y) { Date DateCurrent=new Date(); positions.put(nmac, nmac+"-"+x+"-"+y+"-"+DateCurrent.getTime()); InetSocketAddress server = new InetSocketAddress(serverIP, port); wantsLock.add("MagicMap-Position-"+nmac); send("get: MagicMap-Position-"+nmac, server); } public void updateFixedTable (String nmac, boolean fix) { InetSocketAddress server = new InetSocketAddress(serverIP, port); if (fixed.contains(nmac) & !fix) { removeFix.add(nmac); wantsLock.add("MagicMap-Fixed"); send("get: MagicMap-Fixed", server); } if (fix & !fixed.contains(nmac)) { addFix.add(nmac); wantsLock.add("MagicMap-Fixed"); send("get: MagicMap-Fixed", server); } } public PositionDTO[] getAllSenseTables () { doGetAllSeeTables (); PositionDTO[] cache = new PositionDTO[knownNodes.size()]; Iterator iter = knownNodes.iterator(); int i = 0; while (iter.hasNext()) { String node = (String) iter.next(); cache[i].setId(new Long(node)); cache[i].setFixed((fixed.contains(node))); cache[i].setCharacter((SignalCharacterDTO)senseValues.get(node)); Date date=new Date(); cache[i].setLastModified(new Long(date.getTime())); i++; } return cache; } } Index: PositionDelegate.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate/PositionDelegate.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -C2 -d -r1.3 -r1.3.2.1 *** PositionDelegate.java 11 May 2005 10:51:28 -0000 1.3 --- PositionDelegate.java 30 Nov 2005 14:34:39 -0000 1.3.2.1 *************** *** 9,12 **** --- 9,13 ---- import localhost.magicmap.services.PositionFacade.PositionFacadeServiceLocator; import localhost.magicmap.services.PositionFacade.PositionFacadeSoapBindingStub; + import net.sf.magicmap.client.controller.Controller; import net.sf.magicmap.client.delegate.exception.ExceptionHandler; import net.sf.magicmap.client.delegate.interfaces.PositionFacadeInterface; *************** *** 23,49 **** private static final String JWS = "PositionFacade"; ! ! private PositionFacade getBinding() throws RemoteException{ ! PositionFacadeSoapBindingStub bindingLocal = null; ! ! try{ ! bindingLocal = (PositionFacadeSoapBindingStub) new PositionFacadeServiceLocator().getPositionFacade(new URL( ! Settings.getServerURL() + JWS)); ! } catch (javax.xml.rpc.ServiceException jre){ ! if (jre.getLinkedCause() != null) jre.getLinkedCause().printStackTrace(); ! jre.printStackTrace(); ! throw new RemoteException("binding?", jre); ! } catch (MalformedURLException e){ ! e.printStackTrace(); ! throw new RemoteException("binding?", e); ! } ! bindingLocal.setTimeout(Settings.TIMEOUT); ! return bindingLocal; ! } ! ! private PositionFacade binding; public PositionDelegate() throws RemoteException { ! this.binding = getBinding(); } --- 24,33 ---- private static final String JWS = "PositionFacade"; ! private Daedalus daedalus = null; ! private static String localMac = Controller.getInstance().getClientMac().replace("-",""); public PositionDelegate() throws RemoteException { ! daedalus = new Daedalus(8000, localMac); ! daedalus.start(); } *************** *** 54,62 **** SignalCharacterDTO character, String positionName, boolean fixed) throws RemoteException, MapException, SessionException{ ! try{ ! this.binding.createOrUpdatePosition(sessionId, mapName, positionX, positionY, character, positionName, fixed); ! } catch (Exception e){ ! throw ExceptionHandler.checkException(e); ! } } --- 38,44 ---- SignalCharacterDTO character, String positionName, boolean fixed) throws RemoteException, MapException, SessionException{ ! daedalus.updateNodes(character); ! daedalus.updatePositionTable(localMac, positionX, positionY); ! daedalus.updateFixedTable(localMac,fixed); } *************** *** 67,75 **** SignalCharacterDTO character, String clientMac, boolean fixed) throws RemoteException, MapException, SessionException{ ! try{ ! this.binding.createOrUpdateClientPosition(sessionId, mapName, positionX, positionY, character, clientMac, fixed); ! } catch (Exception e){ ! throw ExceptionHandler.checkException(e); ! } } --- 49,55 ---- SignalCharacterDTO character, String clientMac, boolean fixed) throws RemoteException, MapException, SessionException{ ! daedalus.updateNodes(character); ! daedalus.updatePositionTable(clientMac.replace("-",""), positionX, positionY); ! daedalus.updateFixedTable(clientMac.replace("-",""),fixed); } *************** *** 79,87 **** public void createOrUpdateAccessPosition(long sessionId, String mapName, int positionX, int positionY, String accessPointMac, boolean fixed) throws RemoteException, MapException, SessionException{ ! try{ ! this.binding.createOrUpdateAccessPosition(sessionId, mapName, positionX, positionY, accessPointMac, fixed); ! } catch (Exception e){ ! throw ExceptionHandler.checkException(e); ! } } --- 59,64 ---- public void createOrUpdateAccessPosition(long sessionId, String mapName, int positionX, int positionY, String accessPointMac, boolean fixed) throws RemoteException, MapException, SessionException{ ! daedalus.updatePositionTable(accessPointMac.replace("-",""), positionX, positionY); ! daedalus.updateFixedTable(accessPointMac.replace("-",""),fixed); } *************** *** 89,99 **** * @see com.saugstation.pacw.generated.PositionFacade#movePosition(long, long, int, int) */ ! public void movePosition(long sessionId, long positionId, int newPositionX, int newPositionY, boolean fixed) throws RemoteException, MapException, SessionException{ ! try{ ! this.binding.movePosition(sessionId, positionId, newPositionX, newPositionY, fixed); ! } catch (Exception e){ ! throw ExceptionHandler.checkException(e); ! } } --- 66,72 ---- * @see com.saugstation.pacw.generated.PositionFacade#movePosition(long, long, int, int) */ ! public void movePosition(long sessionId, String mapname, long positionId, int newPositionX, int newPositionY, boolean fixed) throws RemoteException, MapException, SessionException{ ! daedalus.updatePositionTable(localMac, newPositionX, newPositionY); } *************** *** 101,110 **** * @see com.saugstation.pacw.generated.PositionFacade#deletePosition(long, long) */ ! public void deletePosition(long sessionId, long positionId) throws RemoteException, MapException, SessionException{ ! try{ ! this.binding.deletePosition(sessionId, positionId); ! } catch (Exception e){ ! throw ExceptionHandler.checkException(e); ! } } --- 74,79 ---- * @see com.saugstation.pacw.generated.PositionFacade#deletePosition(long, long) */ ! public void deletePosition(long sessionId, String mapname, long positionId) throws RemoteException, MapException, SessionException{ ! } *************** *** 113,119 **** */ public PositionDTO[] getPositionsForMapSince(long sessionId, String mapName, long timeStamp) throws RemoteException, ! MapException, SessionException{ ! return this.binding.getPositionsForMapSince(sessionId, mapName, timeStamp); ! } /* (non-Javadoc) --- 82,88 ---- */ public PositionDTO[] getPositionsForMapSince(long sessionId, String mapName, long timeStamp) throws RemoteException, ! MapException, SessionException{ ! return daedalus.getAllSenseTables(); ! } /* (non-Javadoc) |
From: Florian L. <fle...@us...> - 2005-11-25 15:37:42
|
Update of /cvsroot/magicmap/magicmapserver/web/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3686/web/WEB-INF Modified Files: server-config.wsdd Log Message: ändern auf wsdd Index: server-config.wsdd =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/web/WEB-INF/server-config.wsdd,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** server-config.wsdd 25 Nov 2005 15:04:15 -0000 1.5 --- server-config.wsdd 25 Nov 2005 15:37:32 -0000 1.6 *************** *** 9,14 **** <parameter name="enableNamespacePrefixOptimization" value="true"/> <parameter name="sendXMLDeclaration" value="true"/> - <parameter name="sendXsiTypes" value="true"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> <requestFlow> <handler type="java:org.apache.axis.handlers.JWSHandler"> --- 9,14 ---- <parameter name="enableNamespacePrefixOptimization" value="true"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> + <parameter name="sendXsiTypes" value="true"/> <requestFlow> <handler type="java:org.apache.axis.handlers.JWSHandler"> *************** *** 24,27 **** --- 24,31 ---- <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> + <service name="SessionFacade" provider="java:RPC"> + <parameter name="allowedMethods" value="*"/> + <parameter name="className" value="net.sf.magicmap.server.facade.SessionFacade"/> + </service> <service name="AdminService" provider="java:MSG"> <parameter name="allowedMethods" value="AdminService"/> *************** *** 30,37 **** <namespace>http://xml.apache.org/axis/wsdd/</namespace> </service> - <service name="SessionFacade" provider="java:RPC"> - <parameter name="allowedMethods" value="*"/> - <parameter name="className" value="net.sf.magicmap.server.facade.SessionFacade"/> - </service> <service name="Version" provider="java:RPC"> <parameter name="allowedMethods" value="getVersion"/> --- 34,37 ---- *************** *** 49,56 **** <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns3:SignalCharacterDTO" xmlns:ns3="urn:dto.server.magicmap.sf.net"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO" qname="ns4:SimpleScanResultDTO" xmlns:ns4="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.PositionDTO" qname="ns5:PositionDTO" xmlns:ns5="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns6:SignalCharacterDTO" xmlns:ns6="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.AccessPointDTO" qname="ns7:AccessPointDTO" xmlns:ns7="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO" qname="ns8:ClientDTO" xmlns:ns8="urn:dto.server.magicmap.sf.net"/> </service> <transport name="http"> --- 49,56 ---- <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns3:SignalCharacterDTO" xmlns:ns3="urn:dto.server.magicmap.sf.net"/> <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO" qname="ns4:SimpleScanResultDTO" xmlns:ns4="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns5:SignalCharacterDTO" xmlns:ns5="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.AccessPointDTO" qname="ns6:AccessPointDTO" xmlns:ns6="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO" qname="ns7:ClientDTO" xmlns:ns7="urn:dto.server.magicmap.sf.net"/> ! <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.PositionDTO" qname="ns8:PositionDTO" xmlns:ns8="urn:dto.server.magicmap.sf.net"/> </service> <transport name="http"> |
From: Florian L. <fle...@us...> - 2005-11-25 15:08:42
|
Update of /cvsroot/magicmap/magicmapclient In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30435 Modified Files: build.xml Log Message: ändern auf wsdd Index: build.xml =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/build.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** build.xml 14 Nov 2005 13:38:02 -0000 1.7 --- build.xml 25 Nov 2005 15:08:32 -0000 1.8 *************** *** 58,68 **** url="inf/PositionFacade.wsdl" /> <axis-wsdl2java - output="${src.gen}" - testcase="false" - verbose="false" - noimports="true" - debug="false" - url="inf/PositionFacade2.wsdl" /> - <axis-wsdl2java output="${src.gen}" testcase="false" --- 58,61 ---- |
From: Florian L. <fle...@us...> - 2005-11-25 15:04:23
|
Update of /cvsroot/magicmap/magicmapserver/web/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29618/web/WEB-INF Modified Files: build.xml server-config.wsdd Added Files: deploy_db.wsdd deploy_caches.wsdd Removed Files: deploy.wsdd Log Message: ändern auf wsdd --- NEW FILE: deploy_db.wsdd --- <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="MapFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.MapFacade"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:StringReplacementDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.StringReplacementDTO"/> <beanMapping qname="myNS:MapDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.MapDTO"/> </service> <service name="PositionFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.PositionFacade"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:SignalCharacterDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO"/> <beanMapping qname="myNS:SimpleScanResultDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO"/> <beanMapping qname="myNS:SignalCharacterDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO"/> <beanMapping qname="myNS:AccessPointDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.AccessPointDTO"/> <beanMapping qname="myNS:ClientDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO"/> <beanMapping qname="myNS:PositionDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.PositionDTO"/> </service> <service name="SessionFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.SessionFacade"/> <parameter name="allowedMethods" value="*"/> </service> </deployment> --- deploy.wsdd DELETED --- Index: server-config.wsdd =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/web/WEB-INF/server-config.wsdd,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** server-config.wsdd 8 Nov 2005 13:14:50 -0000 1.4 --- server-config.wsdd 25 Nov 2005 15:04:15 -0000 1.5 *************** *** 54,67 **** <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO" qname="ns8:ClientDTO" xmlns:ns8="urn:dto.server.magicmap.sf.net"/> </service> - <service name="PositionFacade2" provider="java:RPC"> - <parameter name="allowedMethods" value="*"/> - <parameter name="className" value="net.sf.magicmap.server.facade.PositionFacade2"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns3:SignalCharacterDTO" xmlns:ns3="urn:dto.server.magicmap.sf.net"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO" qname="ns4:SimpleScanResultDTO" xmlns:ns4="urn:dto.server.magicmap.sf.net"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.PositionDTO" qname="ns5:PositionDTO" xmlns:ns5="urn:dto.server.magicmap.sf.net"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO" qname="ns6:SignalCharacterDTO" xmlns:ns6="urn:dto.server.magicmap.sf.net"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.AccessPointDTO" qname="ns7:AccessPointDTO" xmlns:ns7="urn:dto.server.magicmap.sf.net"/> - <beanMapping languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO" qname="ns8:ClientDTO" xmlns:ns8="urn:dto.server.magicmap.sf.net"/> - </service> <transport name="http"> <requestFlow> --- 54,57 ---- Index: build.xml =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/web/WEB-INF/build.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** build.xml 12 Feb 2005 15:19:26 -0000 1.2 --- build.xml 25 Nov 2005 15:04:15 -0000 1.3 *************** *** 17,22 **** servletpath="${target.appname}/services/AdminService" debug="true" ! xmlfile="deploy.wsdd" /> </target> ! </project> \ No newline at end of file --- 17,23 ---- servletpath="${target.appname}/services/AdminService" debug="true" ! xmlfile="deploy_caches.wsdd" /> + <!-- xmlfile="deploy_db.wsdd" --> </target> ! </project> --- NEW FILE: deploy_caches.wsdd --- <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="MapFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.MapFacade"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:StringReplacementDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.StringReplacementDTO"/> <beanMapping qname="myNS:MapDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.MapDTO"/> </service> <service name="PositionFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.PositionFacade2"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:SignalCharacterDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO"/> <beanMapping qname="myNS:SimpleScanResultDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SimpleScanResultDTO"/> <beanMapping qname="myNS:SignalCharacterDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.SignalCharacterDTO"/> <beanMapping qname="myNS:AccessPointDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.AccessPointDTO"/> <beanMapping qname="myNS:ClientDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.ClientDTO"/> <beanMapping qname="myNS:PositionDTO" xmlns:myNS="urn:dto.server.magicmap.sf.net" languageSpecificType="java:net.sf.magicmap.server.dto.PositionDTO"/> </service> <service name="SessionFacade" provider="java:RPC"> <parameter name="className" value="net.sf.magicmap.server.facade.SessionFacade"/> <parameter name="allowedMethods" value="*"/> </service> </deployment> |
From: Florian L. <fle...@us...> - 2005-11-25 14:32:20
|
Update of /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23589/src/net/sf/magicmap/client/delegate Modified Files: PositionDelegate.java Log Message: ändern auf wsdd Index: PositionDelegate.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate/PositionDelegate.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PositionDelegate.java 15 Nov 2005 15:39:17 -0000 1.8 --- PositionDelegate.java 25 Nov 2005 14:32:12 -0000 1.9 *************** *** 7,13 **** ! import localhost.magicmap.services.PositionFacade2.PositionFacade2; ! import localhost.magicmap.services.PositionFacade2.PositionFacade2ServiceLocator; ! import localhost.magicmap.services.PositionFacade2.PositionFacade2SoapBindingStub; import net.sf.magicmap.client.delegate.exception.ExceptionHandler; import net.sf.magicmap.client.delegate.interfaces.PositionFacadeInterface; --- 7,13 ---- ! import localhost.magicmap.services.PositionFacade.PositionFacade; ! import localhost.magicmap.services.PositionFacade.PositionFacadeServiceLocator; ! import localhost.magicmap.services.PositionFacade.PositionFacadeSoapBindingStub; import net.sf.magicmap.client.delegate.exception.ExceptionHandler; import net.sf.magicmap.client.delegate.interfaces.PositionFacadeInterface; *************** *** 23,33 **** public class PositionDelegate implements PositionFacadeInterface { ! private static final String JWS = "PositionFacade2"; ! private PositionFacade2 getBinding() throws RemoteException{ ! PositionFacade2SoapBindingStub bindingLocal = null; try{ ! bindingLocal = (PositionFacade2SoapBindingStub) new PositionFacade2ServiceLocator().getPositionFacade2(new URL( Settings.getServerURL() + JWS)); } catch (javax.xml.rpc.ServiceException jre){ --- 23,33 ---- public class PositionDelegate implements PositionFacadeInterface { ! private static final String JWS = "PositionFacade"; ! private PositionFacade getBinding() throws RemoteException{ ! PositionFacadeSoapBindingStub bindingLocal = null; try{ ! bindingLocal = (PositionFacadeSoapBindingStub) new PositionFacadeServiceLocator().getPositionFacade(new URL( Settings.getServerURL() + JWS)); } catch (javax.xml.rpc.ServiceException jre){ *************** *** 43,47 **** } ! private PositionFacade2 binding; public PositionDelegate() throws RemoteException { --- 43,47 ---- } ! private PositionFacade binding; public PositionDelegate() throws RemoteException { |
From: Florian L. <fle...@us...> - 2005-11-25 14:32:19
|
Update of /cvsroot/magicmap/magicmapclient/inf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23589/inf Removed Files: PositionFacade2.wsdl Log Message: ändern auf wsdd --- PositionFacade2.wsdl DELETED --- |
From: Florian L. <fle...@us...> - 2005-11-18 14:42:07
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19913/src/net/sf/magicmap/server/facade Modified Files: PositionFacade2.java Log Message: remove position bug behobn Index: PositionFacade2.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade/PositionFacade2.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PositionFacade2.java 15 Nov 2005 12:50:56 -0000 1.10 --- PositionFacade2.java 18 Nov 2005 14:41:59 -0000 1.11 *************** *** 373,377 **** checkSession(sessionId, pm); Map map = checkMap(mapname, pm); ! PositionCache.getPositionCache().deletePosition(map,positionId); if (pm.currentTransaction().isActive()){ pm.currentTransaction().commit(); --- 373,377 ---- checkSession(sessionId, pm); Map map = checkMap(mapname, pm); ! PositionCache.getPositionCache().removePosition(map,positionId); if (pm.currentTransaction().isActive()){ pm.currentTransaction().commit(); |
From: Florian L. <fle...@us...> - 2005-11-18 14:42:07
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19913/src/net/sf/magicmap/server/cache Modified Files: PositionCache.java Log Message: remove position bug behobn Index: PositionCache.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache/PositionCache.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PositionCache.java 15 Nov 2005 12:50:56 -0000 1.5 --- PositionCache.java 18 Nov 2005 14:41:59 -0000 1.6 *************** *** 11,14 **** --- 11,15 ---- import net.sf.magicmap.db.Map; import net.sf.magicmap.server.dto.PositionDTO; + import net.sf.magicmap.server.facade.PositionFacade; *************** *** 35,40 **** this.put(getMapString(map),new PositionCacheEntry()); - System.out.println("current Map added: " + map.toString()); - System.out.println("all Maps in cache: " + this.toString()); } --- 36,39 ---- *************** *** 51,67 **** if(!existsMapHashtable(map)) addMapHashtable(map); - System.out.println("createOrUpdatePosition() has map added"); if(getMapHashtable(map).existsPosition(position.getName())){ getMapHashtable(map).removePosition(position.getName()); } getMapHashtable(map).addPosition(position); - - System.out.println("createOrUpdatePosition() has position added"); } public PositionDTO[] getPositionsForMapSince(Map map,Long time){ - System.out.println("enter getPositionsForMapSince()"); - System.out.println("all Maps: " + this.toString()); - System.out.println("current Map: " + map.toString()); if(!existsMapHashtable(map)) return new PositionDTO[0]; --- 50,60 ---- *************** *** 82,86 **** } ! public void deletePosition (Map map, Long id){ if(existsMapHashtable(map)){ getMapHashtable(map).removePosition(id); --- 75,79 ---- } ! public void removePosition (Map map, Long id){ if(existsMapHashtable(map)){ getMapHashtable(map).removePosition(id); *************** *** 88,92 **** } ! public void deletePosition (Map map, String name){ if(existsMapHashtable(map)){ getMapHashtable(map).removePosition(name); --- 81,85 ---- } ! public void removePosition (Map map, String name){ if(existsMapHashtable(map)){ getMapHashtable(map).removePosition(name); *************** *** 107,110 **** --- 100,126 ---- } + protected void removePosition(Long id) { + PositionDTO pos = getPosition(id); + pos.setDeleted(true); + Long time = System.currentTimeMillis(); + while(timeMap.containsKey(time)){ + ++time; + } + updateTime(pos.getLastModified(), time); + pos.setLastModified(time); + } + + protected void removePosition(String name) { + + PositionDTO pos = getPosition(name); + pos.setDeleted(true); + Long time = System.currentTimeMillis(); + while(timeMap.containsKey(time)){ + ++time; + } + updateTime(pos.getLastModified(), time); + pos.setLastModified(time); + } + protected void addPosition(PositionDTO position){ Long id = new Long(1); *************** *** 159,163 **** } ! protected void removePosition(String name){ timeMap.remove(positionHash.get(name).getLastModified()); idHash.remove(positionHash.get(name).getId()); --- 175,179 ---- } ! protected void deletePosition(String name){ timeMap.remove(positionHash.get(name).getLastModified()); idHash.remove(positionHash.get(name).getId()); *************** *** 165,169 **** } ! protected void removePosition(Long id){ timeMap.remove(idHash.get(id)); positionHash.remove(idHash.get(id)); --- 181,185 ---- } ! protected void deletePosition(Long id){ timeMap.remove(idHash.get(id)); positionHash.remove(idHash.get(id)); |
From: Andreas W. <an...@us...> - 2005-11-15 15:39:29
|
Update of /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30841/src/net/sf/magicmap/client/delegate Modified Files: PositionDelegate.java Log Message: Timestamps zum Performancevergleich mit der alten Version Index: PositionDelegate.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate/PositionDelegate.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PositionDelegate.java 15 Nov 2005 15:32:09 -0000 1.7 --- PositionDelegate.java 15 Nov 2005 15:39:17 -0000 1.8 *************** *** 5,10 **** import java.net.URL; import java.rmi.RemoteException; ! import java.util.Calendar; ! import java.util.Date; import localhost.magicmap.services.PositionFacade2.PositionFacade2; --- 5,9 ---- import java.net.URL; import java.rmi.RemoteException; ! import localhost.magicmap.services.PositionFacade2.PositionFacade2; |
From: Andreas W. <an...@us...> - 2005-11-15 15:32:20
|
Update of /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29489/src/net/sf/magicmap/client/delegate Modified Files: PositionDelegate.java Log Message: Timestamps zum Performancevergleich mit der alten Version Index: PositionDelegate.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/delegate/PositionDelegate.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PositionDelegate.java 14 Nov 2005 13:37:33 -0000 1.6 --- PositionDelegate.java 15 Nov 2005 15:32:09 -0000 1.7 *************** *** 5,8 **** --- 5,10 ---- import java.net.URL; import java.rmi.RemoteException; + import java.util.Calendar; + import java.util.Date; import localhost.magicmap.services.PositionFacade2.PositionFacade2; *************** *** 55,59 **** --- 57,64 ---- SessionException{ try{ + long timeA = System.currentTimeMillis(); this.binding.createOrUpdatePosition(sessionId, mapName, positionX, positionY, character, positionName, fixed); + long timeB = System.currentTimeMillis(); + System.out.println("createOrUpdatePosition brauchte: " + (timeB-timeA) + "ms"); } catch (Exception e){ throw ExceptionHandler.checkException(e); *************** *** 68,72 **** --- 73,80 ---- SessionException{ try{ + long timeA = System.currentTimeMillis(); this.binding.createOrUpdateClientPosition(sessionId, mapName, positionX, positionY, character, clientMac, fixed); + long timeB = System.currentTimeMillis(); + System.out.println("createOrUpdateClientPosition brauchte: " + (timeB-timeA) + "ms"); } catch (Exception e){ throw ExceptionHandler.checkException(e); *************** *** 80,84 **** --- 88,95 ---- String accessPointMac, boolean fixed) throws RemoteException, MapException, SessionException{ try{ + long timeA = System.currentTimeMillis(); this.binding.createOrUpdateAccessPosition(sessionId, mapName, positionX, positionY, accessPointMac, fixed); + long timeB = System.currentTimeMillis(); + System.out.println("createOrUpdateAccessPosition brauchte: " + (timeB-timeA) + "ms"); } catch (Exception e){ throw ExceptionHandler.checkException(e); *************** *** 92,96 **** --- 103,110 ---- throws RemoteException, MapException, SessionException{ try{ + long timeA = System.currentTimeMillis(); this.binding.movePosition(sessionId, mapname, positionId, newPositionX, newPositionY, fixed); + long timeB = System.currentTimeMillis(); + System.out.println("movePosition brauchte: " + (timeB-timeA) + "ms"); } catch (Exception e){ throw ExceptionHandler.checkException(e); *************** *** 103,107 **** --- 117,124 ---- public void deletePosition(long sessionId, String mapname, long positionId) throws RemoteException, MapException, SessionException{ try{ + long timeA = System.currentTimeMillis(); this.binding.deletePosition(sessionId, mapname, positionId); + long timeB = System.currentTimeMillis(); + System.out.println("deletePosition brauchte: " + (timeB-timeA) + "ms"); } catch (Exception e){ throw ExceptionHandler.checkException(e); *************** *** 113,117 **** */ public PositionDTO[] getPositionsForMapSince(long sessionId, String mapName, long timeStamp) throws RemoteException, ! MapException, SessionException{ return this.binding.getPositionsForMapSince(sessionId, mapName, timeStamp); } --- 130,134 ---- */ public PositionDTO[] getPositionsForMapSince(long sessionId, String mapName, long timeStamp) throws RemoteException, ! MapException, SessionException{ return this.binding.getPositionsForMapSince(sessionId, mapName, timeStamp); } |
From: Florian L. <fle...@us...> - 2005-11-15 12:51:06
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29526/src/net/sf/magicmap/server/cache Modified Files: PositionCache.java Log Message: Implementation des Positioning-Caches Index: PositionCache.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/cache/PositionCache.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PositionCache.java 8 Nov 2005 13:14:50 -0000 1.4 --- PositionCache.java 15 Nov 2005 12:50:56 -0000 1.5 *************** *** 13,17 **** ! public class PositionCache extends Hashtable<Map,PositionCacheEntry>{ // Sigleton Hashtable --- 13,17 ---- ! public class PositionCache extends Hashtable<String,PositionCacheEntry>{ // Sigleton Hashtable *************** *** 28,53 **** } private void addMapHashtable(Map map) { ! this.put(map,new PositionCacheEntry()); } private boolean existsMapHashtable(Map map){ ! return this.containsKey(map); } private PositionCacheEntry getMapHashtable(Map map){ ! return this.get(map); } public void createOrUpdatePosition(Map map, PositionDTO position){ if(!existsMapHashtable(map)) addMapHashtable(map); if(getMapHashtable(map).existsPosition(position.getName())){ getMapHashtable(map).removePosition(position.getName()); } getMapHashtable(map).addPosition(position); } public PositionDTO[] getPositionsForMapSince(Map map,Long time){ if(!existsMapHashtable(map)) return new PositionDTO[0]; --- 28,67 ---- } + private String getMapString(Map map){ + return map.getName() + "#" + map.getImageURL() + "#" + map.getImageHeight().toString() + "#" + map.getImageWidth().toString(); + } + private void addMapHashtable(Map map) { ! ! this.put(getMapString(map),new PositionCacheEntry()); ! System.out.println("current Map added: " + map.toString()); ! System.out.println("all Maps in cache: " + this.toString()); } private boolean existsMapHashtable(Map map){ ! return this.containsKey(getMapString(map)); } private PositionCacheEntry getMapHashtable(Map map){ ! return this.get(getMapString(map)); } public void createOrUpdatePosition(Map map, PositionDTO position){ + System.out.println("enter createOrUpdatePosition()"); if(!existsMapHashtable(map)) addMapHashtable(map); + System.out.println("createOrUpdatePosition() has map added"); if(getMapHashtable(map).existsPosition(position.getName())){ getMapHashtable(map).removePosition(position.getName()); } getMapHashtable(map).addPosition(position); + + System.out.println("createOrUpdatePosition() has position added"); } public PositionDTO[] getPositionsForMapSince(Map map,Long time){ + System.out.println("enter getPositionsForMapSince()"); + System.out.println("all Maps: " + this.toString()); + System.out.println("current Map: " + map.toString()); if(!existsMapHashtable(map)) return new PositionDTO[0]; *************** *** 158,162 **** --- 172,179 ---- protected PositionDTO[] getPositionsSince(Long time){ + System.out.println("enter getPositionsSince()"); Collection<String> newPositions = timeMap.tailMap(time).values(); + System.out.println("Daten in timeMap: " + timeMap.toString()); + System.out.println("Daten in tailMap: " + newPositions.toString()); PositionDTO [] positions = new PositionDTO[newPositions.size()]; Iterator it = newPositions.iterator(); |
From: Florian L. <fle...@us...> - 2005-11-15 12:51:06
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29526/src/net/sf/magicmap/server/facade Modified Files: PositionFacade2.java Log Message: Implementation des Positioning-Caches Index: PositionFacade2.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade/PositionFacade2.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** PositionFacade2.java 14 Nov 2005 14:11:29 -0000 1.9 --- PositionFacade2.java 15 Nov 2005 12:50:56 -0000 1.10 *************** *** 46,50 **** --- 46,54 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); createOrUpdatePositionInternal(sessionId, mapName, positionX, positionY, character, positionName, fixed, pm); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ e.printStackTrace(); *************** *** 227,232 **** PersistenceManager pm = null; try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); createOrUpdateClientPositionInternal(sessionId, mapName, positionX, positionY, character, clientMac, fixed, pm); } catch (Exception e){ e.printStackTrace(); --- 231,240 ---- PersistenceManager pm = null; try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! pm.currentTransaction().begin(); createOrUpdateClientPositionInternal(sessionId, mapName, positionX, positionY, character, clientMac, fixed, pm); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ e.printStackTrace(); *************** *** 286,289 **** --- 294,298 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); checkSession(sessionId, pm); Map map = checkMap(mapName, positionX, positionY, pm); *************** *** 303,307 **** pos.setPosY(positionY); PositionCache.getPositionCache().createOrUpdatePosition(map,pos); ! } catch (Exception e){ e.printStackTrace(); --- 312,318 ---- pos.setPosY(positionY); PositionCache.getPositionCache().createOrUpdatePosition(map,pos); ! if (pm.currentTransaction().isActive()){ ! pm.currentTransaction().commit(); ! } } catch (Exception e){ e.printStackTrace(); *************** *** 328,334 **** --- 339,349 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); checkSession(sessionId, pm); Map map = checkMap(mapname, newPositionX, newPositionY, pm); PositionCache.getPositionCache().movePosition(map, positionId, newPositionX, newPositionY, fixed); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ *************** *** 355,361 **** --- 370,380 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); checkSession(sessionId, pm); Map map = checkMap(mapname, pm); PositionCache.getPositionCache().deletePosition(map,positionId); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ e.printStackTrace(); *************** *** 384,390 **** --- 403,413 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); checkSession(sessionId, pm); Map map = checkMap(mapName, pm); result = PositionCache.getPositionCache().getPositionsForMapSince(map,timeStamp); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ e.printStackTrace(); *************** *** 413,416 **** --- 436,440 ---- try{ pm = JDOUtil.pmfactory.getPersistenceManager(); + pm.currentTransaction().begin(); checkSession(sessionId, pm); Map map = checkMap(mapName, pm); *************** *** 418,421 **** --- 442,448 ---- PositionDTO pos = PositionCache.getPositionCache().getPositionForClientOnMap(map,clientMac); positionResult = String.valueOf(pos.getPosX())+ "#" + String.valueOf(pos.getPosY()) + "#" + String.valueOf(pos.isFixed()); + if (pm.currentTransaction().isActive()){ + pm.currentTransaction().commit(); + } } catch (Exception e){ e.printStackTrace(); |
From: Florian L. <fle...@us...> - 2005-11-14 14:11:39
|
Update of /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2004/src/net/sf/magicmap/server/facade Modified Files: PositionFacade2.java Log Message: ohne rollbacks Index: PositionFacade2.java =================================================================== RCS file: /cvsroot/magicmap/magicmapserver/src/net/sf/magicmap/server/facade/PositionFacade2.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PositionFacade2.java 8 Nov 2005 13:14:50 -0000 1.8 --- PositionFacade2.java 14 Nov 2005 14:11:29 -0000 1.9 *************** *** 123,127 **** return result; } catch (Exception e){ ! pm.currentTransaction().rollback(); throw new MapException("", e); } --- 123,127 ---- return result; } catch (Exception e){ ! // pm.currentTransaction().rollback(); throw new MapException("", e); } *************** *** 142,146 **** if (positionX < 0 || positionY < 0 || positionX > (result.getImageWidth().intValue() - 1) || positionY > (result.getImageHeight().intValue() - 1)){ ! pm.currentTransaction().rollback(); throw new MapException("Position ist nicht auf der Karte"); } --- 142,146 ---- if (positionX < 0 || positionY < 0 || positionX > (result.getImageWidth().intValue() - 1) || positionY > (result.getImageHeight().intValue() - 1)){ ! // pm.currentTransaction().rollback(); throw new MapException("Position ist nicht auf der Karte"); } *************** *** 186,190 **** result = (Session) results.iterator().next(); } else{ ! pm.currentTransaction().rollback(); throw new SessionException("Session mit der id:" + sessionId + " existiert nicht"); } --- 186,190 ---- result = (Session) results.iterator().next(); } else{ ! // pm.currentTransaction().rollback(); throw new SessionException("Session mit der id:" + sessionId + " existiert nicht"); } *************** *** 200,204 **** private Client checkClient(String mac, PersistenceManager pm) throws MapException{ if (mac == null || "".equals(mac)){ ! pm.currentTransaction().rollback(); throw new MapException("Client mac darf nicht leer sein"); } --- 200,204 ---- private Client checkClient(String mac, PersistenceManager pm) throws MapException{ if (mac == null || "".equals(mac)){ ! // pm.currentTransaction().rollback(); throw new MapException("Client mac darf nicht leer sein"); } *************** *** 212,216 **** result = (Client) results.iterator().next(); } else{ ! pm.currentTransaction().rollback(); throw new MapException("Client mit der mac-adresse:" + mac + " existiert nicht"); } --- 212,216 ---- result = (Client) results.iterator().next(); } else{ ! // pm.currentTransaction().rollback(); throw new MapException("Client mit der mac-adresse:" + mac + " existiert nicht"); } |