diff --git a/app/src/main/assets/coupons.json b/app/src/main/assets/coupons.json new file mode 100644 index 0000000..39a85db --- /dev/null +++ b/app/src/main/assets/coupons.json @@ -0,0 +1,6 @@ +[ + { + "code": "2345", + "reward": "fdasfasdf" + } +] \ No newline at end of file diff --git a/app/src/main/assets/locations.json b/app/src/main/assets/locations.json new file mode 100644 index 0000000..3a2a3c2 --- /dev/null +++ b/app/src/main/assets/locations.json @@ -0,0 +1,12 @@ +[ + { + "name": "kees kroket", + "coordinates": "2.4654645,6.2342323", + "description": "lekkere patatjes" + }, + { + "name" : "locatie2", + "coordinates": "3.65656,9.564564", + "description": "locatie 2" + } +] \ No newline at end of file diff --git a/app/src/main/assets/routes.json b/app/src/main/assets/routes.json new file mode 100644 index 0000000..9c84f63 --- /dev/null +++ b/app/src/main/assets/routes.json @@ -0,0 +1,14 @@ +[ + { + "name": "rondje stad", + "locations": [ + { + "name": "kees kroket", + "coordinates": "2.4654645,6.2342323", + "description": "lekkere patatjes" + } + ], + "totalDistance": 2.3434, + "totalTime": 342342 + } +] \ No newline at end of file diff --git a/app/src/main/java/com/a1/nextlocation/MainActivity.java b/app/src/main/java/com/a1/nextlocation/MainActivity.java index ea457cf..9ba6645 100644 --- a/app/src/main/java/com/a1/nextlocation/MainActivity.java +++ b/app/src/main/java/com/a1/nextlocation/MainActivity.java @@ -13,6 +13,9 @@ import com.a1.nextlocation.fragments.HomeFragment; import com.a1.nextlocation.fragments.RouteFragment; import com.a1.nextlocation.fragments.SettingsFragment; import com.a1.nextlocation.fragments.StatisticFragment; +import com.a1.nextlocation.recyclerview.CouponListManager; +import com.a1.nextlocation.recyclerview.LocationListManager; +import com.a1.nextlocation.recyclerview.RouteListManager; import com.google.android.material.bottomnavigation.BottomNavigationView; public class MainActivity extends AppCompatActivity { @@ -28,6 +31,13 @@ public class MainActivity extends AppCompatActivity { BottomNavigationView bottomNav = findViewById(R.id.navbar); bottomNav.setOnNavigationItemSelectedListener(navListener); + LocationListManager.INSTANCE.setContext(this); + LocationListManager.INSTANCE.load(); + CouponListManager.INSTANCE.setContext(this); + CouponListManager.INSTANCE.load(); + RouteListManager.INSTANCE.setContext(this); + RouteListManager.INSTANCE.load(); + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).commit(); } diff --git a/app/src/main/java/com/a1/nextlocation/data/FileIO.java b/app/src/main/java/com/a1/nextlocation/data/FileIO.java index 5672d74..a47f76e 100644 --- a/app/src/main/java/com/a1/nextlocation/data/FileIO.java +++ b/app/src/main/java/com/a1/nextlocation/data/FileIO.java @@ -2,30 +2,49 @@ package com.a1.nextlocation.data; import android.content.Context; import android.content.res.AssetManager; +import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.lang.reflect.Type; import java.nio.file.Files; import java.nio.file.Paths; public class FileIO { + private final String TAG = FileIO.class.getCanonicalName(); - public Class readFileData(Context context, String fileName) { + public T readFileData(Context context, String fileName, Type typeOf) { Gson gson = new Gson(); AssetManager am = context.getAssets(); - Class res = null; + T res = null; + StringBuilder sb = new StringBuilder(); try { InputStream is = am.open(fileName); InputStreamReader inputStreamReader = new InputStreamReader(is); - res = gson.fromJson(inputStreamReader,new TypeToken(){}.getType()); + BufferedReader reader = new BufferedReader(inputStreamReader); + String line; + while ((line = reader.readLine())!= null) { + sb.append(line); + } + + + Log.d(TAG, "readFileData: got string: " + sb.toString()); + res = gson.fromJson(sb.toString(),typeOf); + Log.d(TAG, "readFileData: got object: " + res); + + reader.close(); + inputStreamReader.close(); + is.close(); } catch (IOException e) { + Log.d(TAG, "readFileData: exception! " + e.getLocalizedMessage()); e.printStackTrace(); } return res; diff --git a/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java b/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java index 2fda536..d6a06b4 100644 --- a/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java +++ b/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java @@ -20,6 +20,10 @@ import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.a1.nextlocation.R; +import com.a1.nextlocation.data.Route; +import com.a1.nextlocation.recyclerview.CouponListManager; +import com.a1.nextlocation.recyclerview.LocationListManager; +import com.a1.nextlocation.recyclerview.RouteListManager; import org.osmdroid.api.IMapController; import org.osmdroid.config.Configuration; @@ -96,6 +100,7 @@ public class HomeFragment extends Fragment { // add location manager and set the start point LocationManager locationManager = (LocationManager) requireActivity().getSystemService(Context.LOCATION_SERVICE); + try { Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); GeoPoint startPoint = new GeoPoint(location.getLatitude(), location.getLongitude()); diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/CouponListManager.java b/app/src/main/java/com/a1/nextlocation/recyclerview/CouponListManager.java index 72e7c65..b99f153 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/CouponListManager.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/CouponListManager.java @@ -4,15 +4,18 @@ import android.content.Context; import com.a1.nextlocation.data.Coupon; +import java.util.ArrayList; import java.util.List; -public class CouponListManager { +public enum CouponListManager { + INSTANCE; private List couponList; private Context context; - public CouponListManager(Context context){ + public void setContext(Context context) { this.context = context; + this.couponList = new ArrayList<>(); } public List getCouponList() { diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/CouponLoader.java b/app/src/main/java/com/a1/nextlocation/recyclerview/CouponLoader.java index d77a156..3cfcf13 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/CouponLoader.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/CouponLoader.java @@ -1,26 +1,32 @@ package com.a1.nextlocation.recyclerview; import android.content.Context; +import android.util.Log; import com.a1.nextlocation.data.Coupon; import com.a1.nextlocation.data.FileIO; import com.a1.nextlocation.data.Location; +import com.google.gson.reflect.TypeToken; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class CouponLoader implements Loader> { private final Context context; + private final String TAG = CouponLoader.class.getCanonicalName(); + public CouponLoader(Context context) { this.context = context; } + @Override - public List load() { - FileIO> fileIO = new FileIO<>(); - try { - return fileIO.readFileData(context,"coupons.json").newInstance(); - } catch (IllegalAccessException | InstantiationException e) { - e.printStackTrace(); - } - return null; + public ArrayList load() { + FileIO> fileIO = new FileIO<>(); + ArrayList res = fileIO.readFileData(context, "coupons.json",new TypeToken>(){}.getType()); + Log.d(TAG, "load: " + res); + + return res == null ? new ArrayList<>() : res; + } } diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/LocationListManager.java b/app/src/main/java/com/a1/nextlocation/recyclerview/LocationListManager.java index 7ae7c43..9313e36 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/LocationListManager.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/LocationListManager.java @@ -4,16 +4,18 @@ import android.content.Context; import com.a1.nextlocation.data.Location; +import java.util.ArrayList; import java.util.List; -public class LocationListManager { +public enum LocationListManager { + INSTANCE; private List locationList; private Context context; - public LocationListManager(Context context){ + public void setContext(Context context) { this.context = context; - + this.locationList = new ArrayList<>(); } public List getLocationList() { diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/LocationLoader.java b/app/src/main/java/com/a1/nextlocation/recyclerview/LocationLoader.java index 6a83ccc..f56d8fa 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/LocationLoader.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/LocationLoader.java @@ -4,10 +4,13 @@ import android.content.Context; import com.a1.nextlocation.data.FileIO; import com.a1.nextlocation.data.Location; +import com.google.gson.reflect.TypeToken; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -public class LocationLoader implements Loader>{ +public class LocationLoader implements Loader> { private final Context context; public LocationLoader(Context context) { @@ -15,13 +18,11 @@ public class LocationLoader implements Loader>{ } @Override - public List load() { - FileIO> fileIO = new FileIO<>(); - try { - return fileIO.readFileData(context,"locations.json").newInstance(); - } catch (IllegalAccessException | InstantiationException e) { - e.printStackTrace(); - } - return null; + public ArrayList load() { + FileIO> fileIO = new FileIO<>(); + + ArrayList res = fileIO.readFileData(context,"locations.json",new TypeToken>(){}.getType()); + + return res == null ? new ArrayList<>() : res; } } diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/RouteListManager.java b/app/src/main/java/com/a1/nextlocation/recyclerview/RouteListManager.java index b8c4a37..f72fcbe 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/RouteListManager.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/RouteListManager.java @@ -4,17 +4,21 @@ import android.content.Context; import com.a1.nextlocation.data.Route; +import java.util.ArrayList; import java.util.List; -public class RouteListManager{ +public enum RouteListManager{ + INSTANCE; private List routeList; private Context context; - public RouteListManager(Context context){ + public void setContext(Context context) { this.context = context; + this.routeList = new ArrayList<>(); } + public List getRouteList() { return routeList; } diff --git a/app/src/main/java/com/a1/nextlocation/recyclerview/RouteLoader.java b/app/src/main/java/com/a1/nextlocation/recyclerview/RouteLoader.java index 63f46e3..df65664 100644 --- a/app/src/main/java/com/a1/nextlocation/recyclerview/RouteLoader.java +++ b/app/src/main/java/com/a1/nextlocation/recyclerview/RouteLoader.java @@ -5,24 +5,25 @@ import android.content.Context; import com.a1.nextlocation.data.FileIO; import com.a1.nextlocation.data.Location; import com.a1.nextlocation.data.Route; +import com.google.gson.reflect.TypeToken; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class RouteLoader implements Loader> { private final Context context; + public RouteLoader(Context context) { this.context = context; } @Override - public List load() { + public ArrayList load() { + + FileIO> fileIO = new FileIO<>(); + ArrayList res = fileIO.readFileData(context, "routes.json",new TypeToken>(){}.getType()); + return res == null ? new ArrayList<>() : res; - FileIO> fileIO = new FileIO<>(); - try { - return fileIO.readFileData(context,"routes.json").newInstance(); - } catch (IllegalAccessException | InstantiationException e) { - e.printStackTrace(); - } - return null; } }