Newer
Older
NemophilaClient / app / src / main / java / com / example / nemophila / Nemophila.java
package com.example.nemophila;

import android.app.Application;
import android.content.SharedPreferences;

import com.example.nemophila.entities.Account;
import com.example.nemophila.entities.AccountNameJson;
import com.example.nemophila.entities.Shop;
import com.google.type.LatLng;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;

public class Nemophila extends Application {
    //アカウントのデータ
    private String name;
    private String uid;
    private String token;
    private Collection<AccountNameJson> friends;

    //ショップのデータ
    private Shop currentShop;
    private double currentLongitude;
    private double currentLatitude;
    private Shop dummyShop;

    //カメラのデータ
    private double cameraLatitude;
    private double cameraLongitude;
    private float zoom;

    //フィルターのデータ
    private HashSet<String> selectGenres = new HashSet<>();
    private HashSet<String> selectFriends = new HashSet<>();
    private HashSet<String> favoriteFriends;

    //Account関連のGetter
    public String getName() {
        if(name == null){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            name = preferences.getString("name", null);
        }
        return name;
    }
    public String getUid() {
        if(uid == null){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            uid = preferences.getString("uid", null);
        }
        return uid;
    }
    public String getToken() {
        if(token == null){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            token = preferences.getString("token", null);
        }
        return token;
    }
    public Collection<AccountNameJson> getFriends() {
        return friends;
    }

    //Shop関連のGetter
    public Shop getCurrentShop() {
        return currentShop;
    }
    public double getCurrentLongitude() {
        return currentLongitude;
    }
    public double getCurrentLatitude() {
        return currentLatitude;
    }
    public Shop getDummyShop() {
        return dummyShop;
    }

    //Camera関連のGetter
    public double getCameraLatitude() {
        if(cameraLatitude == 0){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            cameraLatitude = preferences.getFloat("cameraLatitude", 0);
        }
        return cameraLatitude;
    }
    public double getCameraLongitude() {
        if(cameraLongitude == 0){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            cameraLongitude = preferences.getFloat("cameraLongitude", 0);
        }
        return cameraLongitude;
    }
    public float getZoom() {
        if(zoom == 0.0){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            zoom = preferences.getFloat("zoom", 10);
        }
        return zoom;
    }

    //フィルター関連のGetter
    public HashSet<String> getSelectGenres() {
        return selectGenres;
    }
    public HashSet<String> getSelectFriends() {
        return selectFriends;
    }
    public HashSet<String> getFavoriteFriends() {
        if(favoriteFriends == null){
            SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
            favoriteFriends = new HashSet<>(preferences.getStringSet("favoriteFriends", new HashSet<>()));
        }
        return favoriteFriends;
    }

    //Setter
    public void setName(String name) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("name", name);
        this.name = name;
        editor.commit();
    }
    public void setUid(String uid) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("uid", uid);
        this.uid = uid;
        editor.commit();
    }
    public void setToken(String token) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("token", token);
        this.token = token;
        editor.commit();
    }
    public void setFriends(Collection<AccountNameJson> friends) {
        this.friends = friends;
    }

    public void setCurrentShop(Shop currentShop) {
        this.currentShop = currentShop;
    }
    public void setCurrentLongitude(double currentLongitude) {
        this.currentLongitude = currentLongitude;
    }
    public void setCurrentLatitude(double currentLatitude) {
        this.currentLatitude = currentLatitude;
    }
    public void setDummyShop(Shop dummyShop) {
        this.dummyShop = dummyShop;
    }
    public void setCameraLatitude(double cameraLatitude) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putFloat("cameraLatitude", (float) cameraLatitude);
        this.cameraLatitude = cameraLatitude;
        editor.commit();
    }
    public void setCameraLongitude(double cameraLongitude) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putFloat("cameraLongitude", (float) cameraLongitude);
        this.cameraLongitude = cameraLongitude;
        editor.commit();
    }
    public void setZoom(float zoom) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putFloat("zoom", zoom);
        this.zoom = zoom;
        editor.commit();
    }

    //フィルター関連のSetter
    public void setSelectGenres(String selectGenre) {
        this.selectGenres.add(selectGenre);
    }
    public void setSelectFriends(String selectFriend) {
        this.selectFriends.add(selectFriend);
    }
    public void setFavoriteFriends(String favoriteFriend) {
        SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        this.favoriteFriends.add(favoriteFriend);
        editor.putStringSet("favoriteFriends", favoriteFriends);
        editor.commit();
    }

    //フィルターを取り除く
    public void removeSelectGenres(String selectGenre){
        this.selectGenres.remove(selectGenre);
    }
    public void removeSelectFriends(String selectFriend) {
        this.selectFriends.remove(selectFriend);
    }
    public void removeFavoriteFriends(String favoriteFriend){
        this.favoriteFriends.remove(favoriteFriend);
    }
    public ArrayList<String> getFriendIds() {
        ArrayList<String> friendIds = new ArrayList<>();
        for(AccountNameJson anj: friends) {
            friendIds.add(anj.getUid());
        }
        return friendIds;
    }

}