package org.mtransit.android.data; import org.json.JSONException; import org.json.JSONObject; import org.mtransit.android.commons.MTLog; import org.mtransit.android.commons.data.DefaultPOI; import org.mtransit.android.commons.data.POI; import org.mtransit.android.commons.provider.POIProviderContract; import android.content.ContentValues; import android.database.Cursor; public class TextMessage extends DefaultPOI { private static final String TAG = TextMessage.class.getSimpleName(); @Override public String getLogTag() { return TAG; } public static final String AUTHORITY = "org.mtransit.android.message"; private long messageId; private String message; public TextMessage(long messageId, String message) { super(AUTHORITY, -1, POI.ITEM_VIEW_TYPE_TEXT_MESSAGE, POI.ITEM_STATUS_TYPE_NONE, POI.ITEM_ACTION_TYPE_NONE); setMessageId(messageId); setMessage(message); } public void setMessageId(long messageId) { this.messageId = messageId; } public long getMessageId() { return messageId; } public void setMessage(String message) { this.message = message; } public String getMessage() { return this.message; } @Override public String getName() { return getMessage(); } @Override public String toString() { return new StringBuilder().append(TextMessage.class.getSimpleName()).append(":[") // .append("authority:").append(getAuthority()).append(',') // .append("messageId:").append(getMessageId()).append(',') // .append("message:").append(getMessage()).append(',') // .append("id:").append(getId()).append(',') // .append(']').toString(); } @Override public int getType() { return POI.ITEM_VIEW_TYPE_TEXT_MESSAGE; } @Override public int getStatusType() { return POI.ITEM_STATUS_TYPE_NONE; } @Override public int getActionsType() { return POI.ITEM_ACTION_TYPE_NONE; } @Override public boolean hasLocation() { return false; } private String uuid = null; @Override public String getUUID() { if (this.uuid == null) { this.uuid = POI.POIUtils.getUUID(getAuthority(), getMessageId()); } return this.uuid; } @Override public void resetUUID() { this.uuid = null; } private static final String JSON_MESSAGE = "message"; private static final String JSON_MESSAGE_ID = "messageId"; @Override public JSONObject toJSON() { try { JSONObject json = new JSONObject(); json.put(JSON_MESSAGE_ID, getMessageId()); json.put(JSON_MESSAGE, getMessage()); DefaultPOI.toJSON(this, json); return json; } catch (JSONException jsone) { MTLog.w(this, jsone, "Error while converting to JSON (%s)!", this); return null; } } @Override public POI fromJSON(JSONObject json) { return fromJSONStatic(json); } public static TextMessage fromJSONStatic(JSONObject json) { try { TextMessage textMessage = new TextMessage( // json.getLong(JSON_MESSAGE_ID), // json.getString(JSON_MESSAGE) // ); DefaultPOI.fromJSON(json, textMessage); return textMessage; } catch (JSONException jsone) { MTLog.w(TAG, jsone, "Error while parsing JSON '%s'!", json); return null; } } public static TextMessage fromSimpleJSONStatic(JSONObject json, String authority) { try { TextMessage textMessage = new TextMessage( // json.getLong(JSON_MESSAGE_ID), // json.getString(JSON_MESSAGE) // ); return textMessage; } catch (JSONException jsone) { MTLog.w(TAG, jsone, "Error while parsing simple JSON '%s'!", json); return null; } } @Override public ContentValues toContentValues() { ContentValues values = super.toContentValues(); values.put(TextMessageColumns.T_TEXT_MESSAGE_K_MESSAGE, getMessage()); return values; } @Override public POI fromCursor(Cursor c, String authority) { return fromCursorStatic(c, authority); } public static TextMessage fromCursorStatic(Cursor c, String authority) { long messageId = c.getLong(c.getColumnIndexOrThrow(TextMessageColumns.T_TEXT_MESSAGE_K_MESSAGE_ID)); String message = c.getString(c.getColumnIndexOrThrow(TextMessageColumns.T_TEXT_MESSAGE_K_MESSAGE)); TextMessage textMessage = new TextMessage(messageId, message); DefaultPOI.fromCursor(c, textMessage); return textMessage; } private static class TextMessageColumns { public static final String T_TEXT_MESSAGE_K_MESSAGE_ID = POIProviderContract.Columns.getFkColumnName("messageId"); public static final String T_TEXT_MESSAGE_K_MESSAGE = POIProviderContract.Columns.getFkColumnName("message"); } }