Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/org/mtransit/android/commons/SqlUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,11 @@ public static String getWhereNotInString(@NonNull String tableColumn, @Nullable
return SQLUtils.getWhereInString(tableColumn, values, true);
}

@NonNull
public static String getWhereColumnIsNull(@NonNull String tableColumn) {
return SQLUtils.getWhereColumnIsNull(tableColumn);
}

@NonNull
public static String escapeString(@NonNull String string) {
return SQLUtils.escapeString(string);
Expand Down
42 changes: 28 additions & 14 deletions src/main/java/org/mtransit/android/commons/data/ServiceUpdate.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public String getLogTag() {
private final Integer id; // internal DB ID (useful to delete) OR NULL
@NonNull
private String targetUUID;
@Nullable
private final String targetTripId;
private final long lastUpdateInMs;
private final long maxValidityInMs;
private final String text;
Expand All @@ -57,6 +59,7 @@ public String getLogTag() {
public ServiceUpdate(
@Nullable Integer optId,
@NonNull String targetUUID,
@Nullable String targetTripId,
long lastUpdateInMs,
long maxValidityInMs,
@NonNull String text,
Expand All @@ -69,6 +72,7 @@ public ServiceUpdate(
) {
this.id = optId;
this.targetUUID = targetUUID;
this.targetTripId = targetTripId;
this.lastUpdateInMs = lastUpdateInMs;
this.maxValidityInMs = maxValidityInMs;
this.text = text;
Expand All @@ -89,6 +93,11 @@ public String getTargetUUID() {
return targetUUID;
}

@Nullable
public String getTargetTripId() {
return targetTripId;
}

public boolean isSeverityWarning() {
return isSeverityWarning(this.severity);
}
Expand Down Expand Up @@ -199,7 +208,9 @@ public String toString() {
',' + //
"oId:" + this.originalId + //
',' + //
"target:" + this.targetUUID + //
"tUUID:" + this.targetUUID + //
',' + //
"tTrip:" + this.targetTripId + //
',' + //
"lang:" + this.language + //
',' + //
Expand All @@ -224,19 +235,20 @@ public long getLastUpdateInMs() {

@NonNull
public static ServiceUpdate fromCursor(@NonNull Cursor cursor) {
int idIdx = cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_ID);
Integer id = cursor.isNull(idIdx) ? null : cursor.getInt(idIdx);
String targetUUID = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TARGET_UUID));
long lastUpdateInMs = cursor.getLong(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_LAST_UPDATE));
long maxValidityInMs = cursor.getLong(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_MAX_VALIDITY_IN_MS));
int severity = cursor.getInt(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SEVERITY));
String text = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TEXT));
String htmlText = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TEXT_HTML));
String language = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_LANGUAGE));
String originalId = CursorExtKt.optString(cursor, ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_ORIGINAL_ID, null);
String sourceLabel = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SOURCE_LABEL));
String sourceId = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SOURCE_ID));
return new ServiceUpdate(id, targetUUID, lastUpdateInMs, maxValidityInMs, text, htmlText, severity, sourceId, sourceLabel, originalId, language);
final int idIdx = cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_ID);
final Integer id = cursor.isNull(idIdx) ? null : cursor.getInt(idIdx);
final String targetUUID = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TARGET_UUID));
final String targetTripId = CursorExtKt.optString(cursor, ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TARGET_TRIP_ID, null);
final long lastUpdateInMs = cursor.getLong(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_LAST_UPDATE));
final long maxValidityInMs = cursor.getLong(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_MAX_VALIDITY_IN_MS));
final int severity = cursor.getInt(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SEVERITY));
final String text = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TEXT));
final String htmlText = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TEXT_HTML));
final String language = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_LANGUAGE));
final String originalId = CursorExtKt.optString(cursor, ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_ORIGINAL_ID, null);
final String sourceLabel = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SOURCE_LABEL));
final String sourceId = cursor.getString(cursor.getColumnIndexOrThrow(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SOURCE_ID));
return new ServiceUpdate(id, targetUUID, targetTripId, lastUpdateInMs, maxValidityInMs, text, htmlText, severity, sourceId, sourceLabel, originalId, language);
}

/**
Expand All @@ -247,6 +259,7 @@ public Object[] getCursorRow() {
return new Object[]{
id,
targetUUID,
targetTripId,
lastUpdateInMs,
maxValidityInMs,
severity,
Expand All @@ -266,6 +279,7 @@ public ContentValues toContentValues() {
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_ID, this.id);
} // ELSE AUTO INCREMENT
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TARGET_UUID, this.targetUUID);
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_TARGET_TRIP_ID, this.targetTripId);
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_LAST_UPDATE, this.lastUpdateInMs);
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_MAX_VALIDITY_IN_MS, this.maxValidityInMs);
contentValues.put(ServiceUpdateProviderContract.Columns.T_SERVICE_UPDATE_K_SEVERITY, this.severity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,16 @@ fun Iterable<ServiceUpdate>?.isSeverityWarningInfo(): Pair<Boolean, Boolean> {
fun Iterable<ServiceUpdate>.distinctByOriginalId() =
this.distinctBy { it.originalId ?: it.id } // keep 1st occurrence from sorted list (in *Manager)

fun ServiceUpdateProviderContract.makeServiceUpdateNoneList(targetable: Targetable, sourceId: String): ArrayList<ServiceUpdate> =
ArrayList<ServiceUpdate>().apply {
fun ServiceUpdateProviderContract.makeServiceUpdateNoneList(targetable: Targetable, sourceId: String) =
buildList {
add(makeServiceUpdateNone(targetable.uuid, sourceId))
}

fun ServiceUpdateProviderContract.makeServiceUpdateNone(targetUUID: String, sourceId: String) =
ServiceUpdate(
null,
targetUUID,
null,
TimeUtils.currentTimeMillis(),
getServiceUpdateMaxValidityInMs(),
StringUtils.EMPTY,
Expand Down
Loading