Allow partial Index rebuilding thru updateFromClassNameResource(...)

- add a new boolean parameter to ask for Index rebuilding:
passing "true" will delete first all the data corresponding to the
"className" and then apply the update.

Change-Id: Ifc42fc560a14f5470b466cf6982915d9207fa3c7
This commit is contained in:
Fabrice Di Meglio
2014-04-14 13:31:14 -07:00
parent 724b702a86
commit 490099b135
3 changed files with 19 additions and 8 deletions

View File

@@ -166,6 +166,6 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
private void updateSearchIndex(boolean isBluetoothOn) { private void updateSearchIndex(boolean isBluetoothOn) {
Index.getInstance(mContext).updateFromClassNameResource( Index.getInstance(mContext).updateFromClassNameResource(
BluetoothSettings.class.getName(), isBluetoothOn); BluetoothSettings.class.getName(), false, isBluetoothOn);
} }
} }

View File

@@ -362,7 +362,17 @@ public class Index {
return updateInternal(); return updateInternal();
} }
public boolean updateFromClassNameResource(String className, boolean includeInSearchResults) { /**
* Update the Index for a specific class name resources
*
* @param className the class name (typically a fragment name).
* @param rebuild true means that you want to delete the data from the Index first.
* @param includeInSearchResults true means that you want the bit "enabled" set so that the
* data will be seen included into the search results
* @return true of the Index update has been successful.
*/
public boolean updateFromClassNameResource(String className, boolean rebuild,
boolean includeInSearchResults) {
if (className == null) { if (className == null) {
throw new IllegalArgumentException("class name cannot be null!"); throw new IllegalArgumentException("class name cannot be null!");
} }
@@ -372,6 +382,9 @@ public class Index {
return false; return false;
} }
res.enabled = includeInSearchResults; res.enabled = includeInSearchResults;
if (rebuild) {
deleteIndexableData(res);
}
addIndexableData(res); addIndexableData(res);
mDataToProcess.forceUpdate = true; mDataToProcess.forceUpdate = true;
boolean result = updateInternal(); boolean result = updateInternal();
@@ -1029,13 +1042,13 @@ public class Index {
try { try {
database.beginTransaction(); database.beginTransaction();
if (dataToDelete.size() > 0) {
processDataToDelete(database, localeStr, dataToDelete);
}
if (dataToUpdate.size() > 0) { if (dataToUpdate.size() > 0) {
processDataToUpdate(database, localeStr, dataToUpdate, nonIndexableKeys, processDataToUpdate(database, localeStr, dataToUpdate, nonIndexableKeys,
forceUpdate); forceUpdate);
} }
if (dataToDelete.size() > 0) {
processDataToDelete(database, localeStr, dataToDelete);
}
database.setTransactionSuccessful(); database.setTransactionSuccessful();
result = true; result = true;
} finally { } finally {

View File

@@ -20,12 +20,10 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.database.ContentObserver;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.wifi.SupplicantState; import android.net.wifi.SupplicantState;
import android.net.wifi.WifiInfo; import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.Switch; import android.widget.Switch;
@@ -157,7 +155,7 @@ public class WifiEnabler implements CompoundButton.OnCheckedChangeListener {
private void updateSearchIndex(boolean isWiFiOn) { private void updateSearchIndex(boolean isWiFiOn) {
Index.getInstance(mContext).updateFromClassNameResource( Index.getInstance(mContext).updateFromClassNameResource(
WifiSettings.class.getName(), isWiFiOn); WifiSettings.class.getName(), false, isWiFiOn);
} }
private void setSwitchChecked(boolean checked) { private void setSwitchChecked(boolean checked) {