package persistency; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.Vector; import models.Comment; import models.Location; /** * LocationMapper.java * This class will be used when something with locations must be done, basicly this * class will interact with the ImageMapper * * @author Bert Schuyten * @since 2007 */ public class LocationMapper extends CommentMapper { /** * public constructor * * @return void */ public LocationMapper() { super("locations", 3); } /** * Get a persistent location object by inserting the location id * * @param id location id * @return persistent location object */ public PersLocation getLocation(int id) { String sql = "SELECT x, y FROM " + getTable() + " WHERE id = '" + id + "'"; try { ResultSet rs = select(sql); if(! rs.next()) return null; double x = rs.getDouble("x"); double y = rs.getDouble("y"); rs.close(); Location l = new Location(x, y, getCommentByTid(id)); return new PersLocation(id, l); } catch (SQLException e) { e.printStackTrace(); } return null; } /** * Edit a location object by inserting the new persistent location object * * @param pl persistent location object * @return amount of effected rows (normally one) */ public int editLocation(PersLocation pl) { String sql = "UPDATE " + getTable() + " SET x = '" + pl.getX() + "', y = '" + pl.getY() + "'"; int updateCount = edit(sql); editCommentByTid(pl.getId(), (Comment) pl); return updateCount; } /** * Insert a location into the database by passing the location object. * * @param l location object * @return persistent location object */ public PersLocation addLocation(Location l) { String sql = "INSERT INTO " + getTable() + " (x, y) VALUES ('" + l.getX() + "', '" + l.getY() + "')"; Comment c = (Comment) l; int id = insert(sql, c); return new PersLocation(id, l); } /** * Delete a location from the database by id. * * @param lid location id * @return amount of effected rows */ public int deleteLocation(int lid) { String sql = "DELETE FROM " + getTable() + " WHERE id = '" + lid + "'"; deleteTaggedComment(lid); int updateCount = delete(sql); return updateCount; } /** * Get all the locations who are present in the database. * * @return ArrayList with persistent location objects */ public ArrayList getAllLocations() { Vector v = getAllRowids(); Iterator it = v.iterator(); ArrayList locations = new ArrayList(); while(it.hasNext()) locations.add(getLocation(it.next())); return locations; } /** * Get the id of the location name given in the parameter. On success return * the id, on failure return 0 * * @param name the location name * @return location id */ public int getLocationIdByName(String name) { return getCommentIdByTopic(name); } /** * Checks for location existance. * * @param name the location name * @return Boolean */ public Boolean locationExists(String name) { if(getLocationIdByName(name) == 0) return false; else return true; } }