package org.jorge.cmp.datamodel; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import org.jorge.cmp.R; import java.util.EnumMap; /* * This file is part of LoLin1. * * LoLin1 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * LoLin1 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LoLin1. If not, see <http://www.gnu.org/licenses/>. * * Created by Jorge Antonio Diaz-Benito Soriano. */ public class Realm implements Parcelable { private final String mKey; private final String[] mLocales; public static Realm[] getAllRealms() { Realm[] ret = new Realm[singletonMap.size()]; int i = 0; for (Object x : singletonMap.values()) { ret[i] = (Realm) x; i++; } return ret; } public Realm(Parcel in) { Realm copied = Realm.getInstanceByRealmId(RealmEnum.valueOf(in.readString())); mKey = copied.mKey; mLocales = copied.mLocales; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mKey); } public enum RealmEnum { NA, EUW, EUNE, BR, LAN, LAS, TR, RU, OCE, NONE } private static final EnumMap<RealmEnum, Realm> singletonMap = new EnumMap<>(RealmEnum.class); public static void initRealms(Context context) { RealmEnum[] enumValues = RealmEnum.values(); for (RealmEnum x : enumValues) singletonMap.put(x, new Realm(context, x)); } public static Realm getInstanceByRealmId(RealmEnum realmId) { Realm ret; if (!singletonMap.containsKey(realmId) || (ret = singletonMap.get(realmId)) == null) { return null; } return ret; } @Override public String toString() { return mKey; } private Realm(Context context, RealmEnum realmId) { mKey = realmId.name(); switch (realmId) { case NA: mLocales = context.getResources().getStringArray(R.array .realm_na_locales); break; case EUW: mLocales = context.getResources().getStringArray(R.array .realm_euw_locales); break; case EUNE: mLocales = context.getResources().getStringArray(R.array .realm_eune_locales); break; case BR: mLocales = context.getResources().getStringArray(R.array .realm_br_locales); break; case LAN: mLocales = context.getResources().getStringArray(R.array .realm_lan_locales); break; case LAS: mLocales = context.getResources().getStringArray(R.array .realm_las_locales); break; case TR: mLocales = context.getResources().getStringArray(R.array .realm_tr_locales); break; case RU: mLocales = context.getResources().getStringArray(R.array .realm_ru_locales); break; case OCE: mLocales = context.getResources().getStringArray(R.array .realm_oce_locales); break; case NONE: //Unused mLocales = new String[]{}; break; default: throw new IllegalArgumentException(realmId + " not recognized."); } } public String[] getLocales() { return mLocales; } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Realm createFromParcel(Parcel in) { return new Realm(in); } public Realm[] newArray(int size) { return new Realm[size]; } }; }