package com.integreight.onesheeld.utils; import android.util.SparseArray; import com.integreight.onesheeld.enums.UIShield; import com.integreight.onesheeld.model.Shield; import java.util.ArrayList; import java.util.Hashtable; public class AppShields { private static AppShields thisInstance; private Hashtable<String, Shield> shieldsTable; private Hashtable<String, String> shieldsTags; private SparseArray<Shield> shieldsArray; private String rememberedShields; private AppShields() { // TODO Auto-generated constructor stub } public static AppShields getInstance() { if (thisInstance == null) { thisInstance = new AppShields(); } return thisInstance; } public void init(String selectedCach) { this.rememberedShields = selectedCach; initShields(); } public Hashtable<String, Shield> getShieldsTable() { if (shieldsTable == null || shieldsTable.size() == 0) { initShields(); } return shieldsTable; } public SparseArray<Shield> getShieldsArray() { if (shieldsArray == null || shieldsArray.size() == 0) initShields(); return shieldsArray; } public Shield getShield(String tag) { if (shieldsArray == null || shieldsArray.size() == 0) initShields(); return shieldsTable.get(tag); } // // public Shield getShieldByName(String name) { // if (nameAndTagTable == null || nameAndTagTable.size() == 0 || shieldsArray == null || shieldsArray.size() == 0) // initShields(); // return shieldsTable.get(nameAndTagTable.get(name)); // } public void putShield(int position, Shield shield) { if (shieldsArray == null || shieldsArray.size() == 0) initShields(); shieldsArray.put(position, shield); shieldsTable.put(shield.tag, shield); } public void putShield(String tag, Shield shield) { if (shieldsArray == null || shieldsArray.size() == 0) initShields(); shieldsTable.put(tag, shield); shieldsArray.put(shield.position, shield); } public Shield getShield(int position) { if (shieldsArray == null || shieldsArray.size() == 0) initShields(); return shieldsArray.get(position); } public ArrayList<Byte> getRememberedShields() { if (rememberedShields == null || rememberedShields.length() == 0) return new ArrayList<>(); String[] arrString = rememberedShields.split(","); ArrayList<Byte> bytes = new ArrayList<>(); for (int i = 0; i < arrString.length; i++) { bytes.add(Byte.parseByte(arrString[i])); } return bytes; } public String getSelectedShields() { String selected = ""; for (int i = 0; i < shieldsArray.size(); i++) { Shield shield = shieldsArray.get(i); selected += (shield.mainActivitySelection ? shield.id + "," : ""); } return selected.trim().length() == 0 ? selected : selected.substring(0, selected.length() - 1); } private void initShields() { int i = 0; shieldsArray = new SparseArray(); shieldsTable = new Hashtable(); shieldsTags = new Hashtable(); ArrayList<Byte> remembered = getRememberedShields(); for (UIShield shield : UIShield.valuesFiltered()) { shieldsTable.put(shield.name(), new Shield(shield.getId(), i, shield.name(), shield.getName(), shield.getItemBackgroundColor(), shield.getSymbolId(), remembered.contains(shield.getId()) ? true : shield.isMainActivitySelection(), shield.getShieldType(), shield.getShieldFragment(), shield.isReleasable(), shield.getIsInvalidatable())); shieldsArray.put(i, new Shield(shield.getId(), i, shield.name(), shield.getName(), shield.getItemBackgroundColor(), shield.getSymbolId(), remembered.contains(shield.getId()) ? true : shield.isMainActivitySelection(), shield.getShieldType(), shield.getShieldFragment(), shield.isReleasable(), shield.getIsInvalidatable())); shieldsTags.put(shield.getShieldType().getName(), shield.name()); shieldsTags.put(shield.getShieldFragment().getName(), shield.name()); i++; } } public synchronized String getShieldTag(String key) { if (shieldsTags == null || shieldsTags.size() == 0) initShields(); return shieldsTags.get(key); } }