/* * Created by Itzik Braun on 12/3/2015. * Copyright (c) 2015 deluge. All rights reserved. * * Last Modification at: 3/12/15 4:34 PM */ package com.braunster.androidchatsdk.firebaseplugin.firebase; import com.braunster.chatsdk.network.BDefines; import com.braunster.chatsdk.network.BFirebaseDefines; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.Map; import static com.braunster.chatsdk.network.BDefines.ServerUrl; public class FirebasePaths{ private String url; private static StringBuilder builder = new StringBuilder(); private FirebasePaths(String url) { this.url = url; } /* Not sure if this the wanted implementation but its give the same result as the objective-C code.*/ /** @return The main databse ref.*/ public static DatabaseReference firebaseRef(){ if (StringUtils.isBlank(ServerUrl)) throw new NullPointerException("Please set the server url in BDefines class"); return fb(ServerUrl); } /** @return Firebase object for give url.*/ private static DatabaseReference fb (String url){ return FirebaseDatabase.getInstance().getReferenceFromUrl(url); } /* Users */ /** @return The users main ref.*/ public static DatabaseReference userRef(){ return firebaseRef().child(BFirebaseDefines.Path.BUsersPath); } /** @return The user ref for given id.*/ public static DatabaseReference userRef(String firebaseId){ return userRef().child(firebaseId); } /** @return The user meta ref for given id.*/ public static DatabaseReference userMetaRef(String firebaseId){ DatabaseReference userMetaRef = userRef().child(firebaseId); return userMetaRef.child(BFirebaseDefines.Path.BMetaPath); } public static DatabaseReference userOnlineRef(String firebaseId){ return userRef(firebaseId).child(BFirebaseDefines.Path.BOnlinePath); } public static DatabaseReference userFollowsRef(String firebaseId){ return userRef(firebaseId).child(BFirebaseDefines.Path.BFollows); } public static DatabaseReference userFollowersRef(String firebaseId){ return userRef(firebaseId).child(BFirebaseDefines.Path.FollowerLinks); } /* Threads */ /** @return The thread main ref.*/ public static DatabaseReference threadRef(){ return firebaseRef().child(BFirebaseDefines.Path.BThreadPath); } /** @return The thread ref for given id.*/ public static DatabaseReference threadRef(String firebaseId){ return threadRef().child(firebaseId); } public static DatabaseReference threadMessagesRef(String firebaseId){ return threadRef(firebaseId).child(BFirebaseDefines.Path.BMessagesPath); } public static DatabaseReference publicThreadsRef(){ return firebaseRef().child(BFirebaseDefines.Path.BPublicThreadPath); } /* Index */ public static DatabaseReference indexRef(){ return firebaseRef().child(BFirebaseDefines.Path.BIndexPath); } public static Map<String, Object> getMap(String[] keys, Object...values){ Map<String, Object> map = new HashMap<String, Object>(); for (int i = 0 ; i < keys.length; i++){ // More values then keys entered. if (i == values.length) break; map.put(keys[i], values[i]); } return map; } public static int providerToInt(String provider){ if (provider.equals(BDefines.ProviderString.Password)) { return BDefines.ProviderInt.Password; } else if (provider.equals(BDefines.ProviderString.Facebook)) { return BDefines.ProviderInt.Facebook; } else if (provider.equals(BDefines.ProviderString.Google)) { return BDefines.ProviderInt.Google; } else if (provider.equals(BDefines.ProviderString.Twitter)) { return BDefines.ProviderInt.Twitter; } else if (provider.equals(BDefines.ProviderString.Anonymous)) { return BDefines.ProviderInt.Anonymous; } else if (provider.equals(BDefines.ProviderString.Custom)) { return BDefines.ProviderInt.Custom; } throw new IllegalArgumentException("No provider was found matching requested. Provider: " + provider); } public static String providerToString(int provider){ switch (provider){ case BDefines.ProviderInt.Password: return BDefines.ProviderString.Password; case BDefines.ProviderInt.Facebook: return BDefines.ProviderString.Facebook; case BDefines.ProviderInt.Google: return BDefines.ProviderString.Google; case BDefines.ProviderInt.Twitter: return BDefines.ProviderString.Twitter; case BDefines.ProviderInt.Anonymous: return BDefines.ProviderString.Anonymous; case BDefines.ProviderInt.Custom: return BDefines.ProviderString.Custom; default: /*return ProviderString.Password;*/ throw new IllegalArgumentException("Np provider was found matching requested."); } } }