diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java new file mode 100644 index 0000000..a9de106 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/DatabaseHandler.java @@ -0,0 +1,167 @@ +package de.apps4ics.mountainnavigation; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.provider.ContactsContract; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Vinz on 06.10.2015. + */ +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_PROPERTIES = "poi_properties"; + private static final String TABLE_OPTIONS = "options"; + + private static final String KEY_POI_ID = "_id"; + private static final String KEY_POI_LAT = "_lat"; + private static final String KEY_POI_LON = "_lon"; + private static final String KEY_POI_ALT = "_alt"; + private static final String KEY_POI_TYPE = "_type"; + private static final String KEY_POI_TIME = "_time"; + private static final String KEY_POI_EXT_POI_ID = "_ext_poi_id"; + + private static final String KEY_PROPERTIES_ID = "_id"; + private static final String KEY_PROPERTIES_POI_ID = "_poi_id"; + private static final String KEY_PROPERTIES_OPT_ID = "_opt_id"; + + private static final String KEY_OPTIONS_ID = "_id"; + private static final String KEY_OPTIONS_DESC = "_desc"; + + public DatabaseHandler(Context context){ + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + //create POI table + String CREATE_POI_TABLE = "CREATE TABLE " + TABLE_POI + "(" + + KEY_POI_ID + " INTEGER PRIMARY KEY," + + KEY_POI_LAT + " REAL," + + KEY_POI_LON + " REAL," + + KEY_POI_ALT + " REAL," + + KEY_POI_TYPE + " TEXT," + + KEY_POI_TIME + " INTEGER," + + KEY_POI_EXT_POI_ID + " INTEGER" + ")"; + db.execSQL(CREATE_POI_TABLE); + + //create POI properties table + String CREATE_PROP_TABLE = "CREATE TABLE " + TABLE_PROPERTIES + "(" + + KEY_PROPERTIES_ID + " INTEGER PRIMARY KEY," + + KEY_PROPERTIES_POI_ID + " INTEGER," + + KEY_PROPERTIES_OPT_ID + " INTEGER" + ")"; + db.execSQL(CREATE_PROP_TABLE); + + //create options table + String CREATE_OPT_TABLE = "CREATE TABLE " + TABLE_OPTIONS + "(" + + KEY_OPTIONS_ID + " INTEGER PRIMARY KEY," + + KEY_OPTIONS_DESC + " TEXT" + ")"; + db.execSQL(CREATE_OPT_TABLE); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE_POI); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_PROPERTIES); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_OPTIONS); + onCreate(db); + } + + public void addPoi(Poi poi){ + SQLiteDatabase db = this.getWritableDatabase(); + 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()); + values.put(KEY_POI_EXT_POI_ID, poi.getExtPoiId()); + db.insert(TABLE_POI, null, values); + db.close(); + } + + public Poi getPoi(int id){ + SQLiteDatabase db = this.getReadableDatabase(); + + Cursor cursor = db.query(TABLE_POI, + new String[]{KEY_POI_ID, KEY_POI_LAT, KEY_POI_LON, KEY_POI_ALT, KEY_POI_TYPE, KEY_POI_TIME, KEY_POI_EXT_POI_ID}, + KEY_POI_ID + "=?", + new String[]{String.valueOf(id)}, null, null, null, null); + if(cursor != null){ + cursor.moveToFirst(); + } + + int _id = Integer.parseInt(cursor.getString(0)); + double _lat = Double.parseDouble(cursor.getString(1)); + double _lon = Double.parseDouble(cursor.getString(2)); + double _alt = Double.parseDouble(cursor.getString(3)); + String _type = cursor.getString(4); + long _time = Long.parseLong(cursor.getString(5)); + int _ext_poi_id = Integer.parseInt(cursor.getString(6)); + + db.close(); + cursor.close(); + + return new Poi(_id, _lat, _lon, _alt, _type, _time, _ext_poi_id); + } + + public List getAllPois() { + List poiList = new ArrayList<>(); + String query = "SELECT * FROM " + TABLE_POI; + SQLiteDatabase db = this.getReadableDatabase(); + Cursor cursor = db.rawQuery(query, null); + if(cursor.moveToFirst()){ + do { + int _id = Integer.parseInt(cursor.getString(0)); + double _lat = Double.parseDouble(cursor.getString(1)); + double _lon = Double.parseDouble(cursor.getString(2)); + double _alt = Double.parseDouble(cursor.getString(3)); + String _type = cursor.getString(4); + long _time = Long.parseLong(cursor.getString(5)); + int _ext_poi_id = Integer.parseInt(cursor.getString(6)); + poiList.add(new Poi(_id, _lat, _lon, _alt, _type, _time, _ext_poi_id)); + } while(cursor.moveToNext()); + } + + db.close(); + cursor.close(); + + return poiList; + } + + public int getPoiCount(){ + String query = "SELECT * FROM " + TABLE_POI; + SQLiteDatabase db = this.getReadableDatabase(); + Cursor cursor = db.rawQuery(query, null); + cursor.close(); + + return cursor.getCount(); + } + + public int updatePoi(Poi poi){ + SQLiteDatabase db = this.getWritableDatabase(); + 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()); + values.put(KEY_POI_EXT_POI_ID, poi.getExtPoiId()); + + return db.update(TABLE_POI, values, KEY_POI_ID + "=?", + new String[]{ String.valueOf(poi.getId()) }); + } + + public void deletePoi(Poi poi){ + SQLiteDatabase db = this.getWritableDatabase(); + db.delete(TABLE_POI, KEY_POI_ID + "=?", + new String[]{ String.valueOf(poi.getId()) }); + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 961338d..1682a93 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -51,6 +51,7 @@ import org.osmdroid.views.MapView; import java.io.File; +import java.util.List; public class MainActivity extends AppCompatActivity implements LocationListener { @@ -64,8 +65,6 @@ */ private CharSequence mTitle; private CharSequence mDrawerTitle; - // name of the map file in the external storage - private static final String MAPFILE = "greece.map"; private static final int GPS_MIN_TIME = 5000; private static final int GPS_MIN_DIST = 5; @@ -73,6 +72,8 @@ private WeatherClient weatherClient; + private DatabaseHandler dbHandler; + private MapView mapView; private IMapController mapController; @@ -95,6 +96,8 @@ FrameLayout frameLayout = (FrameLayout) findViewById(R.id.container); + dbHandler = new DatabaseHandler(this); + mapView = new MapView(getApplicationContext(), 256); mapView.setTileSource(TileSourceFactory.MAPNIK); mapView.setBuiltInZoomControls(true); @@ -307,8 +310,8 @@ public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: - AddFountainDialog addSpringDialog = new AddFountainDialog(); - addSpringDialog.show(getFragmentManager(), "Add fountain POI Dialog"); + AddFountainDialog addFountainDialog = new AddFountainDialog(); + addFountainDialog.show(getFragmentManager(), "Add fountain POI Dialog"); break; } } @@ -325,8 +328,20 @@ .setAdapter(new ImageListAdapter(MainActivity.this, fountainSizes, fountainImgs), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - //TODO save Spring in DB - Toaster("This " + fountainSizes[which] + " fountain should be stored in a DB!", true); + double _lat = mLocation.getLatitude(); + double _lon = mLocation.getLongitude(); + double _alt = mLocation.getAltitude(); + String _type = "fountain," + fountainSizes[which]; + long _time = System.currentTimeMillis() / 1000; + Poi poi = new Poi(_lat, _lon, _alt, _type, _time); + dbHandler.addPoi(poi); + + Log.d(TAG, "Entries in POI: " + dbHandler.getPoiCount()); + List pois = dbHandler.getAllPois(); + for (int i = 0; i < pois.size(); ++i) { + Poi p = pois.get(i); + Log.d(TAG, i + ": " + poi.getLat() + ", " + poi.getLon()); + } } }); return builder.create(); @@ -389,10 +404,6 @@ super.onDestroy(); } - private File getMapFile() { - return new File(Environment.getExternalStorageDirectory(), MAPFILE); - } - public void restoreActionBar() { ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/Options.java b/app/src/main/java/de/apps4ics/mountainnavigation/Options.java new file mode 100644 index 0000000..da57199 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/Options.java @@ -0,0 +1,22 @@ +package de.apps4ics.mountainnavigation; + +/** + * Created by Vinz on 06.10.2015. + */ +public class Options { + private int _id; + private String _desc; + + public Options(){ + + } + + public Options(String _desc){ + this._desc = _desc; + } + + private Options(int _id, String _desc){ + this._id = _id; + this._desc = _desc; + } +} diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java b/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java new file mode 100644 index 0000000..d6fab74 --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/Poi.java @@ -0,0 +1,73 @@ +package de.apps4ics.mountainnavigation; + +/** + * Created by Vinz on 06.10.2015. + */ +public class Poi { + private int _id; + private double _lat; + private double _lon; + private double _alt; + private String _type; + private long _time; + private int _ext_poi_id; + + public Poi(){ + + } + + public Poi(double _lat, double _lon, double _alt, String _type, long _time){ + this._lat = _lat; + this._lon = _lon; + this._alt = _alt; + this._type = _type; + this._time = _time; + } + + public Poi(double _lat, double _lon, double _alt, String _type, long _time, int _ext_poi_id){ + this._lat = _lat; + this._lon = _lon; + this._alt = _alt; + this._type = _type; + this._time = _time; + this._ext_poi_id = _ext_poi_id; + } + + public Poi(int _id, double _lat, double _lon, double _alt, String _type, long _time, int _ext_poi_id){ + this._id = _id; + this._lat = _lat; + this._lon = _lon; + this._alt = _alt; + this._type = _type; + this._time = _time; + this._ext_poi_id = _ext_poi_id; + } + + public int getId(){ + return _id; + } + + public double getLat(){ + return _lat; + } + + public double getLon(){ + return _lon; + } + + public double getAlt(){ + return _alt; + } + + public String getType(){ + return _type; + } + + public long getTime(){ + return _time; + } + + public int getExtPoiId(){ + return _ext_poi_id; + } +} \ No newline at end of file diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/Properties.java b/app/src/main/java/de/apps4ics/mountainnavigation/Properties.java new file mode 100644 index 0000000..172331c --- /dev/null +++ b/app/src/main/java/de/apps4ics/mountainnavigation/Properties.java @@ -0,0 +1,10 @@ +package de.apps4ics.mountainnavigation; + +/** + * Created by Vinz on 06.10.2015. + */ +public class Properties { + private int _id; + private int _poi_id; + private int _opt_id; +}