package se252.jan15.calvinandhobbes.project0; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; public class DBConn { private static Connection conn = null; public static void initDBConn() { IIScCampusMapProperties prop = new IIScCampusMapProperties(); String forName, host, username, password, database; forName = prop.getProperty("forName"); host = prop.getProperty("host"); username = prop.getProperty("username"); password = prop.getProperty("password"); database = prop.getProperty("database"); try { Class.forName(forName); String url = "jdbc:sqlserver://"+host+";user="+username+";password="+password+";database="+database; conn = DriverManager.getConnection(url); } catch(Exception e) { System.out.println(e); } } public static LayerInfo[] getCategoryInfo(String category) { LayerInfo[] layerArray = null; ArrayList<LayerInfo> layers = new ArrayList<LayerInfo>(); Connection sqlConn = conn; String queryString = "select * from PointOfInterest where CatId = (select catId from Category where CatName = '"+category+"')"; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery("select * from Category where CatName = '"+category+"'"); if(!rs.next()) { System.out.println("Invalide category "+ category +" asked"); stmt.close(); return null; } rs = stmt.executeQuery(queryString); while(rs.next()) { LayerInfo lf = new LayerInfo(); lf.setName(rs.getString(1)); lf.setCategory(category); lf.setLatitude(rs.getFloat(3)); lf.setLongitude(rs.getFloat(4)); lf.setAddress(rs.getString(5)); lf.setDescription(rs.getString(6)); layers.add(lf); } stmt.close(); } catch(Exception e) { System.out.println(e); } layerArray = new LayerInfo[layers.size()]; layers.toArray(layerArray); return layerArray; } public static LayerInfo[] getCategories() { LayerInfo[] layerArray = null; ArrayList<LayerInfo> layers = new ArrayList<LayerInfo>(); Connection sqlConn = conn; String queryString = "select CatName from Category order by CatId"; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryString); LayerInfo lf = new LayerInfo(); lf.setName("Dining Outside"); lf.setCategory(""); lf.setLatitude(0); lf.setLongitude(0); lf.setDescription(""); layers.add(lf); lf = new LayerInfo(); lf.setName("Event"); lf.setCategory(""); lf.setLatitude(0); lf.setLongitude(0); lf.setDescription(""); layers.add(lf); while(rs.next()) { lf = new LayerInfo(); lf.setName(rs.getString(1)); lf.setCategory(""); lf.setLatitude(0); lf.setLongitude(0); lf.setDescription(""); layers.add(lf); } stmt.close(); } catch(Exception e) { System.out.println(e); } layerArray = new LayerInfo[layers.size()]; layers.toArray(layerArray); return layerArray; } public static EventInfo[] getEvents() { EventInfo[] layerArray = null; ArrayList<EventInfo> layers = new ArrayList<EventInfo>(); Connection sqlConn = conn; String queryString = "select * from Event E, Category C, PointOfInterest P\r\n" + " where E.CatId = P.CatId\r\n" + " and E.PlaceName = P.Name\r\n" + " and P.CatId = C.CatId"; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryString); while(rs.next()) { EventInfo lf = new EventInfo(); lf.setEventTitle(rs.getString(1)); lf.setName(rs.getString(2)); lf.setEventStart(rs.getString(4)); lf.setEventEnd(rs.getString(5)); lf.setEventDesc(rs.getString(6)); lf.setCategory(rs.getString(8)); lf.setLatitude(rs.getFloat(11)); lf.setLongitude(rs.getFloat(12)); lf.setAddress(rs.getString(13)); lf.setDescription(rs.getString(14)); layers.add(lf); } stmt.close(); } catch(Exception e) { System.out.println(e); } layerArray = new EventInfo[layers.size()]; layers.toArray(layerArray); return layerArray; } public static boolean insertLayer(LayerInfo layer) { boolean ret = true; String catId = null; String queryStr = "select CatId from Category where CatName = '"+layer.getCategory()+"'"; Connection sqlConn = conn; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryStr); if(rs.next()) catId = rs.getString(1); queryStr = "insert into PointOfInterest values ('"; queryStr += layer.getName() + "', "; queryStr += catId + ", "; queryStr += layer.getLatitude() + ", "; queryStr += layer.getLongitude() + ", '"; queryStr += layer.getAddress() + "', '"; queryStr += layer.getDescription() + "')"; stmt.execute(queryStr); stmt.close(); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } public static boolean insertEvent(EventInfo layer) { boolean ret = true; String catId = null; String queryStr = "select CatId from Category where CatName = '"+layer.getCategory()+"'"; Connection sqlConn = conn; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryStr); if(rs.next()) catId = rs.getString(1); queryStr = "insert into Event values ('"; queryStr += layer.getEventTitle() + "', '"; queryStr += layer.getName() + "', "; queryStr += catId + ", '"; queryStr += layer.getEventStart() + "', '"; queryStr += layer.getEventEnd() + "', '"; queryStr += layer.getEventDesc() + "')"; stmt.execute(queryStr); stmt.close(); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } public static boolean deleteLayer(LayerInfo layer) { boolean ret = true; String catId = null; String queryStr = "select CatId from Category where CatName = '"+layer.getCategory()+"'"; Connection sqlConn = conn; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryStr); if(rs.next()) catId = rs.getString(1); queryStr = "delete from PointOfInterest where Name = '"+layer.getName()+"' and CatId = "+catId; stmt.execute(queryStr); stmt.close(); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } public static boolean updateLayer(LayerInfo layer, String oldName) { boolean ret = true; String catId = null; String queryStr = "select CatId from Category where CatName = '"+layer.getCategory()+"'"; Connection sqlConn = conn; try { Statement stmt = sqlConn.createStatement(); ResultSet rs = stmt.executeQuery(queryStr); if(rs.next()) catId = rs.getString(1); queryStr = "update PointOfInterest set Name = '"; queryStr += layer.getName() + "', CatId = "; queryStr += catId + ", Latitude = "; queryStr += layer.getLatitude() + ", Longitude = "; queryStr += layer.getLongitude() + ", Address = '"; queryStr += layer.getAddress() + "', Description = '"; queryStr += layer.getDescription() + "' where Name = '"; queryStr += oldName + "' and CatId = " + catId; stmt.execute(queryStr); stmt.close(); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } public static boolean insertData(LayerInfo layer) { boolean ret = true; String queryStr = "insert into PointOfInterest values ('"; queryStr += layer.getName() + "', "; queryStr += layer.getCategory() + ", "; queryStr += layer.getLatitude() + ", "; queryStr += layer.getLongitude() + ", '"; queryStr += layer.getAddress() + "', ' ')"; Connection sqlConn = conn; try { Statement stmt = sqlConn.createStatement(); stmt.execute(queryStr); stmt.close(); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } }