Added an option to mark all unverified events as unknown (to get rid of warning about unvalidated events if you have a lot of them)

This commit is contained in:
Graham Jones
2022-04-10 22:24:15 +01:00
parent 2be8088f0e
commit 888bac243c
4 changed files with 105 additions and 2 deletions

View File

@@ -426,6 +426,9 @@ public class LogManagerControlActivity extends AppCompatActivity {
Log.i(TAG, "exception starting settings activity " + ex.toString());
}
return true;
case R.id.action_mark_unknown:
Log.i(TAG,"action_mark_unknown");
mLm.mWac.markUnverifiedEventsAsUnknown();
default:
return super.onOptionsItemSelected(item);

View File

@@ -34,6 +34,7 @@ import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -49,7 +50,6 @@ public abstract class WebApiConnection {
private String mAuthToken;
public interface JSONObjectCallback {
public void accept(JSONObject retValObj);
}
@@ -115,7 +115,7 @@ public abstract class WebApiConnection {
public boolean authenticate(final String uname, final String passwd, StringCallback callback) {
Log.e(TAG,"WebApiConnection.authenticate(username, password, callback) Not Implemented");
Log.e(TAG, "WebApiConnection.authenticate(username, password, callback) Not Implemented");
return false;
}
@@ -133,4 +133,99 @@ public abstract class WebApiConnection {
return (mAuthToken);
}
/**
* Mark all of the events with IDs contained in eventList as unknown type.
* @param eventList list of String IDs of the events to mark as unknown.
* @return true if request sent successfully or false.
*/
private boolean markEventsAsUnknown(ArrayList<String>eventList) {
if (eventList.size()>0) {
Log.i(TAG,"markEventsAsUnknown - eventList.size()="+eventList.size());
Log.i(TAG,"markEventsAsUnknown - eventList(0) = "+eventList.get(0));
getEvent(eventList.get(0), new WebApiConnection.JSONObjectCallback() {
@Override
public void accept(JSONObject eventObj) {
Log.v(TAG, "markEventsAsUnknown.getEvent.callback: "+eventObj);
if (eventObj != null) {
Log.v(TAG, "markEventsAsUnknown.getEvent.callback: eventObj=" + eventObj.toString());
try {
eventObj.put("type", "Unknown");
String notesStr = eventObj.getString("desc");
if (notesStr == null) notesStr = new String("");
notesStr = notesStr + " Set to Unknown automatically by OSD Android App";
eventObj.put("desc", notesStr);
updateEvent(eventObj,new WebApiConnection.JSONObjectCallback() {
@Override
public void accept(JSONObject eventObj) {
if (eventObj != null) {
Log.i(TAG, "markEventsAsUnknown.updateEvent.callback" + eventObj.toString());
// Remove the first item from the list,then call this whole procedure again to modify the next one on the list.
eventList.remove(0);
markEventsAsUnknown(eventList);
} else {
Log.e(TAG, "markEventsAsUnknown.updateEvent.callback - eventObj is null");
}
}
});
} catch (JSONException e) {
Log.e(TAG,"markEventsAsUnknown.getEvent.callback: Error editing eventObj");
}
} else {
mUtil.showToast("Failed to Retrieve Event from Remote Database");
return;
}
}
});
} else {
Log.i(TAG,"markEventsAsUnknown(): No more events to Modify");
mUtil.showToast("No unvalidated events to modify :)");
}
return(true);
}
/**
* Mark all unverified events in the remote database as unknown
*
* @return true if request is successful or false.
*/
public boolean markUnverifiedEventsAsUnknown() {
if (getEvents((JSONObject remoteEventsObj) -> {
Log.v(TAG, "markUnverifiedEventsAsUnknown.getEvents.Callback()");
Boolean haveUnvalidatedEvent = false;
if (remoteEventsObj == null) {
Log.e(TAG, "markUnverifiedEventsAsUnknown.getEvents.Callback: Error Retrieving events");
} else {
try {
JSONArray eventsArray = remoteEventsObj.getJSONArray("events");
ArrayList<String> unvalidatedEventsList = new ArrayList<String>();
for (int i = eventsArray.length() - 1; i >= 0; i--) {
JSONObject eventObj = eventsArray.getJSONObject(i);
String typeStr = eventObj.getString("type");
if (typeStr.equals("null") || typeStr.equals("")) {
haveUnvalidatedEvent = true;
unvalidatedEventsList.add(eventObj.getString("id"));
}
}
Log.v(TAG, "markUnverifiedEventsAsUnknown.getEvents.onFinish.callback - haveUnvalidatedEvent = " +
haveUnvalidatedEvent);
markEventsAsUnknown(unvalidatedEventsList);
} catch (JSONException e) {
Log.e(TAG, "markUnverifiedEventsAsUnknown.getEvents.onFinish(): Error Parsing remoteEventsObj: " + e.getMessage());
//mUtil.showToast("Error Parsing remoteEventsObj - this should not happen!!!");
}
}
})) {
Log.v(TAG, "markUnverifiedEventsAsUnknown.getEvents - requested events");
} else {
Log.v(TAG, "markUnverifiedEventsAsUnknown.getEvents - Not Logged In");
}
return (true);
}
}

View File

@@ -5,6 +5,10 @@
android:id="@+id/pruneDatabaseMenuItem"
app:showAsAction="never|withText"
android:title="@string/prune_database" />
<item
android:id="@+id/action_mark_unknown"
app:showAsAction="never|withText"
android:title="@string/mark_unverified_events_as_unknown" />
</group>
<group android:id="@+id/grp3">

View File

@@ -434,4 +434,5 @@
<string name="permissions_required">Permissions Disclosure</string>
<string name="about_data_sharing">About Data Sharing</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="mark_unverified_events_as_unknown">Mark Unverified Events as Unknown</string>
</resources>