diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java index ecdf3e6..35b172d 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java @@ -15,7 +15,6 @@ public class DatabaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "mountainNavigation"; - //private static final String TABLE_POI = "pois"; private static final String TABLE_GP = "geopoint"; private static final String TABLE_FOUNTAIN = "fountain"; private static final String TABLE_PATH = "path"; @@ -37,6 +36,8 @@ private static final String KEY_GP_ID = "_gp_id"; private static final String KEY_FOUNTAIN_SIZE = "_size"; + private static final String KEY_GP_S_ID = "_gp_s_id"; + private static final String KEY_GP_E_ID = "_gp_e_id"; private static final String KEY_PATH_LENGTH = "_length"; private static final String KEY_PATH_EXPOSED = "_path_exp"; private static final String KEY_PATH_DIFF_WET = "_path_diff"; @@ -48,6 +49,9 @@ private static final String KEY_BREAK_POINT_ROOFED = "_break_point_roofed"; private static final String KEY_HUT_TYPE = "_hut_type"; private static final String KEY_HUT_WINTER_ROOM = "_hut_winter_room"; + private static final String KEY_HUT_NAME = "_hut_name"; + private static final String KEY_PEAK_NAME = "_peak_name"; + private static final String KEY_LIFT_NAME = "_lift_name"; private static final String KEY_CELL_RECEPTION_STRENGTH = "_cell_reception_strength"; private static final String KEY_CELL_RECEPTION_OP_NAME = "_cell_reception_op_name"; private static final String KEY_CELL_RECEPTION_OP_COUNTRY = "_cell_reception_op_country"; @@ -55,6 +59,7 @@ private static final String KEY_CELL_RECEPTION_ROAMING = "_cell_reception_roaming"; private static final String KEY_WIFI_SSID = "_wifi_ssid"; private static final String KEY_WIFI_LEVELS = "_wifi_levels"; + private static final String KEY_IMAGE_IMG = "_img_src"; public DatabaseHandler(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); @@ -62,7 +67,7 @@ @Override public void onCreate(SQLiteDatabase db) { - //create POI table + //create geo point table String CREATE_GP_TABLE = "CREATE TABLE " + TABLE_GP + "(" + KEY_POI_ID + " INTEGER PRIMARY KEY," + KEY_POI_LAT + " REAL," @@ -71,25 +76,138 @@ + KEY_POI_TYPE + " TEXT," + KEY_POI_TIME + " INTEGER" + ")"; db.execSQL(CREATE_GP_TABLE); - - //TODO add other tables + //create Fountain table + String CREATE_FOUNTAIN_TABLE = "CREATE TABLE " + TABLE_FOUNTAIN + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_FOUNTAIN_SIZE + " INTEGER" + ")"; + db.execSQL(CREATE_FOUNTAIN_TABLE); + //create Fountain table + String CREATE_PATH_TABLE = "CREATE TABLE " + TABLE_PATH + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_S_ID + " INTEGER," + + KEY_GP_E_ID + " INTEGER," + + KEY_PATH_LENGTH + " TEXT," + + KEY_PATH_EXPOSED + " INTEGER," + + KEY_PATH_DIFF_WET + " INTEGER," + + KEY_PATH_GIDDINESS + " INTEGER," + + KEY_PATH_CLIMBING + " INTEGER" + ")"; + db.execSQL(CREATE_PATH_TABLE); + //create break point table + String CREATE_BREAK_POINT_TABLE = "CREATE TABLE " + TABLE_BREAK_POINT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_BREAK_POINT_STONE + " INTEGER," + + KEY_BREAK_POINT_BENCH + " INTEGER," + + KEY_BREAK_POINT_TABLE + " INTEGER," + + KEY_BREAK_POINT_ROOFED + " INTEGER" + ")"; + db.execSQL(CREATE_BREAK_POINT_TABLE); + //create hut table + String CREATE_HUT_TABLE = "CREATE TABLE " + TABLE_HUT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_HUT_TYPE + " INTEGER," + + KEY_HUT_WINTER_ROOM + " INTEGER," + + KEY_HUT_NAME + " TEXT" + ")"; + db.execSQL(CREATE_HUT_TABLE); + //create peak table + String CREATE_PEAK_TABLE = "CREATE TABLE " + TABLE_PEAK + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_PEAK_NAME + " TEXT" + ")"; + db.execSQL(CREATE_PEAK_TABLE); + //create cell reception table + String CREATE_CR_TABLE = "CREATE TABLE " + TABLE_CELL_RECEPTION + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_CELL_RECEPTION_STRENGTH + " INTEGER," + + KEY_CELL_RECEPTION_OP_NAME + " TEXT," + + KEY_CELL_RECEPTION_OP_COUNTRY + " TEXT," + + KEY_CELL_RECEPTION_ROAMING + " INTEGER" + ")"; + db.execSQL(CREATE_CR_TABLE); + //create wifi table + String CREATE_WIFI_TABLE = "CREATE TABLE " + TABLE_WIFI + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_WIFI_SSID + " TEXT," + + KEY_WIFI_LEVELS + "INTEGER" + ")"; + db.execSQL(CREATE_WIFI_TABLE); + //create lift table + String CREATE_LIFT_TABLE = "CREATE TABLE " + TABLE_LIFT + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_S_ID + " INTEGER," + + KEY_GP_E_ID + " INTEGER," + + KEY_LIFT_NAME + " TEXT" + ")"; + db.execSQL(CREATE_LIFT_TABLE); + //create image table + String CREATE_IMAGE_TABLE = "CREATE TABLE " + TABLE_IMAGE + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER," + + KEY_GP_E_ID + " TEXT," + + KEY_POI_TYPE + " TEXT," + + KEY_IMAGE_IMG + " BLOB" + ")"; + db.execSQL(CREATE_IMAGE_TABLE); + //create trash bin table + String CREATE_TRASH_TABLE = "CREATE TABLE " + TABLE_TRASH_BIN + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_GP_ID + " INTEGER" + ")"; + db.execSQL(CREATE_TRASH_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_GP); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_FOUNTAIN); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_PATH); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_HUT); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_PEAK); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_BREAK_POINT); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRASH_BIN); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_IMAGE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_CELL_RECEPTION); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIFI); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIFT); onCreate(db); } public long addPoi(Poi poi){ SQLiteDatabase db = this.getWritableDatabase(); + String table = ""; ContentValues values = new ContentValues(); - values.put(KEY_POI_LAT, poi.getLat()); - values.put(KEY_POI_LON, poi.getLon()); - values.put(KEY_POI_ALT, poi.getAlt()); - values.put(KEY_POI_TYPE, poi.getType()); - values.put(KEY_POI_TIME, poi.getTime()); - long rowId = db.insert(TABLE_POI, null, values); + switch(poi.getType()){ + case Types.FOUNTAIN: + Fountain f = (Fountain) poi; + //TODO values.put(KEY_GP_ID, f.getGpId()); + //TODO values.put(KEY_FOUNTAIN_SIZE, f.getSize()); + break; + case Types.PATH: + break; + case Types.BREAK_POINT: + break; + case Types.TRASH_BIN: + break; + case Types.PIC: + break; + case Types.CELL_RECEPTION: + break; + case Types.WIFI: + break; + case Types.LIFT: + break; + case Types.PEAK: + break; + case Types.HUT: + break; + case Types.GP: + DbGeoPoint dbgp = (DbGeoPoint) poi; + values.put(KEY_POI_LAT, dbgp.getLat()); + values.put(KEY_POI_LON, dbgp.getLon()); + values.put(KEY_POI_ALT, dbgp.getAlt()); + values.put(KEY_POI_TYPE, dbgp.getType()); + values.put(KEY_POI_TIME, dbgp.getTime()); + break; + } + long rowId = db.insert(table, null, values); db.close(); return rowId; } @@ -187,7 +305,6 @@ double _lat = Double.parseDouble(cursor.getString(1)); double _lon = Double.parseDouble(cursor.getString(2)); double _alt = Double.parseDouble(cursor.getString(3)); - //int _type = Integer.parseInt(cursor.getString(4)); long _time = Long.parseLong(cursor.getString(5)) * 1000; int _ext_poi_id = Integer.parseInt(cursor.getString(6)); poiList.add(new Poi(_id, _lat, _lon, _alt, _type, _time, _ext_poi_id)); @@ -199,34 +316,4 @@ return poiList; } - - public void addPoiOptions(long _poi_id, int... options){ - SQLiteDatabase db = this.getWritableDatabase(); - for(int i=0; i getPoiOptions(long _poi_id){ - ArrayList optList = new ArrayList<>(); - SQLiteDatabase db = this.getReadableDatabase(); - Cursor cursor = db.query(TABLE_PROPERTIES, - new String[]{KEY_PROPERTIES_ID, KEY_PROPERTIES_OPT_ID}, - KEY_PROPERTIES_POI_ID + "=?", - new String[]{String.valueOf(_poi_id)}, null, null, null, null); - if(cursor.moveToFirst()){ - do { - long _id = Long.parseLong(cursor.getString(0)); - long _opt_id = Long.parseLong(cursor.getString(1)); - Properties prop = new Properties(_id, _poi_id, _opt_id); - optList.add(prop); - } while(cursor.moveToNext()); - } - db.close(); - return optList; - } } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java b/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java index 7dd0bbe..c9900f6 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java @@ -56,11 +56,16 @@ } class Fountain extends Poi { - public Fountain(int _type){ - super(_type); + public Fountain(int _id){ + super(_id, Types.FOUNTAIN); + } + public Fountain(){ + super(Types.FOUNTAIN); } } +//TODO constructors for other classes, see fountain + class Path extends Poi { public Path(int _type) { super(_type); @@ -124,6 +129,7 @@ class DbGeoPoint extends GeoPoint{ private long _time; + private String _type_id; //_ => hut_2 public DbGeoPoint(double aLatitude, double aLongitude, double aAltitude) { super(aLatitude, aLongitude, aAltitude); @@ -134,4 +140,4 @@ super(aLatitude, aLongitude, aAltitude); this._time = _time; } -} \ No newline at end of file +}