@Override
  public void onDataReceived(IJsonObject probeConfig, IJsonObject data) {

    JsonObject record = new JsonObject();
    record.add("name", probeConfig.get(RuntimeTypeAdapterFactory.TYPE));
    record.add("value", data);
    handler.obtainMessage(DATA, record).sendToTarget();
  }
  protected void writeData(String name, IJsonObject data) {

    SQLiteDatabase db = databaseHelper.getWritableDatabase();
    final double timestamp = data.get(ProbeKeys.BaseProbeKeys.TIMESTAMP).getAsDouble();
    final String value = data.toString();
    if (timestamp == 0L || name == null || value == null) {
      Log.e(
          LogUtil.TAG,
          "Unable to save data.  Not all required values specified. "
              + timestamp
              + " "
              + name
              + " - "
              + value);
      throw new SQLException("Not all required fields specified.");
    }

    String[] subStrings = name.split("\\.");
    String probeName = subStrings[subStrings.length - 1];

    ContentValues cv = new ContentValues();
    cv.put(DatabaseHelper.TABLE_STANDARD_PROBE, name);
    cv.put(DatabaseHelper.TABLE_STANDARD_VALUE, data.toString());
    cv.put(DatabaseHelper.TABLE_STANDARD_TIMESTAMP, TimeUtil.alignedTimestamp);
    for (String entry : data.getAllKeys())
      if (DatabaseHelper.getAllowedList().contains(entry.toLowerCase(Locale.ENGLISH))) {
        String toSave = data.toString();
        try {
          toSave = data.get(entry).getAsString();
        } catch (Exception e) {
          e.printStackTrace();
        }
        cv.put(entry, toSave);
      }

    db.insertOrThrow(probeName, "", cv);

    Log.e("Database", name + " " + TimeUtil.alignedTimestamp);

    Intent intent = new Intent("pipeline");
    intent.putExtra("Name", name);
    intent.putExtra("IJsonObject", data.toString());
    // intent.setAction("edu.mit.media.funf.pipeline.broadcastreceiver");
    LocalBroadcastManager.getInstance(getFunfManager()).sendBroadcast(intent);
    db.close();
  }