/* * Copyright 2015 iPublishing Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jp.co.ipublishing.aeskit.shelter; import android.support.annotation.NonNull; import android.util.SparseArray; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.LatLngBounds; import java.util.List; import jp.co.ipublishing.aeskit.shelter.models.Shelter; import jp.co.ipublishing.aeskit.shelter.models.ShelterNumberOfPeople; import jp.co.ipublishing.aeskit.shelter.models.ShelterStatus; import jp.co.ipublishing.aeskit.shelter.models.ShelterStatuses; import rx.Observable; /** * 避難所情報管理。 */ public class ShelterManager { /** * 避難所ストア。 */ @NonNull private final ShelterStore mStore; /** * 避難所クライアント。 */ @NonNull private final ShelterClient mClient; /** * コンストラクタ * * @param store 避難所ストア * @param client 避難所クライアント */ public ShelterManager(@NonNull ShelterStore store, @NonNull ShelterClient client) { mStore = store; mClient = client; } /** * 避難所情報を取得する。 * * @param center 中心位置 * @param bounds 範囲 * @return Observableオブジェクト */ @NonNull public Observable<List<Shelter>> fetchShelters(@NonNull LatLng center, @NonNull LatLngBounds bounds) { return mStore.fetchShelters(center, bounds); } /** * 避難所情報を取得する。 * * @param shelterId 避難所ID * @return Observableオブジェクト */ @NonNull public Observable<Shelter> fetchShelter(int shelterId) { return mStore.fetchShelter(shelterId); } /** * 最寄りの避難所情報を取得する。 * * @param center 中心位置 * @return Observableオブジェクト */ @NonNull public Observable<Shelter> fetchNearShelter(LatLng center) { return mStore.fetchNearShelter(center); } /** * 最寄りの避難所情報を取得する。 * * @param center 中心位置 * @return Observableオブジェクト */ @NonNull public Observable<List<Shelter>> fetchNearShelters(LatLng center, int ignoreShelterId) { return mStore.fetchNearShelters(center, ignoreShelterId); } /** * サーバから避難所の状況を取得する。 * * @return Observableオブジェクト */ @NonNull public Observable<ShelterStatuses> fetchStatuses() { return mStore.fetchStatuses(); } /** * サーバから避難所の状況を取得する。 * * @return Observableオブジェクト */ @NonNull public Observable<ShelterStatuses> downloadStatuses() { return mClient.downloadStatuses(); } /** * サーバから避難所の現在の人数を取得する。 * * @return Observableオブジェクト */ @NonNull public Observable<ShelterNumberOfPeople> downloadNumberOfPeople() { return mClient.downloadNumberOfPeople(); } /** * 避難所状況を更新する。 * * @param statuses 避難所状況 * @return Observableオブジェクト */ @NonNull public Observable<Void> updateStatuses(@NonNull SparseArray<ShelterStatus> statuses) { return mStore.updateStatuses(statuses); } }