diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index fa0cddb..4281262 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -102,6 +102,8 @@ import de.apps4ics.mountainnavigation.pois.AddPoiDialog; import de.apps4ics.mountainnavigation.pois.DbGeoPoint; import de.apps4ics.mountainnavigation.pois.Fountain; +import de.apps4ics.mountainnavigation.pois.Endangered; +import de.apps4ics.mountainnavigation.pois.Biota; import de.apps4ics.mountainnavigation.pois.Hike; import de.apps4ics.mountainnavigation.pois.Poi; import de.apps4ics.mountainnavigation.pois.Types; @@ -1009,4 +1011,4 @@ weatherHandler.displaySevereWeather(weather); return null; } -} \ No newline at end of file +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java index 1b90094..8247033 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java @@ -32,6 +32,8 @@ import java.util.List; import de.apps4ics.mountainnavigation.MainActivity; +import de.apps4ics.mountainnavigation.pois.Endangered; +import de.apps4ics.mountainnavigation.pois.Biota; import de.apps4ics.mountainnavigation.pois.Hike; import de.apps4ics.mountainnavigation.pois.Types; import de.apps4ics.mountainnavigation.pois.BreakPoint; @@ -65,8 +67,10 @@ private static final String TABLE_WIFI = "wifi"; private static final String TABLE_LIFT = "lift"; private static final String TABLE_HIKE = "hike"; - private static final String[] TABLES = new String[]{TABLE_FOUNTAIN, TABLE_PATH, TABLE_HUT, TABLE_PEAK, TABLE_BREAK_POINT, TABLE_TRASH_BIN, TABLE_IMAGE, TABLE_CELL_RECEPTION, TABLE_WIFI, TABLE_LIFT, TABLE_HIKE}; - private static final Integer[] TABLE_TYPES = new Integer[]{Types.FOUNTAIN, Types.PATH, Types.HUT, Types.PEAK, Types.BREAK_POINT, Types.TRASH_BIN, Types.PIC, Types.CELL_RECEPTION, Types.WIFI, Types.LIFT, Types.HIKE}; + private static final String TABLE_BIOTA = "biota"; + private static final String TABLE_ENDANGERED = "endangered"; + private static final String[] TABLES = new String[]{TABLE_FOUNTAIN, TABLE_PATH, TABLE_HUT, TABLE_PEAK, TABLE_BREAK_POINT, TABLE_TRASH_BIN, TABLE_IMAGE, TABLE_CELL_RECEPTION, TABLE_WIFI, TABLE_LIFT, TABLE_HIKE, TABLE_BIOTA}; + private static final Integer[] TABLE_TYPES = new Integer[]{Types.FOUNTAIN, Types.PATH, Types.HUT, Types.PEAK, Types.BREAK_POINT, Types.TRASH_BIN, Types.PIC, Types.CELL_RECEPTION, Types.WIFI, Types.LIFT, Types.HIKE, Types.BIOTA}; private static final String KEY_POI_ID = "_id"; private static final String KEY_POI_LAT = "_lat"; @@ -112,6 +116,10 @@ private static final String KEY_HIKE_HEIGHT_UP = "_hike_height_up"; private static final String KEY_HIKE_HEIGHT_DOWN = "_hike_height_down"; private static final String KEY_HIKE_FLOORING = "_flooring"; + private static final String KEY_BIOTA_RADIUS = "_radius"; + private static final String KEY_BIOTA_EXT_ID = "_biota_id"; + private static final String KEY_ENDANGERED_NAME = "_endangered_name"; + private static final String KEY_ENDANGERED_IMAGE = "_endangered_image"; public DatabaseHandler(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); @@ -211,6 +219,18 @@ + KEY_HIKE_HEIGHT_DOWN + " REAL," + KEY_HIKE_FLOORING + " INTEGER" + ")"; db.execSQL(CREATE_HIKE_TABLE); + //create biota table + String CREATE_BIOTA_TABLE = "CREATE TABLE " + TABLE_BIOTA + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_BIOTA_RADIUS + " REAL" + ")"; + db.execSQL(CREATE_BIOTA_TABLE); + //create endangered table + String CREATE_ENDANGERED_TABLE = "CREATE TABLE " + TABLE_ENDANGERED + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_BIOTA_EXT_ID + " INTEGER," + + KEY_ENDANGERED_NAME + " TEXT," + + KEY_ENDANGERED_IMAGE + " BLOB" + ")"; + db.execSQL(CREATE_ENDANGERED_TABLE); } @Override @@ -227,6 +247,8 @@ db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIFI); db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIFT); db.execSQL("DROP TABLE IF EXISTS " + TABLE_HIKE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_BIOTA); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_ENDANGERED); onCreate(db); } @@ -313,6 +335,16 @@ values.put(KEY_HIKE_HEIGHT_DOWN, hike.getHeightDown()); values.put(KEY_HIKE_FLOORING, hike.getFlooring()); break; + case Types.BIOTA: + Biota biota = (Biota) poi; + values.put(KEY_BIOTA_RADIUS, biota.getRadius()); + break; + case Types.ENDANGERED: + Endangered end = (Endangered) poi; + values.put(KEY_BIOTA_EXT_ID, end.getBiotaId()); + values.put(KEY_ENDANGERED_NAME, end.getName()); + values.put(KEY_ENDANGERED_IMAGE, end.getImage()); + break; } return values; } @@ -352,10 +384,50 @@ return getGeoPointFromCursor(cursor); case Types.HIKE: return getHikeFromCursor(cursor); + case Types.BIOTA: + return getBiotaFromCursor(cursor); + case Types.ENDANGERED: + return getEndangeredFromCursor(cursor); } return null; } + private Biota getBiotaFromCursor(Cursor cursor) { + long id = cursor.getLong(cursor.getColumnIndex(KEY_POI_ID)); + float radius = cursor.getFloat(cursor.getColumnIndex(KEY_BIOTA_RADIUS)); + return new Biota(id, radius); + } + + private Biota getBiota(SQLiteDatabase db, long id) { + Cursor cursor = db.query(TABLE_BIOTA, + new String[]{KEY_POI_ID, KEY_BIOTA_RADIUS}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if(cursor != null) { + cursor.moveToFirst(); + } + return getBiotaFromCursor(cursor); + } + + private Biota getEndangeredFromCursor(Cursor cursor) { + long id = cursor.getLong(cursor.getColumnIndex(KEY_POI_ID)); + long biotaId = cursor.getLong(cursor.getColumnIndex(KEY_BIOTA_EXT_ID)); + String name = cursor.getString(cursor.getColumnIndex(KEY_ENDANGERED_NAME)); + byte[] image = cursor.getBlob(cursor.getColumnIndex(KEY_ENDANGERED_IMAGE)); + return new Endangered(id, image, biotaId, name); + } + + private Biota getEndangered(SQLiteDatabase db, long id) { + Cursor cursor = db.query(TABLE_ENDANGERED, + new String[]{KEY_POI_ID, KEY_BIOTA_EXT_ID, KEY_ENDANGERED_NAME, KEY_ENDANGERED_IMAGE}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if(cursor != null) { + cursor.moveToFirst(); + } + return getEndangeredFromCursor(cursor); + } + private Hike getHikeFromCursor(Cursor cursor) { long id = cursor.getLong(cursor.getColumnIndex(KEY_POI_ID)); float length = cursor.getFloat(cursor.getColumnIndex(KEY_HIKE_LENGTH)); @@ -596,6 +668,24 @@ return getHutFromCursor(cursor); } + public List getEndageredForBiota(long biotaId) { + List images = new ArrayList<>(); + SQLiteDatabase db = this.getReadableDatabase(); + Cursor cursor = db.query(TABLE_ENDANGERED, + null, + KEY_BIOTA_EXT_ID + "=?", + new String[]{String.valueOf(biotaId)}, + null, + null, + null); + if(cursor != null && cursor.moveToFirst()) { + do { + images.add(getEndangeredFromCursor(cursor)); + } while(cursor.moveToNext()); + } + return images; + } + public List getGeoPointsForPoi(long poiId, int poiType) { List points = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); @@ -642,6 +732,10 @@ return getGeoPoint(id); case Types.HIKE: return getHike(db, id); + case Types.BIOTA: + return getBiota(db, id); + case Types.ENDANGERED: + return getEndangered(db, id); } db.close(); @@ -828,6 +922,12 @@ case Types.HIKE: table = TABLE_HIKE; break; + case Types.BIOTA: + table = TABLE_BIOTA; + break; + case Types.ENDANGERED: + table = TABLE_ENDANGERED; + break; } return table; } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java new file mode 100644 index 0000000..23f3aa3 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Biota.java @@ -0,0 +1,44 @@ +/** + * This file is part of MountainNavigation. + * + * MountainNavigation 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 3 of the License, or + * (at your option) any later version. + * + * MountainNavigation is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MountainNavigation. If not, see . + * + * @copyright Copyright (c) 2016 Vinzenz Rosenkanz + * + * @author Vinzenz Rosenkranz + */ + +package de.apps4ics.mountainnavigation.pois; + +public class Biota extends Poi { + private float radius; + + public Biota(long _id) { + super(_id, Types.BIOTA); + } + public Biota() { + super(Types.BIOTA); + } + public Biota(float radius) { + this(0, radius); + } + public Biota(long _id, float radius){ + super(_id, Types.BIOTA); + this.radius = radius; + } + + public float getRadius() { + return radius; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Endangered.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Endangered.java new file mode 100644 index 0000000..97c5814 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Endangered.java @@ -0,0 +1,53 @@ +/** + * This file is part of MountainNavigation. + * + * MountainNavigation 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 3 of the License, or + * (at your option) any later version. + * + * MountainNavigation is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MountainNavigation. If not, see . + * + * @copyright Copyright (c) 2016 Vinzenz Rosenkanz + * + * @author Vinzenz Rosenkranz + */ + +package de.apps4ics.mountainnavigation.pois; + +public class Endangered extends Poi { + private byte[] image; + private long biotaId; + private String name; + + public Endangered(long _id) { + super(_id, Types.ENDANGERED); + } + public Endangered(){ + super(Types.ENDANGERED); + } + public Endangered(long _id, byte[] image, long biotaId, String name){ + super(_id, Types.ENDANGERED); + this.image = image; + this.biotaId = biotaId; + this.name = name; + } + + public byte[] getImage(){ + return image; + } + + public long getBiotaId() { + return biotaId; + } + + public String getName() { + return name; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java index 2456bcf..ef86e6c 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/Types.java @@ -35,6 +35,7 @@ public static final int GP = 10; public static final int HIKE = 11; public static final int BIOTA = 12; + public static final int ENDANGERED = 13; - public static final int SIZE = 13; + public static final int SIZE = 14; }