1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-02-17 04:00:48 +01:00

migrating to try-with-resources statements

This commit is contained in:
Mariotaku Lee 2017-08-29 15:53:32 +08:00
parent adf16fb533
commit c66597b085
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
2 changed files with 95 additions and 103 deletions

View File

@ -12,7 +12,6 @@ import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject; import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease; import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
import org.mariotaku.restfu.RestFuUtils;
import org.mariotaku.twidere.R; import org.mariotaku.twidere.R;
import org.mariotaku.twidere.annotation.AccountType; import org.mariotaku.twidere.annotation.AccountType;
import org.mariotaku.twidere.model.account.cred.Credentials; import org.mariotaku.twidere.model.account.cred.Credentials;
@ -236,14 +235,10 @@ public final class CustomAPIConfig implements Parcelable {
@NonNull @NonNull
public static List<CustomAPIConfig> listDefault(@NonNull Context context) { public static List<CustomAPIConfig> listDefault(@NonNull Context context) {
final AssetManager assets = context.getAssets(); final AssetManager assets = context.getAssets();
InputStream is = null; try (InputStream is = assets.open("data/default_api_configs.json")) {
try {
is = assets.open("data/default_api_configs.json");
return JsonSerializer.parseList(is, CustomAPIConfig.class); return JsonSerializer.parseList(is, CustomAPIConfig.class);
} catch (IOException e) { } catch (IOException e) {
return listBuiltin(context); return listBuiltin(context);
} finally {
RestFuUtils.closeSilently(is);
} }
} }

View File

@ -37,7 +37,6 @@ import com.fasterxml.jackson.core.JsonToken;
import org.mariotaku.library.exportablepreferences.PreferencesExporter; import org.mariotaku.library.exportablepreferences.PreferencesExporter;
import org.mariotaku.library.exportablepreferences.annotation.PreferenceType; import org.mariotaku.library.exportablepreferences.annotation.PreferenceType;
import org.mariotaku.library.objectcursor.ObjectCursor; import org.mariotaku.library.objectcursor.ObjectCursor;
import org.mariotaku.restfu.RestFuUtils;
import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.constant.SharedPreferenceConstants; import org.mariotaku.twidere.constant.SharedPreferenceConstants;
import org.mariotaku.twidere.model.FiltersData; import org.mariotaku.twidere.model.FiltersData;
@ -82,23 +81,27 @@ public class DataImportExportUtils implements Constants {
@WorkerThread @WorkerThread
public static void exportData(final Context context, @NonNull final File dst, final int flags) throws IOException { public static void exportData(final Context context, @NonNull final File dst, final int flags) throws IOException {
dst.delete(); dst.delete();
final FileOutputStream fos = new FileOutputStream(dst); try (FileOutputStream fos = new FileOutputStream(dst);
final ZipOutputStream zos = new ZipOutputStream(fos); ZipOutputStream zos = new ZipOutputStream(fos)) {
try {
if (hasFlag(flags, FLAG_PREFERENCES)) { if (hasFlag(flags, FLAG_PREFERENCES)) {
exportSharedPreferencesData(zos, context, SHARED_PREFERENCES_NAME, ENTRY_PREFERENCES, new PreferencesExporterStrategy(SharedPreferenceConstants.class)); exportSharedPreferencesData(zos, context, SHARED_PREFERENCES_NAME, ENTRY_PREFERENCES,
new PreferencesExporterStrategy(SharedPreferenceConstants.class));
} }
if (hasFlag(flags, FLAG_NICKNAMES)) { if (hasFlag(flags, FLAG_NICKNAMES)) {
exportSharedPreferencesData(zos, context, USER_NICKNAME_PREFERENCES_NAME, ENTRY_NICKNAMES, ConvertToStringProcessStrategy.SINGLETON); exportSharedPreferencesData(zos, context, USER_NICKNAME_PREFERENCES_NAME, ENTRY_NICKNAMES,
ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_USER_COLORS)) { if (hasFlag(flags, FLAG_USER_COLORS)) {
exportSharedPreferencesData(zos, context, USER_COLOR_PREFERENCES_NAME, ENTRY_USER_COLORS, ConvertToIntProcessStrategy.SINGLETON); exportSharedPreferencesData(zos, context, USER_COLOR_PREFERENCES_NAME, ENTRY_USER_COLORS,
ConvertToIntProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_HOST_MAPPING)) { if (hasFlag(flags, FLAG_HOST_MAPPING)) {
exportSharedPreferencesData(zos, context, HOST_MAPPING_PREFERENCES_NAME, ENTRY_HOST_MAPPING, ConvertToStringProcessStrategy.SINGLETON); exportSharedPreferencesData(zos, context, HOST_MAPPING_PREFERENCES_NAME, ENTRY_HOST_MAPPING,
ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_KEYBOARD_SHORTCUTS)) { if (hasFlag(flags, FLAG_KEYBOARD_SHORTCUTS)) {
exportSharedPreferencesData(zos, context, KEYBOARD_SHORTCUTS_PREFERENCES_NAME, ENTRY_KEYBOARD_SHORTCUTS, ConvertToStringProcessStrategy.SINGLETON); exportSharedPreferencesData(zos, context, KEYBOARD_SHORTCUTS_PREFERENCES_NAME, ENTRY_KEYBOARD_SHORTCUTS,
ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_FILTERS)) { if (hasFlag(flags, FLAG_FILTERS)) {
// TODO export filters // TODO export filters
@ -136,9 +139,6 @@ public class DataImportExportUtils implements Constants {
} }
zos.finish(); zos.finish();
zos.flush(); zos.flush();
} finally {
RestFuUtils.closeSilently(zos);
RestFuUtils.closeSilently(fos);
} }
} }
@ -162,96 +162,94 @@ public class DataImportExportUtils implements Constants {
@WorkerThread @WorkerThread
public static int getImportedSettingsFlags(@NonNull final File src) throws IOException { public static int getImportedSettingsFlags(@NonNull final File src) throws IOException {
final ZipFile zipFile = new ZipFile(src); try (ZipFile zipFile = new ZipFile(src)) {
int flags = 0; int flags = 0;
if (zipFile.getEntry(ENTRY_PREFERENCES) != null) { if (zipFile.getEntry(ENTRY_PREFERENCES) != null) {
flags |= FLAG_PREFERENCES; flags |= FLAG_PREFERENCES;
}
if (zipFile.getEntry(ENTRY_NICKNAMES) != null) {
flags |= FLAG_NICKNAMES;
}
if (zipFile.getEntry(ENTRY_USER_COLORS) != null) {
flags |= FLAG_USER_COLORS;
}
if (zipFile.getEntry(ENTRY_HOST_MAPPING) != null) {
flags |= FLAG_HOST_MAPPING;
}
if (zipFile.getEntry(ENTRY_KEYBOARD_SHORTCUTS) != null) {
flags |= FLAG_KEYBOARD_SHORTCUTS;
}
if (zipFile.getEntry(ENTRY_FILTERS) != null) {
flags |= FLAG_FILTERS;
}
if (zipFile.getEntry(ENTRY_TABS) != null) {
flags |= FLAG_TABS;
}
return flags;
} }
if (zipFile.getEntry(ENTRY_NICKNAMES) != null) {
flags |= FLAG_NICKNAMES;
}
if (zipFile.getEntry(ENTRY_USER_COLORS) != null) {
flags |= FLAG_USER_COLORS;
}
if (zipFile.getEntry(ENTRY_HOST_MAPPING) != null) {
flags |= FLAG_HOST_MAPPING;
}
if (zipFile.getEntry(ENTRY_KEYBOARD_SHORTCUTS) != null) {
flags |= FLAG_KEYBOARD_SHORTCUTS;
}
if (zipFile.getEntry(ENTRY_FILTERS) != null) {
flags |= FLAG_FILTERS;
}
if (zipFile.getEntry(ENTRY_TABS) != null) {
flags |= FLAG_TABS;
}
zipFile.close();
return flags;
} }
public static void importData(final Context context, final File src, final int flags) throws IOException { public static void importData(final Context context, final File src, final int flags) throws IOException {
if (src == null) throw new FileNotFoundException(); if (src == null) throw new FileNotFoundException();
final ZipFile zipFile = new ZipFile(src); try (ZipFile zipFile = new ZipFile(src)) {
if (hasFlag(flags, FLAG_PREFERENCES)) { if (hasFlag(flags, FLAG_PREFERENCES)) {
importSharedPreferencesData(zipFile, context, SHARED_PREFERENCES_NAME, ENTRY_PREFERENCES, importSharedPreferencesData(zipFile, context, SHARED_PREFERENCES_NAME, ENTRY_PREFERENCES,
new PreferencesExporterStrategy(SharedPreferenceConstants.class)); new PreferencesExporterStrategy(SharedPreferenceConstants.class));
} }
if (hasFlag(flags, FLAG_NICKNAMES)) { if (hasFlag(flags, FLAG_NICKNAMES)) {
importSharedPreferencesData(zipFile, context, USER_NICKNAME_PREFERENCES_NAME, ENTRY_NICKNAMES, importSharedPreferencesData(zipFile, context, USER_NICKNAME_PREFERENCES_NAME, ENTRY_NICKNAMES,
ConvertToStringProcessStrategy.SINGLETON); ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_USER_COLORS)) { if (hasFlag(flags, FLAG_USER_COLORS)) {
importSharedPreferencesData(zipFile, context, USER_COLOR_PREFERENCES_NAME, ENTRY_USER_COLORS, importSharedPreferencesData(zipFile, context, USER_COLOR_PREFERENCES_NAME, ENTRY_USER_COLORS,
ConvertToIntProcessStrategy.SINGLETON); ConvertToIntProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_HOST_MAPPING)) { if (hasFlag(flags, FLAG_HOST_MAPPING)) {
importSharedPreferencesData(zipFile, context, HOST_MAPPING_PREFERENCES_NAME, ENTRY_HOST_MAPPING, importSharedPreferencesData(zipFile, context, HOST_MAPPING_PREFERENCES_NAME, ENTRY_HOST_MAPPING,
ConvertToStringProcessStrategy.SINGLETON); ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_KEYBOARD_SHORTCUTS)) { if (hasFlag(flags, FLAG_KEYBOARD_SHORTCUTS)) {
importSharedPreferencesData(zipFile, context, KEYBOARD_SHORTCUTS_PREFERENCES_NAME, importSharedPreferencesData(zipFile, context, KEYBOARD_SHORTCUTS_PREFERENCES_NAME,
ENTRY_KEYBOARD_SHORTCUTS, ConvertToStringProcessStrategy.SINGLETON); ENTRY_KEYBOARD_SHORTCUTS, ConvertToStringProcessStrategy.SINGLETON);
} }
if (hasFlag(flags, FLAG_FILTERS)) { if (hasFlag(flags, FLAG_FILTERS)) {
importItem(context, zipFile, ENTRY_FILTERS, FiltersData.class, new ContentResolverProcessStrategy<FiltersData>() { importItem(context, zipFile, ENTRY_FILTERS, FiltersData.class, new ContentResolverProcessStrategy<FiltersData>() {
@Override @Override
public boolean importItem(ContentResolver cr, FiltersData filtersData) throws IOException { public boolean importItem(ContentResolver cr, FiltersData filtersData) throws IOException {
if (filtersData == null) return false; if (filtersData == null) return false;
insertBase(cr, Filters.Keywords.CONTENT_URI, filtersData.getKeywords()); insertBase(cr, Filters.Keywords.CONTENT_URI, filtersData.getKeywords());
insertBase(cr, Filters.Sources.CONTENT_URI, filtersData.getSources()); insertBase(cr, Filters.Sources.CONTENT_URI, filtersData.getSources());
insertBase(cr, Filters.Links.CONTENT_URI, filtersData.getLinks()); insertBase(cr, Filters.Links.CONTENT_URI, filtersData.getLinks());
insertUser(cr, Filters.Users.CONTENT_URI, filtersData.getUsers()); insertUser(cr, Filters.Users.CONTENT_URI, filtersData.getUsers());
return true; return true;
}
void insertBase(ContentResolver cr, Uri uri, List<FiltersData.BaseItem> items) throws IOException {
if (items == null) return;
final ObjectCursor.ValuesCreator<FiltersData.BaseItem> baseItemCreator =
ObjectCursor.valuesCreatorFrom(FiltersData.BaseItem.class);
List<ContentValues> values = new ArrayList<>(items.size());
for (FiltersData.BaseItem item : items) {
values.add(baseItemCreator.create(item));
} }
ContentResolverUtils.bulkInsert(cr, uri, values);
}
void insertUser(ContentResolver cr, Uri uri, List<FiltersData.UserItem> items) throws IOException { void insertBase(ContentResolver cr, Uri uri, List<FiltersData.BaseItem> items) throws IOException {
if (items == null) return; if (items == null) return;
final ObjectCursor.ValuesCreator<FiltersData.UserItem> userItemCreator = final ObjectCursor.ValuesCreator<FiltersData.BaseItem> baseItemCreator =
ObjectCursor.valuesCreatorFrom(FiltersData.UserItem.class); ObjectCursor.valuesCreatorFrom(FiltersData.BaseItem.class);
List<ContentValues> values = new ArrayList<>(items.size()); List<ContentValues> values = new ArrayList<>(items.size());
for (FiltersData.UserItem item : items) { for (FiltersData.BaseItem item : items) {
values.add(userItemCreator.create(item)); values.add(baseItemCreator.create(item));
}
ContentResolverUtils.bulkInsert(cr, uri, values);
} }
ContentResolverUtils.bulkInsert(cr, uri, values);
} void insertUser(ContentResolver cr, Uri uri, List<FiltersData.UserItem> items) throws IOException {
}); if (items == null) return;
} final ObjectCursor.ValuesCreator<FiltersData.UserItem> userItemCreator =
if (hasFlag(flags, FLAG_TABS)) { ObjectCursor.valuesCreatorFrom(FiltersData.UserItem.class);
final ObjectCursor.ValuesCreator<Tab> creator = ObjectCursor.valuesCreatorFrom(Tab.class); List<ContentValues> values = new ArrayList<>(items.size());
importItemsList(context, zipFile, ENTRY_TABS, Tab.class, new ContentResolverProcessStrategy<List<Tab>>() { for (FiltersData.UserItem item : items) {
@Override values.add(userItemCreator.create(item));
public boolean importItem(ContentResolver cr, List<Tab> items) throws IOException { }
ContentResolverUtils.bulkInsert(cr, uri, values);
}
});
}
if (hasFlag(flags, FLAG_TABS)) {
final ObjectCursor.ValuesCreator<Tab> creator = ObjectCursor.valuesCreatorFrom(Tab.class);
importItemsList(context, zipFile, ENTRY_TABS, Tab.class, (cr, items) -> {
if (items == null) return false; if (items == null) return false;
List<ContentValues> values = new ArrayList<>(items.size()); List<ContentValues> values = new ArrayList<>(items.size());
for (Tab item : items) { for (Tab item : items) {
@ -260,10 +258,9 @@ public class DataImportExportUtils implements Constants {
cr.delete(Tabs.CONTENT_URI, null, null); cr.delete(Tabs.CONTENT_URI, null, null);
ContentResolverUtils.bulkInsert(cr, Tabs.CONTENT_URI, values); ContentResolverUtils.bulkInsert(cr, Tabs.CONTENT_URI, values);
return true; return true;
} });
}); }
} }
zipFile.close();
} }
private static boolean hasFlag(final int flags, final int flag) { private static boolean hasFlag(final int flags, final int flag) {