Update of /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23808/src/net/sf/magicmap/client/controller Modified Files: PollHandler.java Controller.java VirtualServerManager.java ServerManager.java SOAPServerManager.java ServerPoller.java Log Message: added support for info objects and rfid antennas and tags Index: VirtualServerManager.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/VirtualServerManager.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** VirtualServerManager.java 23 Feb 2006 18:34:38 -0000 1.6 --- VirtualServerManager.java 28 Feb 2006 11:23:16 -0000 1.7 *************** *** 20,23 **** --- 20,25 ---- import net.sf.magicmap.client.meta.MapInfo; import net.sf.magicmap.client.model.node.GeoPos; + import net.sf.magicmap.client.model.node.InfoObject; + import net.sf.magicmap.client.model.node.RFIDAntenna; import net.sf.magicmap.client.utils.Settings; import net.sf.magicmap.client.utils.Version; *************** *** 474,476 **** --- 476,496 ---- } + /* (non-Javadoc) + * @see net.sf.magicmap.client.controller.ServerManager#createInfoObject(int, int, boolean, net.sf.magicmap.client.model.node.InfoObject, java.lang.String, net.sf.magicmap.client.interfaces.CreatePositionCallback) + */ + @Override + public void createInfoObject(int x, int y, boolean fixed, InfoObject infoObject, String mapName, CreatePositionCallback callback) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.controller.ServerManager#createRFIDAntenna(int, int, boolean, net.sf.magicmap.client.model.node.RFIDAntenna, java.lang.String, net.sf.magicmap.client.interfaces.CreatePositionCallback) + */ + @Override + public void createRFIDAntenna(int x, int y, boolean fixed, RFIDAntenna antenna, String mapName, CreatePositionCallback callback) { + // TODO Auto-generated method stub + + } + } \ No newline at end of file Index: Controller.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Controller.java 26 Feb 2006 10:20:56 -0000 1.10 --- Controller.java 28 Feb 2006 11:23:16 -0000 1.11 *************** *** 10,14 **** --- 10,16 ---- import java.net.UnknownHostException; import java.util.ArrayList; + import java.util.Collection; + import net.sf.magicmap.client.gui.utils.GUIUtils; import net.sf.magicmap.client.interfaces.CreateNewMapCallback; import net.sf.magicmap.client.interfaces.CreatePositionCallback; *************** *** 32,37 **** --- 34,42 ---- import net.sf.magicmap.client.model.node.ClientNode; import net.sf.magicmap.client.model.node.GeoPos; + import net.sf.magicmap.client.model.node.InfoObject; import net.sf.magicmap.client.model.node.Node; import net.sf.magicmap.client.model.node.NodeModel; + import net.sf.magicmap.client.model.node.RFIDAntenna; + import net.sf.magicmap.client.model.node.RFIDTag; import net.sf.magicmap.client.net.NetworkInfo; import net.sf.magicmap.client.utils.Settings; *************** *** 70,73 **** --- 75,83 ---- private boolean invisble; // Invisible-Modus (keine Daten an Server) + + // pseudo server items + private Collection infoObjects; + private Collection rfidAntennas; + private ArrayList rfidTags; /** *************** *** 105,108 **** --- 115,124 ---- Settings.setClientMAC(clientMac); buildViews(); + + //pseudo server items + infoObjects = new ArrayList(); + rfidAntennas = new ArrayList(); + rfidTags = new ArrayList(); + initializeScanner(); } *************** *** 463,466 **** --- 479,518 ---- } + + /** + * Creates an InfoObject on the current map with the supplied parameters + * @param lastX + * @param lastY + * @param infoObject + * @param string + * @param b + * @param panel + */ + public void createInfoObject(int x, int y, InfoObject infoObject, String mapName, boolean fixed, CreatePositionCallback callback) { + if (!isConnected() || !isMapLoaded()) { + callback.positionCreationError(new Exception("Nicht verbunden oder keine Karte geladen.")); + } else{ + serverManager.createInfoObject(x, y, fixed, infoObject, mapName, callback); + } + } + + + /** + * @param lastX + * @param lastY + * @param antenna + * @param string + * @param b + * @param panel + */ + public void createRFIDAntenna(int x, int y, RFIDAntenna antenna, String mapName, boolean fixed, CreatePositionCallback callback) { + if (!isConnected() || !isMapLoaded()) { + callback.positionCreationError(new Exception("Nicht verbunden oder keine Karte geladen.")); + } else { + serverManager.createRFIDAntenna(x, y, fixed, antenna, mapName, callback); + } + + } + /** *************** *** 509,512 **** --- 561,565 ---- public void retrieveMap(String name, MapCallback callback) { serverManager.retrieveMap(name, callback); + getMapView().setTitle(GUIUtils.i18n("map", false) + " - " + name); } *************** *** 523,525 **** --- 576,605 ---- } + + public Collection getInfoObjects() { + return infoObjects; + } + + + public Collection getRfidAntennas() { + return rfidAntennas; + } + + + public Collection getRfidTags() { + return rfidTags; + } + + + public void addRfidTag(String id) { + long timestamp = System.currentTimeMillis(); + if (rfidTags.contains(id)) { + int index = rfidTags.indexOf(id); + ((RFIDTag) rfidTags.get(index)).setTimestamp(timestamp); + } else { + rfidTags.add(new RFIDTag(id, timestamp)); + } + } + + } Index: PollHandler.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PollHandler.java 26 Feb 2006 10:20:56 -0000 1.6 --- PollHandler.java 28 Feb 2006 11:23:16 -0000 1.7 *************** *** 15,22 **** --- 15,28 ---- import net.sf.magicmap.client.model.node.GeoPos; import net.sf.magicmap.client.model.node.GeoPosNode; + import net.sf.magicmap.client.model.node.InfoObject; + import net.sf.magicmap.client.model.node.InfoObjectNode; import net.sf.magicmap.client.model.node.LocationNode; import net.sf.magicmap.client.model.node.MapNode; import net.sf.magicmap.client.model.node.Node; import net.sf.magicmap.client.model.node.NodeModel; + import net.sf.magicmap.client.model.node.RFIDAntenna; + import net.sf.magicmap.client.model.node.RFIDAntennaNode; + import net.sf.magicmap.client.model.node.RFIDTag; + import net.sf.magicmap.client.model.node.RFIDTagNode; import net.sf.magicmap.server.dto.AccessPointDTO; import net.sf.magicmap.server.dto.ClientDTO; *************** *** 76,80 **** } if (position.getClient() != null){ ! Node client = nodeModel.findNode(position.getClient().getName()); /* if (client != null) { --- 82,86 ---- } if (position.getClient() != null){ ! // Node client = nodeModel.findNode(position.getClient().getName()); /* if (client != null) { *************** *** 404,407 **** --- 410,526 ---- } + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.ServerPollerListener#infoObjectCreatedorUpdatedOrDeleted(net.sf.magicmap.client.model.node.InfoObject) + */ + public void infoObjectCreatedorUpdatedOrDeleted(final InfoObject infoObject) { + + try { + SwingUtilities.invokeAndWait(new Runnable() { + + public void run() { + try { + NodeModel nodeModel = controller.getNodeModel(); + Node node = nodeModel.findNode(infoObject.getUrl()); + + if (node == null) { + InfoObjectNode infoNode = new InfoObjectNode(nodeModel); + infoNode.setName(infoObject.getUrl()); + infoNode.setId(infoObject.hashCode()); + if (infoObject.getMap().equals(Controller.getInstance().getCurrentMap().name)) { + nodeModel.addNode(infoNode); + infoNode.setFix(true); + infoNode.setPosition(infoObject.getX(), infoObject.getY()); + } + } + + } 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(); + } + } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.ServerPollerListener#rfidAntennaCreatedOrUpdatedOrDeleted(net.sf.magicmap.client.model.node.RFIDAntenna) + */ + public void rfidAntennaCreatedOrUpdatedOrDeleted(final RFIDAntenna antenna) { + try { + SwingUtilities.invokeAndWait(new Runnable() { + + public void run() { + try { + NodeModel nodeModel = controller.getNodeModel(); + Node node = nodeModel.findNode(antenna.getURL()); + + if (node == null) { + RFIDAntennaNode antennaNode = new RFIDAntennaNode(nodeModel); + antennaNode.setName(antenna.getURL()); + antennaNode.setId(antenna.hashCode()); + if (antenna.getMap().equals(Controller.getInstance().getCurrentMap().name)) { + nodeModel.addNode(antennaNode); + antennaNode.setFix(true); + antennaNode.setPosition(antenna.getX(), antenna.getY()); + } + } + + } 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(); + } + + } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.ServerPollerListener#rfidTagCreatedOrUpdatedOrDeleted(net.sf.magicmap.client.model.node.RFIDTag) + */ + public void rfidTagCreatedOrUpdatedOrDeleted(final RFIDTag tag) { + try { + SwingUtilities.invokeAndWait(new Runnable() { + + public void run() { + try { + NodeModel nodeModel = controller.getNodeModel(); + Node node = nodeModel.findNode(tag.getUrl()); + + if (node == null) { + RFIDTagNode rfidTagNode = new RFIDTagNode(nodeModel); + rfidTagNode.setName(tag.getUrl()); + rfidTagNode.setId(tag.hashCode()); + if (tag.getMap().equals(Controller.getInstance().getCurrentMap().name)) { + nodeModel.addNode(rfidTagNode); + rfidTagNode.setFix(true); + rfidTagNode.setPosition(tag.getX(), tag.getY()); + } + } + + } 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(); + } + + } } Index: SOAPServerManager.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/SOAPServerManager.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SOAPServerManager.java 26 Feb 2006 10:20:57 -0000 1.7 --- SOAPServerManager.java 28 Feb 2006 11:23:16 -0000 1.8 *************** *** 7,10 **** --- 7,11 ---- import java.io.IOException; import java.rmi.RemoteException; + import java.util.Collection; import net.sf.magicmap.client.delegate.MapDelegate; *************** *** 26,29 **** --- 27,32 ---- import net.sf.magicmap.client.meta.MapInfo; import net.sf.magicmap.client.model.node.GeoPos; + import net.sf.magicmap.client.model.node.InfoObject; + import net.sf.magicmap.client.model.node.RFIDAntenna; import net.sf.magicmap.client.utils.Settings; import net.sf.magicmap.client.utils.Version; *************** *** 262,266 **** // new GeoPointDTO(geoPos.getAltitude(), geoPos.getLatitude(), geoPos.getLongitude(), x, y, (long) -1); ! Thread createPositionThread = new Thread() { public void run(){ --- 265,269 ---- // new GeoPointDTO(geoPos.getAltitude(), geoPos.getLatitude(), geoPos.getLongitude(), x, y, (long) -1); ! Thread createGeoPosThread = new Thread() { public void run(){ *************** *** 278,284 **** } }; ! createPositionThread.start(); } } /** --- 281,337 ---- } }; ! createGeoPosThread.start(); ! } ! } ! ! ! /* (non-Javadoc) ! * @see net.sf.magicmap.client.controller.ServerManager#createInfoObject(int, int, boolean, net.sf.magicmap.client.model.node.InfoObject, java.lang.String, net.sf.magicmap.client.interfaces.CreatePositionCallback) ! */ ! @Override ! public void createInfoObject(final int x, final int y, final boolean fixed, final InfoObject infoObject, final String mapName, final CreatePositionCallback callback) { ! ! if (isConnected()) { ! ! Thread createInfoObjectThread = new Thread() { ! public void run() { ! synchronized(mutex) { ! try { ! SOAPServerManager.this.mapDelegate.createInfoObject ( ! sessionId, mapName, x, y, infoObject.getUrl(), infoObject.getType()); ! } catch (Exception e) { ! callback.positionCreationError(e); ! } ! } ! } ! }; ! createInfoObjectThread.start(); ! } ! ! } ! ! /* (non-Javadoc) ! * @see net.sf.magicmap.client.controller.ServerManager#createRFIDAntenna(int, int, boolean, net.sf.magicmap.client.model.node.RFIDAntenna, java.lang.String, net.sf.magicmap.client.interfaces.CreatePositionCallback) ! */ ! @Override ! public void createRFIDAntenna(final int x, final int y, boolean fixed, final RFIDAntenna antenna, final String mapName, final CreatePositionCallback callback) { ! ! if (isConnected()) { ! Thread createRFIDAntennaThread = new Thread() { ! public void run() { ! synchronized(mutex) { ! try { ! SOAPServerManager.this.mapDelegate.createRFIDAntenna( ! sessionId, mapName, x, y, antenna.getURL()); ! } catch (Exception e) { ! callback.positionCreationError(e); ! } ! } ! } ! }; ! createRFIDAntennaThread.start(); } } + /** *************** *** 456,459 **** --- 509,531 ---- } + // retrieve info points + Collection infoObjects = Controller.getInstance().getInfoObjects(); + if (infoObjects != null && infoObjects.size() > 0) { + callback.infoPointsFetched(infoObjects); + } + + // retrieve RFID antennas + Collection rfidAntennas = Controller.getInstance().getRfidAntennas(); + if (rfidAntennas != null && rfidAntennas.size() > 0) { + callback.rfidAntennasFetched(rfidAntennas); + } + + // retrieve RFID tags + Collection rfidTags = Controller.getInstance().getRfidTags(); + if (rfidTags != null && rfidTags.size() > 0) { + callback.rfidTagsFetched(rfidTags); + } + + } catch (Exception e) { callback.positionFetchError(e); Index: ServerPoller.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/ServerPoller.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ServerPoller.java 26 Feb 2006 10:20:57 -0000 1.5 --- ServerPoller.java 28 Feb 2006 11:23:16 -0000 1.6 *************** *** 5,8 **** --- 5,10 ---- package net.sf.magicmap.client.controller; + import java.util.Collection; + import java.util.Iterator; import java.util.Timer; import java.util.TimerTask; *************** *** 10,13 **** --- 12,18 ---- import net.sf.magicmap.client.interfaces.FetchPositionsCallback; import net.sf.magicmap.client.interfaces.ServerPollerListener; + import net.sf.magicmap.client.model.node.InfoObject; + import net.sf.magicmap.client.model.node.RFIDAntenna; + import net.sf.magicmap.client.model.node.RFIDTag; import net.sf.magicmap.client.utils.Settings; import net.sf.magicmap.server.dto.GeoPointDTO; *************** *** 103,106 **** --- 108,153 ---- } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.FetchPositionsCallback#infoPointsFetched(java.util.Collection) + */ + public void infoPointsFetched(Collection infoObjects) { + + Iterator infoIterator = infoObjects.iterator(); + while (infoIterator.hasNext()) { + listener.infoObjectCreatedorUpdatedOrDeleted((InfoObject)infoIterator.next()); + } + synchronized (syncObj) { + isFetching = false; + } + + } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.FetchPositionsCallback#rfidAntennasFetched(java.util.Collection) + */ + public void rfidAntennasFetched(Collection rfidAntennas) { + + Iterator antennaIterator = rfidAntennas.iterator(); + while (antennaIterator.hasNext()) { + listener.rfidAntennaCreatedOrUpdatedOrDeleted((RFIDAntenna)antennaIterator.next()); + } + synchronized (syncObj) { + isFetching = false; + } + } + + /* (non-Javadoc) + * @see net.sf.magicmap.client.interfaces.FetchPositionsCallback#rfidTagsFetched(java.util.Collection) + */ + public void rfidTagsFetched(Collection rfidTags) { + Iterator tagInterator = rfidTags.iterator(); + while (tagInterator.hasNext()) { + listener.rfidTagCreatedOrUpdatedOrDeleted((RFIDTag)tagInterator.next()); + } + synchronized (syncObj) { + isFetching = false; + } + } *************** *** 115,117 **** --- 162,166 ---- } } + + } Index: ServerManager.java =================================================================== RCS file: /cvsroot/magicmap/magicmapclient/src/net/sf/magicmap/client/controller/ServerManager.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ServerManager.java 26 Feb 2006 10:20:57 -0000 1.11 --- ServerManager.java 28 Feb 2006 11:23:16 -0000 1.12 *************** *** 27,30 **** --- 27,32 ---- import net.sf.magicmap.client.model.measurement.SeenAccessPoint; import net.sf.magicmap.client.model.node.GeoPos; + import net.sf.magicmap.client.model.node.InfoObject; + import net.sf.magicmap.client.model.node.RFIDAntenna; import net.sf.magicmap.server.dto.PositionDTO; import net.sf.magicmap.server.dto.SignalCharacterDTO; *************** *** 150,155 **** --- 152,180 ---- public abstract void createGeoPos(final int x, final int y, final boolean fixed, final GeoPos geoPos, final String name, final CreatePositionCallback callback); + + /** + * @param x + * @param y + * @param fixed + * @param infoObject + * @param mapName + * @param callback + */ + public abstract void createInfoObject(final int x, final int y, final boolean fixed, final InfoObject infoObject, + final String mapName, final CreatePositionCallback callback); /** + * @param x + * @param y + * @param fixed + * @param antenna + * @param mapName + * @param callback + */ + public abstract void createRFIDAntenna(final int x, final int y, final boolean fixed, final RFIDAntenna antenna, + final String mapName, final CreatePositionCallback callback); + + + /** * Entfernt einen Referenzpunkt oder die Positionierung eines * AccessPoints oder Clients mit gegebener Id vom Server *************** *** 198,201 **** --- 223,227 ---- public abstract void submitClientInfo(); + // /** // * Load new map |