From: Andreas W. <an...@us...> - 2006-02-20 15:21:51
|
Update of /cvsroot/magicmap//magicmapserver/src/net/sf/magicmap/server/facade In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32749/src/net/sf/magicmap/server/facade Modified Files: MapFacade.java Log Message: geoposition-functions and table for database added Index: MapFacade.java =================================================================== RCS file: /cvsroot/magicmap//magicmapserver/src/net/sf/magicmap/server/facade/MapFacade.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** MapFacade.java 17 Feb 2006 16:15:28 -0000 1.9 --- MapFacade.java 20 Feb 2006 15:21:47 -0000 1.10 *************** *** 1,3 **** - package net.sf.magicmap.server.facade; --- 1,2 ---- *************** *** 12,16 **** --- 11,17 ---- import javax.jdo.Transaction; + import net.sf.magicmap.db.GeoPosition; import net.sf.magicmap.db.Map; + import net.sf.magicmap.db.Position; import net.sf.magicmap.db.Session; import net.sf.magicmap.server.dto.GeoPointDTO; *************** *** 25,250 **** /** ! * author schweige ! * date 03.12.2004 ! * copyright (C) 2004 Martin Schweigert, Tobias Hübner * * ! * This program is free software; you can redistribute it and/or modify ! * it under the terms of the GNU General Public License as published by ! * the Free Software Foundation; either version 2 of the License, or ! * (at your option) any later version. */ public class MapFacade implements MapFacadeInterface { ! protected transient Category logger = Category.getInstance(this.getClass()); ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#getMapNames() ! */ ! public StringReplacementDTO[] getMapNames(){ ! ArrayList result = new ArrayList(); ! 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 results = (Collection) query.execute(); ! if (results != null){ ! Iterator it = results.iterator(); ! while (it.hasNext()){ ! Map map = (Map) it.next(); ! StringReplacementDTO dto = new StringReplacementDTO(); ! dto.setWrappedString(map.getName()); ! result.add(dto); ! } ! } ! JDOUtil.commit(tx); ! } finally{ ! JDOUtil.closePM(pm); ! } ! return (StringReplacementDTO[]) result.toArray(new StringReplacementDTO[0]); ! } ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#createNewMap(long, java.lang.String, java.lang.String, int, int) ! */ ! public MapDTO createNewMap(long sessionId, String name, String URL, int width, int height) throws SessionException, ! MapException{ ! this.logger.info("createNewMap()"); ! MapDTO result = null; ! assertNotEmpty(name, "Name der Karte"); ! assertNotEmpty(name, "URL der Karte"); ! if (name.length() > 255){ ! throw new MapException("Name der Karte zu lang"); ! } ! if (URL.length() > 255){ ! throw new MapException("URL der Karte zu lang"); ! } ! try{ ! new URL(URL); ! } catch (Exception e){ ! throw new MapException("URL nicht gültig", e); ! } ! if (sessionId < 0){ ! throw new SessionException("Ungültige session id"); ! } ! if (width < 1 || height < 1){ ! throw new MapException("Breite oder Höhe stimmen nicht"); ! } ! PersistenceManager pm = null; ! Transaction tx = null; ! try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection sessions = getSessions(sessionId, pm); ! if (sessions.size() == 0){ ! JDOUtil.rollBack(tx); ! throw new SessionException("Session existiert nicht"); ! } ! Collection results = getMaps(name, pm); ! if (results.size() != 0){ ! JDOUtil.rollBack(tx); ! throw new MapException("Karte schon vorhanden"); ! } ! Map map = new Map(name, URL, new Integer(10), new Integer(10), new Integer(width), new Integer(height)); ! pm.makePersistent(map); ! result = new MapDTO(); ! result.setId(new Long(map.getId())); ! result.setName(map.getName()); ! result.setImageHeight(map.getImageHeight()); ! result.setImageWidth(map.getImageWidth()); ! result.setImageURL(map.getImageURL()); ! JDOUtil.commit(tx); ! } finally{ ! JDOUtil.closePM(pm); ! } ! this.logger.info("createNewMap() - done result: " + result); ! return result; ! } ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#getMap(java.lang.String) ! */ ! public MapDTO getMap(String name) throws MapException{ ! logger.info("Hole Karte: " + name); ! assertNotEmpty(name, "Name der Karte"); ! PersistenceManager pm = null; ! MapDTO result = null; ! Transaction tx = null; ! try{ ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection results = getMaps(name, pm); ! if (results.size() == 0){ ! JDOUtil.rollBack(tx); ! throw new MapException("Karte nicht vorhanden"); ! } ! Map map = (Map) results.iterator().next(); ! result = new MapDTO(); ! result.setId(new Long(map.getId())); ! result.setName(map.getName()); ! result.setImageHeight(map.getImageHeight()); ! result.setImageWidth(map.getImageWidth()); ! result.setImageURL(map.getImageURL()); ! ! // ToDo : Statische Werte durch die tatsächlichen ersetzen ! result.setGeoPoint1X(0); ! result.setGeoPoint1Y(0); ! result.setGeoPoint1Long(188767800); ! result.setGeoPoint1Lat(48660000); ! result.setGeoPoint1Alt(0); ! result.setGeoPoint2X(650); ! result.setGeoPoint2Y(498); ! result.setGeoPoint2Long(188720399); ! result.setGeoPoint2Lat(48759599); ! result.setGeoPoint2Alt(0); ! result.setGeoPoint3X(1); ! result.setGeoPoint3Y(1); ! result.setGeoPoint3Long(0); ! result.setGeoPoint3Lat(0); ! result.setGeoPoint3Alt(0); ! JDOUtil.commit(tx); ! } finally{ ! JDOUtil.closePM(pm); ! } ! return result; ! } ! ! public GeoPointDTO [] getGeoPointsForMap(String mapName){ ! //TODO: implement method ! return null; ! } ! /** ! * ! * @param mapName ! * @param xPos ! * @param yPos ! * @param longitude ! * @param latitude ! * @param altitude ! * @return ! */ ! public MapDTO createGeoPoint(String mapName, int xPos, int yPos, int longitude, int latitude, int altitude){ ! //TODO: implement method ! return null; ! } ! ! /** ! * ! * @param mapName ! * @param xPos ! * @param yPos ! */ ! public void deleteGeoPoint(String mapName, int xPos, int yPos){ ! //TODO: implement method ! } ! ! /** ! * @param mac ! */ ! private void assertNotEmpty(String string, String message) throws MapException{ ! if (string == null || "".equals(string.trim())){ ! throw new MapException(message + " darf nicht leer sein!"); ! } ! } - /** - * @param mac - * @param pm - * @return - */ - private Collection getMaps(String name, PersistenceManager pm){ - Collection results; - Extent e = pm.getExtent(Map.class, true); - Query query = pm.newQuery(e, "name == myname"); - query.declareImports("import java.lang.String"); - query.declareParameters("String myname"); - results = (Collection) query.execute(name); - return results; - } ! /** ! * @param mac ! * @param pm ! * @return ! */ ! private Collection getSessions(long id, PersistenceManager pm){ ! Collection results; ! Extent e = pm.getExtent(Session.class, true); ! Query query = pm.newQuery(e, "id == myId"); ! query.declareParameters("java.lang.Long myId"); ! results = (Collection) query.execute(new Long(id)); ! return results; ! } } \ No newline at end of file --- 26,401 ---- /** ! * author schweige date 03.12.2004 copyright (C) 2004 Martin Schweigert, Tobias ! * Hübner * * ! * This program is free software; you can redistribute it and/or modify it under ! * the terms of the GNU General Public License as published by the Free Software ! * Foundation; either version 2 of the License, or (at your option) any later ! * version. */ public class MapFacade implements MapFacadeInterface { ! protected transient Category logger = Category.getInstance(this.getClass()); ! /* ! * (non-Javadoc) ! * ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#getMapNames() ! */ ! public StringReplacementDTO[] getMapNames() { ! ArrayList result = new ArrayList(); ! 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 results = (Collection) query.execute(); ! if (results != null) { ! Iterator it = results.iterator(); ! while (it.hasNext()) { ! Map map = (Map) it.next(); ! StringReplacementDTO dto = new StringReplacementDTO(); ! dto.setWrappedString(map.getName()); ! result.add(dto); ! } ! } ! JDOUtil.commit(tx); ! } finally { ! JDOUtil.closePM(pm); ! } ! return (StringReplacementDTO[]) result ! .toArray(new StringReplacementDTO[0]); ! } ! /* ! * (non-Javadoc) ! * ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#createNewMap(long, ! * java.lang.String, java.lang.String, int, int) ! */ ! public MapDTO createNewMap(long sessionId, String name, String URL, ! int width, int height) throws SessionException, MapException { ! this.logger.info("createNewMap()"); ! MapDTO result = null; ! assertNotEmpty(name, "Name der Karte"); ! assertNotEmpty(name, "URL der Karte"); ! if (name.length() > 255) { ! throw new MapException("Name der Karte zu lang"); ! } ! if (URL.length() > 255) { ! throw new MapException("URL der Karte zu lang"); ! } ! try { ! new URL(URL); ! } catch (Exception e) { ! throw new MapException("URL nicht gültig", e); ! } ! if (sessionId < 0) { ! throw new SessionException("Ungültige session id"); ! } ! if (width < 1 || height < 1) { ! throw new MapException("Breite oder Höhe stimmen nicht"); ! } ! PersistenceManager pm = null; ! Transaction tx = null; ! try { ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection sessions = getSessions(sessionId, pm); ! if (sessions.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new SessionException("Session existiert nicht"); ! } ! Collection results = getMaps(name, pm); ! if (results.size() != 0) { ! JDOUtil.rollBack(tx); ! throw new MapException("Karte schon vorhanden"); ! } ! Map map = new Map(name, URL, new Integer(10), new Integer(10), ! new Integer(width), new Integer(height)); ! pm.makePersistent(map); ! result = new MapDTO(); ! result.setId(new Long(map.getId())); ! result.setName(map.getName()); ! result.setImageHeight(map.getImageHeight()); ! result.setImageWidth(map.getImageWidth()); ! result.setImageURL(map.getImageURL()); ! JDOUtil.commit(tx); ! } finally { ! JDOUtil.closePM(pm); ! } ! this.logger.info("createNewMap() - done result: " + result); ! return result; ! } ! /* ! * (non-Javadoc) ! * ! * @see net.sf.magicmap.server.facade.interfaces.MapFacadeInterface#getMap(java.lang.String) ! */ ! public MapDTO getMap(String name) throws MapException { ! logger.info("Hole Karte: " + name); ! assertNotEmpty(name, "Name der Karte"); ! PersistenceManager pm = null; ! MapDTO result = null; ! Transaction tx = null; ! try { ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection results = getMaps(name, pm); ! if (results.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new MapException("Karte nicht vorhanden"); ! } ! Map map = (Map) results.iterator().next(); ! result = new MapDTO(); ! result.setId(new Long(map.getId())); ! result.setName(map.getName()); ! result.setImageHeight(map.getImageHeight()); ! result.setImageWidth(map.getImageWidth()); ! result.setImageURL(map.getImageURL()); ! // ToDo : Statische Werte durch die tatsächlichen ersetzen ! Collection geoPoints = map.getGeoPositions(); ! int i = 1; ! while (geoPoints.iterator().hasNext()) { ! GeoPosition geoPosition = (GeoPosition) geoPoints.iterator() ! .next(); ! switch (i) { ! case 1: ! result.setGeoPoint1X(geoPosition.getPosX()); ! result.setGeoPoint1Y(geoPosition.getPosY()); ! result.setGeoPoint1Long(geoPosition.getLongitude()); ! result.setGeoPoint1Lat(geoPosition.getLatitude()); ! result.setGeoPoint1Alt(geoPosition.getAltitude()); ! break; ! case 2: ! result.setGeoPoint2X(geoPosition.getPosX()); ! result.setGeoPoint2Y(geoPosition.getPosY()); ! result.setGeoPoint2Long(geoPosition.getLongitude()); ! result.setGeoPoint2Lat(geoPosition.getLatitude()); ! result.setGeoPoint2Alt(geoPosition.getAltitude()); ! break; ! case 3: ! result.setGeoPoint3X(geoPosition.getPosX()); ! result.setGeoPoint3Y(geoPosition.getPosY()); ! result.setGeoPoint3Long(geoPosition.getLongitude()); ! result.setGeoPoint3Lat(geoPosition.getLatitude()); ! result.setGeoPoint3Alt(geoPosition.getAltitude()); ! break; ! } ! ++i; ! } ! JDOUtil.commit(tx); ! } finally { ! JDOUtil.closePM(pm); ! } ! return result; ! } ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.interfaces.MapFacadeInterface#getGeoPointsForMap(long, java.lang.String) ! */ ! public GeoPointDTO[] getGeoPointsForMap(long sessionId, String mapName) throws MapException,SessionException { ! logger.info("Hole GeoPoints für Map: " + mapName); ! assertNotEmpty(mapName, "Name der Karte"); ! if (sessionId < 0) { ! throw new SessionException("Ungültige session id"); ! } ! PersistenceManager pm = null; ! GeoPointDTO[] result = null; ! Transaction tx = null; ! try { ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection sessions = getSessions(sessionId, pm); ! if (sessions.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new SessionException("Session existiert nicht"); ! } ! Collection results = getGeoPoints(mapName, pm); ! result = new GeoPointDTO[results.size()]; ! for (int i = 0; i < results.size(); ++i) { ! GeoPosition geoPosition = (GeoPosition) results.iterator() ! .next(); ! GeoPointDTO geoPoint = new GeoPointDTO(); ! geoPoint.setGeoPointAlt(geoPosition.getAltitude()); ! geoPoint.setGeoPointLat(geoPosition.getLatitude()); ! geoPoint.setGeoPointLong(geoPosition.getLongitude()); ! geoPoint.setGeoPointX(geoPosition.getPosX()); ! geoPoint.setGeoPointY(geoPosition.getPosY()); ! geoPoint.setId(geoPosition.getId()); ! result[i] = geoPoint; ! } ! JDOUtil.commit(tx); ! } finally { ! JDOUtil.closePM(pm); ! } ! return result; ! } ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.interfaces.MapFacadeInterface#createGeoPoint(long, java.lang.String, int, int, int, int, int) ! */ ! public MapDTO createGeoPoint(long sessionId, String mapName, int xPos, ! int yPos, int longitude, int latitude, int altitude) ! throws SessionException, MapException { ! this.logger.info("createNewGeoPoint()"); ! MapDTO result = null; ! assertNotEmpty(mapName, "Name der Karte"); ! if (sessionId < 0) { ! throw new SessionException("Ungültige session id"); ! } ! PersistenceManager pm = null; ! Transaction tx = null; ! try { ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection sessions = getSessions(sessionId, pm); ! if (sessions.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new SessionException("Session existiert nicht"); ! } ! Collection maps = getMaps(mapName, pm); ! if (maps.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new MapException("Karte " + mapName + " existiert nicht"); ! } ! ! // vorläufige Beschränkung auf 3 Punkte ! // TODO: durch Berechnung der besten drei Positionen ersetzen ! Collection geoPoints = getGeoPoints(mapName, pm); ! if (geoPoints.size() > 2) { ! JDOUtil.rollBack(tx); ! throw new MapException( ! "Es existieren bereits 3 Geo-Refferenzpunkte"); ! } ! Map map = (Map) maps.iterator().next(); ! GeoPosition geoPosition = new GeoPosition(map, xPos, yPos, ! longitude, latitude, altitude); ! pm.makePersistent(geoPosition); ! ! map.addGeoPosition(geoPosition); ! pm.makePersistent(map); ! ! result = getMap(mapName); ! JDOUtil.commit(tx); ! } finally { ! JDOUtil.closePM(pm); ! } ! this.logger.info("createGeoPoint() - done result: " + result); ! ! return result; ! } ! ! ! ! /* (non-Javadoc) ! * @see net.sf.magicmap.server.interfaces.MapFacadeInterface#deleteGeoPoint(long, long) ! */ ! public void deleteGeoPoint(long sessionId, long id) throws MapException, ! SessionException { ! ! this.logger.info("deleteGeoPoint()"); ! if (sessionId < 0) { ! throw new SessionException("Ungültige session id"); ! } ! PersistenceManager pm = null; ! Transaction tx = null; ! try { ! pm = JDOUtil.pmfactory.getPersistenceManager(); ! tx = pm.currentTransaction(); ! tx.begin(); ! Collection sessions = getSessions(sessionId, pm); ! if (sessions.size() == 0) { ! JDOUtil.rollBack(tx); ! throw new SessionException("Session existiert nicht"); ! } ! Extent e = pm.getExtent(GeoPosition.class, true); ! Query query = pm.newQuery(e, "id == myId"); ! query.declareImports("import java.lang.Long"); ! query.declareParameters("String myId"); ! ! Collection results = (Collection) query.execute(new Long(id)); ! if (results != null && !results.isEmpty()) { ! pm.deletePersistent((GeoPosition) results.iterator().next()); ! } else { ! pm.currentTransaction().rollback(); ! throw new MapException("GeoPosition mit der id:" + id ! + " existiert nicht"); ! } ! } finally { ! JDOUtil.closePM(pm); ! } ! this.logger.info("deleteGeoPoint() - done"); ! } ! ! /** ! * @param mac ! */ ! private void assertNotEmpty(String string, String message) ! throws MapException { ! if (string == null || "".equals(string.trim())) { ! throw new MapException(message + " darf nicht leer sein!"); ! } ! } ! ! ! ! /** ! * @param mapName ! * @param pm ! * @return ! */ ! private Collection getGeoPoints(String mapName, PersistenceManager pm) { ! Collection results; ! Extent e = pm.getExtent(GeoPosition.class, true); ! Query query = pm.newQuery(e, "map == myname"); ! query.declareImports("import java.lang.String"); ! query.declareParameters("String myname"); ! results = (Collection) query.execute(mapName); ! return results; ! } ! ! /** ! * @param mac ! * @param pm ! * @return ! */ ! private Collection getMaps(String name, PersistenceManager pm) { ! Collection results; ! Extent e = pm.getExtent(Map.class, true); ! Query query = pm.newQuery(e, "name == myname"); ! query.declareImports("import java.lang.String"); ! query.declareParameters("String myname"); ! results = (Collection) query.execute(name); ! return results; ! } ! ! /** ! * @param mac ! * @param pm ! * @return ! */ ! private Collection getSessions(long id, PersistenceManager pm) { ! Collection results; ! Extent e = pm.getExtent(Session.class, true); ! Query query = pm.newQuery(e, "id == myId"); ! query.declareParameters("java.lang.Long myId"); ! results = (Collection) query.execute(new Long(id)); ! return results; ! } } \ No newline at end of file |