From 716819b3759f8061fead9ddfca99c4f233564a35 Mon Sep 17 00:00:00 2001 From: Yaw Anokwa Date: Mon, 25 Mar 2019 15:43:47 -0700 Subject: [PATCH 1/4] ExternalData generates a lot of hits and we have enough data to act on deprecation --- .../odk/collect/android/external/ExternalDataUtil.java | 8 -------- .../external/handler/ExternalDataHandlerPull.java | 9 --------- .../org/odk/collect/android/widgets/WidgetFactory.java | 7 ------- 3 files changed, 24 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/external/ExternalDataUtil.java b/collect_app/src/main/java/org/odk/collect/android/external/ExternalDataUtil.java index baf9f37a4b1..341a87ce1fb 100644 --- a/collect_app/src/main/java/org/odk/collect/android/external/ExternalDataUtil.java +++ b/collect_app/src/main/java/org/odk/collect/android/external/ExternalDataUtil.java @@ -20,8 +20,6 @@ import android.widget.Toast; -import com.google.android.gms.analytics.HitBuilders; - import org.javarosa.core.model.SelectChoice; import org.javarosa.core.model.condition.EvaluationContext; import org.javarosa.core.model.instance.FormInstance; @@ -110,12 +108,6 @@ public static XPathFuncExpr getSearchXPathExpression(String appearance) { Matcher matcher = SEARCH_FUNCTION_REGEX.matcher(appearance); if (matcher.find()) { - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("ExternalData") - .setAction("search()") - .setLabel(Collect.getCurrentFormIdentifierHash()) - .build()); String function = matcher.group(0); try { diff --git a/collect_app/src/main/java/org/odk/collect/android/external/handler/ExternalDataHandlerPull.java b/collect_app/src/main/java/org/odk/collect/android/external/handler/ExternalDataHandlerPull.java index 1f5dbf52e4b..21bc12eac6c 100644 --- a/collect_app/src/main/java/org/odk/collect/android/external/handler/ExternalDataHandlerPull.java +++ b/collect_app/src/main/java/org/odk/collect/android/external/handler/ExternalDataHandlerPull.java @@ -22,11 +22,8 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; -import com.google.android.gms.analytics.HitBuilders; - import org.javarosa.core.model.condition.EvaluationContext; import org.javarosa.xpath.expr.XPathFuncExpr; -import org.odk.collect.android.application.Collect; import org.odk.collect.android.external.ExternalDataManager; import org.odk.collect.android.external.ExternalDataUtil; import org.odk.collect.android.external.ExternalSQLiteOpenHelper; @@ -71,12 +68,6 @@ public boolean realTime() { @Override public Object eval(Object[] args, EvaluationContext ec) { - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("ExternalData") - .setAction("pulldata()") - .setLabel(Collect.getCurrentFormIdentifierHash()) - .build()); if (args.length != 4) { Timber.e("4 arguments are needed to evaluate the %s function", HANDLER_NAME); diff --git a/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java b/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java index 797cdfa72a1..f06d8c69a6b 100644 --- a/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java +++ b/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java @@ -130,13 +130,6 @@ public static QuestionWidget createWidgetFromPrompt(FormEntryPrompt fep, Context String query = fep.getQuestion().getAdditionalAttribute(null, "query"); if (query != null) { questionWidget = new ItemsetWidget(context, fep, appearance.startsWith("quick")); - - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("ExternalData") - .setAction("External itemset") - .setLabel(Collect.getCurrentFormIdentifierHash()) - .build()); } else if (appearance.startsWith("printer")) { questionWidget = new ExPrinterWidget(context, fep); } else if (appearance.startsWith("ex:")) { From a2cf136314635933d470b11e91ee3997c801a74e Mon Sep 17 00:00:00 2001 From: Yaw Anokwa Date: Mon, 25 Mar 2019 15:45:49 -0700 Subject: [PATCH 2/4] Itemset hits are not needed because current() migration has finished --- .../android/widgets/WidgetFactory.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java b/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java index f06d8c69a6b..515ffd6e013 100644 --- a/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java +++ b/collect_app/src/main/java/org/odk/collect/android/widgets/WidgetFactory.java @@ -16,17 +16,10 @@ import android.content.Context; -import com.google.android.gms.analytics.HitBuilders; - import org.javarosa.core.model.Constants; -import org.javarosa.core.model.ItemsetBinding; -import org.javarosa.core.model.QuestionDef; import org.javarosa.form.api.FormEntryPrompt; -import org.javarosa.xpath.expr.XPathExpression; -import org.odk.collect.android.application.Collect; import org.odk.collect.android.external.ExternalDataUtil; -import java.util.List; import java.util.Locale; import timber.log.Timber; @@ -210,7 +203,6 @@ public static QuestionWidget createWidgetFromPrompt(FormEntryPrompt fep, Context } else { questionWidget = new SelectOneWidget(context, fep, appearance.contains("quick")); } - logChoiceFilterAnalytics(fep.getQuestion()); break; case Constants.CONTROL_SELECT_MULTI: // search() appearance/function (not part of XForms spec) added by SurveyCTO gets @@ -246,7 +238,6 @@ public static QuestionWidget createWidgetFromPrompt(FormEntryPrompt fep, Context } else { questionWidget = new SelectMultiWidget(context, fep); } - logChoiceFilterAnalytics(fep.getQuestion()); break; case Constants.CONTROL_RANK: questionWidget = new RankingWidget(context, fep); @@ -279,35 +270,4 @@ public static QuestionWidget createWidgetFromPrompt(FormEntryPrompt fep, Context return questionWidget; } - - /** - * Log analytics event each time a question with a choice filter is accessed, identifying - * choice filters with relative expressions. This was initially introduced to inform messaging - * around a long-standing bug in JavaRosa: https://github.com/opendatakit/javarosa/issues/293 - */ - private static void logChoiceFilterAnalytics(QuestionDef question) { - ItemsetBinding itemsetBinding = question.getDynamicChoices(); - - if (itemsetBinding != null && itemsetBinding.nodesetRef != null) { - if (itemsetBinding.nodesetRef.hasPredicates()) { - for (int level = 0; level < itemsetBinding.nodesetRef.size(); level++) { - List predicates = itemsetBinding.nodesetRef.getPredicate(level); - - if (predicates != null) { - for (XPathExpression predicate : predicates) { - String actionName = predicate.toString().contains("func-expr:current") ? - "CurrentPredicate" : "NonCurrentPredicate"; - - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("Itemset") - .setAction(actionName) - .setLabel(Collect.getCurrentFormIdentifierHash()) - .build()); - } - } - } - } - } - } } \ No newline at end of file From 4285854ba7d4adb936c773181045796338c9f3d0 Mon Sep 17 00:00:00 2001 From: Yaw Anokwa Date: Mon, 25 Mar 2019 15:47:19 -0700 Subject: [PATCH 3/4] AuditLogging hits are not actionable --- .../org/odk/collect/android/logic/FormController.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/logic/FormController.java b/collect_app/src/main/java/org/odk/collect/android/logic/FormController.java index 4f6a6136b26..7c4b337d70f 100644 --- a/collect_app/src/main/java/org/odk/collect/android/logic/FormController.java +++ b/collect_app/src/main/java/org/odk/collect/android/logic/FormController.java @@ -17,8 +17,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.google.android.gms.analytics.HitBuilders; - import org.javarosa.core.model.CoreModelModule; import org.javarosa.core.model.FormDef; import org.javarosa.core.model.FormIndex; @@ -49,7 +47,6 @@ import org.javarosa.xform.parse.XFormParser; import org.javarosa.xpath.XPathParseTool; import org.javarosa.xpath.expr.XPathExpression; -import org.odk.collect.android.application.Collect; import org.odk.collect.android.exception.JavaRosaException; import org.odk.collect.android.utilities.AuditEventLogger; import org.odk.collect.android.utilities.RegexUtils; @@ -1220,12 +1217,6 @@ public InstanceMetadata getSubmissionMetadata() { // timing element... v = e.getChildrenWithName(AUDIT); if (v.size() == 1) { - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("AuditLogging") - .setAction("Enabled") - .setLabel(Collect.getCurrentFormIdentifierHash()) - .build()); TreeElement auditElement = v.get(0); From 134b7051d3a5f72224ab10fa02af706b861fd074 Mon Sep 17 00:00:00 2001 From: Yaw Anokwa Date: Tue, 26 Mar 2019 19:29:47 -0700 Subject: [PATCH 4/4] Enough data on selected splash image has been collected to decide on deprecation --- .../preferences/UserInterfacePreferences.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/preferences/UserInterfacePreferences.java b/collect_app/src/main/java/org/odk/collect/android/preferences/UserInterfacePreferences.java index 75d8241c218..4cfbccb1157 100644 --- a/collect_app/src/main/java/org/odk/collect/android/preferences/UserInterfacePreferences.java +++ b/collect_app/src/main/java/org/odk/collect/android/preferences/UserInterfacePreferences.java @@ -25,18 +25,14 @@ import android.support.annotation.Nullable; import android.view.View; -import com.google.android.gms.analytics.HitBuilders; import com.google.common.collect.ObjectArrays; import org.odk.collect.android.R; import org.odk.collect.android.activities.MainMenuActivity; -import org.odk.collect.android.application.Collect; import org.odk.collect.android.spatial.MapHelper; -import org.odk.collect.android.utilities.FileUtils; import org.odk.collect.android.utilities.LocaleHelper; import org.odk.collect.android.utilities.MediaUtils; -import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.TreeMap; @@ -253,17 +249,9 @@ public void onActivityResult(int requestCode, int resultCode, Intent intent) { String sourceMediaPath = MediaUtils.getPathFromUri(getActivity(), selectedMedia, MediaStore.Images.Media.DATA); - String sourceMediaPathHash = FileUtils.getMd5Hash(new ByteArrayInputStream(sourceMediaPath.getBytes())); - // setting image path setSplashPath(sourceMediaPath); - Collect.getInstance().getDefaultTracker() - .send(new HitBuilders.EventBuilder() - .setCategory("PreferenceChange") - .setAction("Selected splash image") - .setLabel(sourceMediaPathHash) - .build()); break; } }