SDPepe/AppArt

View on GitHub
app/src/main/java/ch/epfl/sdp/appart/database/local/MockLocalDatabase.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package ch.epfl.sdp.appart.database.local;

import android.graphics.Bitmap;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

import javax.inject.Singleton;

import ch.epfl.sdp.appart.ad.Ad;
import ch.epfl.sdp.appart.ad.PricePeriod;
import ch.epfl.sdp.appart.database.exceptions.DatabaseServiceException;
import ch.epfl.sdp.appart.scrolling.card.Card;
import ch.epfl.sdp.appart.user.AppUser;
import ch.epfl.sdp.appart.user.User;
import kotlin.NotImplementedError;

@Singleton
public class MockLocalDatabase implements LocalDatabaseService {

    Map<String, User> users;
    Ad ad;
    List<Card> cards = new ArrayList<>();
    private User currentUser = null;

    public MockLocalDatabase() {
        users = new HashMap<>();
        User vetterli = new AppUser("vetterli-id", "veterli@epfl.ch");
        vetterli.setName("Martin Vetterli");
        vetterli.setAge(40);
        vetterli.setGender("MALE");
        vetterli.setPhoneNumber("0777777777");
        users.put("vetterli-id", vetterli);
        User unknown = new AppUser("unknown", "unknown@email.com");
        unknown.setName("Unknown");
        unknown.setPhoneNumber("0000000000");
        users.put("unknown", unknown);

        List<String> picturesReferences = Arrays.asList(
                "fake_ad_1.jpg",
                "fake_ad_2.jpg",
                "fake_ad_3.jpg",
                "fake_ad_4.jpg",
                "fake_ad_5.jpg"
        );
        ad = new Ad.AdBuilder()
                .withTitle("EPFL")
                .withPrice(100000)
                .withPricePeriod(PricePeriod.MONTH)
                .withStreet("Station 18").withCity("1015 Lausanne")
                .withAdvertiserName("Martin Vetterli")
                .withAdvertiserId("vetterli-id")
                .withDescription("Ever wanted the EPFL campus all for yourself?")
                .withPicturesReferences(picturesReferences)
                .withPanoramaReferences(picturesReferences) //put the pictures since its mocked
                .hasVRTour(false)
                .build();

        cards.add(new Card("1111", "unknown", "unknown", "Lausanne", 1000, PricePeriod.MONTH , "apart_fake_image_1.jpeg"));
        cards.add(new Card("2222", "unknown2", "vetterli-id", "Lausanne", 1000, PricePeriod.MONTH,
                "apart_fake_image_1" +
                ".jpeg"));
    }

    @Override
    public User getCurrentUser() {
        return currentUser;
    }

    @Override
    public CompletableFuture<Void> writeCompleteAd(String adId, String cardId, Ad ad, User user,
                                                   List<Bitmap> adPhotos, List<Bitmap> panoramas,
                                                   Bitmap profilePic) {
        throw new NotImplementedError();
    }

    @Override
    public CompletableFuture<List<Card>> getCards() {
        CompletableFuture<List<Card>> result = new CompletableFuture<>();
        result.complete(cards);
        return result;
    }

    @Override
    public CompletableFuture<Ad> getAd(String adId) {
        CompletableFuture<Ad> result = new CompletableFuture<>();
        result.complete(ad);
        return result;
    }

    @Override
    public CompletableFuture<User> getUser(String wantedUserID) {
        CompletableFuture<User> result = new CompletableFuture<>();
        if (users.containsKey(wantedUserID))
            result.complete(users.get(wantedUserID));
        else result.completeExceptionally(new DatabaseServiceException("User not in db"));
        return result;
    }

    @Override
    public void cleanFavorites() {
        throw new NotImplementedError();
    }

    @Override
    public void cleanFavoritesWithoutCurrentUser() {
        throw new NotImplementedError();
    }

    @Override
    public void removeCard(String cardId) {
        throw new NotImplementedError();
    }

    @Override
    public CompletableFuture<Void> setCurrentUser(User currentUser, Bitmap profilePic) {
        this.currentUser = currentUser;
        return CompletableFuture.completedFuture(null);
    }

    @Override
    public User loadCurrentUser() {
        throw new NotImplementedError();
    }

    @Override
    public CompletableFuture<List<String>> getPanoramasPaths(String adID) {
        throw new NotImplementedError();
    }
}