package com.shejiaomao.common;
import java.util.Properties;
import com.shejiaomao.maobo.R;
import android.content.Context;
import com.cattong.commons.LibException;
import com.cattong.commons.LibResultCode;
import com.cattong.commons.Logger;
import com.cattong.commons.util.StringUtil;
import com.cattong.entity.Gender;
public class ResourceBook extends Properties {
private static final long serialVersionUID = -5182954528802329847L;
private static final String RESULT_CODE = "RESULT_CODE_";
private static final String GENDER = "GENDER_";
private static ResourceBook resourceBook;
static {
resourceBook = new ResourceBook();
}
private ResourceBook() {
}
public static void loadResourceBook(Context context) {
if (context == null) {
return;
}
loadResource(context, R.array.gender_book, GENDER);
loadResource(context, R.array.result_code_book, RESULT_CODE);
}
public static void loadResultCodeBook(Context context, int resourceId) {
loadResource(context, resourceId, RESULT_CODE);
}
public static void loadGenderBook(Context context, int resourceId) {
loadResource(context, resourceId, GENDER);
}
private static void loadResource(Context context, int resouceId, String prefix) {
String[] keyValueArray = context.getResources().getStringArray(resouceId);
String key = null;
String value = null;
for (int i = 0; i < keyValueArray.length; i++) {
String[] keyValue = keyValueArray[i].split("=");
if (keyValue == null || keyValue.length != 2) {
throw new IllegalArgumentException("code book configure is error");
}
key = keyValue[0];
value = keyValue[1];
resourceBook.put(prefix + key, value);
Logger.verbose("loadResource:{}|{}", key, value);
}
}
public static String getValue(String key, Context context) {
if (resourceBook.size() == 0) {
loadResourceBook(context);
}
return resourceBook.containsKey(key) ? resourceBook.get(key).toString() : null;
}
public static String getResultCodeValue(int resultCode, Context context) {
if (resourceBook.size() == 0) {
loadResourceBook(context);
}
String key = RESULT_CODE + resultCode;
String value = getValue(key, context);
if (value == null) {
key = RESULT_CODE + LibResultCode.E_UNKNOWN_ERROR;
value = getValue(key, context) + ":" + resultCode;
}
return value;
}
public static String getResultCodeValue(LibException e, Context context) {
int resultCode = e.getErrorCode();
if (StringUtil.isNotEmpty(e.getErrorDescr())
&& !StringUtil.isNumeric(e.getErrorDescr())) {
return e.getErrorDescr();
}
String value = getResultCodeValue(resultCode, context);
return value;
}
public static String getGenderValue(Gender gender, Context context) {
if (gender == null) {
gender = Gender.Unkown;
}
String key = GENDER + gender.getGenderNo();
return getValue(key, context);
}
}