From 8f8ddbf9b457362e28d8b873ed208c00b871c116 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 1 Feb 2021 01:59:58 +0200 Subject: [PATCH] Try to remove duplicate code --- .../backend/backup/SettingsHelper.java | 54 +---- .../fragments/ImportSettingsFragment.java | 210 +----------------- 2 files changed, 11 insertions(+), 253 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java index 9a50851a56..11fe377040 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java @@ -728,6 +728,8 @@ public class SettingsHelper { } catch (IllegalArgumentException e) { LOG.warn("Trying to export unsuported file type", e); } + } else if (object instanceof FileSettingsItem) { + result.add((FileSettingsItem) object); } else if (object instanceof AvoidRoadInfo) { avoidRoads.add((AvoidRoadInfo) object); } else if (object instanceof ApplicationModeBean) { @@ -754,16 +756,20 @@ public class SettingsHelper { } } if (!quickActions.isEmpty()) { - result.add(new QuickActionsSettingsItem(app, getBaseQuickActionsSettingsItem(settingsItems), quickActions)); + QuickActionsSettingsItem baseItem = getBaseItem(SettingsItemType.QUICK_ACTIONS, QuickActionsSettingsItem.class, settingsItems); + result.add(new QuickActionsSettingsItem(app, baseItem, quickActions)); } if (!poiUIFilters.isEmpty()) { - result.add(new PoiUiFiltersSettingsItem(app, getBasePoiUiFiltersSettingsItem(settingsItems), poiUIFilters)); + PoiUiFiltersSettingsItem baseItem = getBaseItem(SettingsItemType.POI_UI_FILTERS, PoiUiFiltersSettingsItem.class, settingsItems); + result.add(new PoiUiFiltersSettingsItem(app, baseItem, poiUIFilters)); } if (!tileSourceTemplates.isEmpty()) { - result.add(new MapSourcesSettingsItem(app, getBaseMapSourcesSettingsItem(settingsItems), tileSourceTemplates)); + MapSourcesSettingsItem baseItem = getBaseItem(SettingsItemType.MAP_SOURCES, MapSourcesSettingsItem.class, settingsItems); + result.add(new MapSourcesSettingsItem(app, baseItem, tileSourceTemplates)); } if (!avoidRoads.isEmpty()) { - result.add(new AvoidRoadsSettingsItem(app, getBaseAvoidRoadsSettingsItem(settingsItems), avoidRoads)); + AvoidRoadsSettingsItem baseItem = getBaseItem(SettingsItemType.AVOID_ROADS, AvoidRoadsSettingsItem.class, settingsItems); + result.add(new AvoidRoadsSettingsItem(app, baseItem, avoidRoads)); } if (!appModeBeans.isEmpty()) { for (ApplicationModeBean modeBean : appModeBeans) { @@ -830,46 +836,6 @@ public class SettingsHelper { return null; } - @Nullable - private QuickActionsSettingsItem getBaseQuickActionsSettingsItem(List settingsItems) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.QUICK_ACTIONS) { - return (QuickActionsSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private PoiUiFiltersSettingsItem getBasePoiUiFiltersSettingsItem(List settingsItems) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.POI_UI_FILTERS) { - return (PoiUiFiltersSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private MapSourcesSettingsItem getBaseMapSourcesSettingsItem(List settingsItems) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.MAP_SOURCES) { - return (MapSourcesSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private AvoidRoadsSettingsItem getBaseAvoidRoadsSettingsItem(List settingsItems) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.AVOID_ROADS) { - return (AvoidRoadsSettingsItem) settingsItem; - } - } - return null; - } - @Nullable private T getBaseItem(SettingsItemType settingsItemType, Class clazz, List settingsItems) { for (SettingsItem settingsItem : settingsItems) { diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java index 83a271b059..b614bc57dd 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java @@ -18,57 +18,24 @@ import androidx.fragment.app.FragmentManager; import com.google.android.material.appbar.CollapsingToolbarLayout; -import net.osmand.IndexConstants; import net.osmand.PlatformUtil; -import net.osmand.map.ITileSource; -import net.osmand.map.TileSourceManager.TileSourceTemplate; import net.osmand.plus.AppInitializer; -import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; -import net.osmand.plus.SQLiteTileSource; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.download.ReloadIndexesTask; import net.osmand.plus.download.ReloadIndexesTask.ReloadIndexesListener; -import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; -import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; -import net.osmand.plus.mapmarkers.MapMarker; -import net.osmand.plus.mapmarkers.MapMarkersGroup; -import net.osmand.plus.onlinerouting.engine.OnlineRoutingEngine; -import net.osmand.plus.osmedit.OpenstreetmapPoint; -import net.osmand.plus.osmedit.OsmNotesPoint; -import net.osmand.plus.poi.PoiUIFilter; -import net.osmand.plus.quickaction.QuickAction; -import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; -import net.osmand.plus.settings.backend.ExportSettingsType; -import net.osmand.plus.settings.backend.backup.AvoidRoadsSettingsItem; -import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem; import net.osmand.plus.settings.backend.backup.FileSettingsItem; -import net.osmand.plus.settings.backend.backup.GlobalSettingsItem; -import net.osmand.plus.settings.backend.backup.GpxSettingsItem; -import net.osmand.plus.settings.backend.backup.HistoryMarkersSettingsItem; -import net.osmand.plus.settings.backend.backup.MapSourcesSettingsItem; -import net.osmand.plus.settings.backend.backup.MarkersSettingsItem; -import net.osmand.plus.settings.backend.backup.OnlineRoutingSettingsItem; -import net.osmand.plus.settings.backend.backup.OsmEditsSettingsItem; -import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem; -import net.osmand.plus.settings.backend.backup.PoiUiFiltersSettingsItem; -import net.osmand.plus.settings.backend.backup.ProfileSettingsItem; -import net.osmand.plus.settings.backend.backup.QuickActionsSettingsItem; -import net.osmand.plus.settings.backend.backup.SearchHistorySettingsItem; import net.osmand.plus.settings.backend.backup.SettingsHelper; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask; import net.osmand.plus.settings.backend.backup.SettingsItem; -import net.osmand.plus.settings.backend.backup.SettingsItemType; -import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; import java.io.File; import java.lang.ref.WeakReference; -import java.util.ArrayList; import java.util.List; public class ImportSettingsFragment extends BaseSettingsListFragment { @@ -177,7 +144,7 @@ public class ImportSettingsFragment extends BaseSettingsListFragment { } private void importItems() { - List selectedItems = getSettingsItemsFromData(adapter.getData()); + List selectedItems = settingsHelper.prepareSettingsItems(adapter.getData(), settingsItems, false); if (file != null && settingsItems != null) { duplicateStartTime = System.currentTimeMillis(); settingsHelper.checkDuplicates(file, settingsItems, selectedItems, getDuplicatesListener()); @@ -272,181 +239,6 @@ public class ImportSettingsFragment extends BaseSettingsListFragment { this.settingsItems = settingsItems; } - @Nullable - private ProfileSettingsItem getBaseProfileSettingsItem(ApplicationModeBean modeBean) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.PROFILE) { - ProfileSettingsItem profileItem = (ProfileSettingsItem) settingsItem; - ApplicationModeBean bean = profileItem.getModeBean(); - if (Algorithms.objectEquals(bean.stringKey, modeBean.stringKey) && Algorithms.objectEquals(bean.userProfileName, modeBean.userProfileName)) { - return profileItem; - } - } - } - return null; - } - - @Nullable - private QuickActionsSettingsItem getBaseQuickActionsSettingsItem() { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.QUICK_ACTIONS) { - return (QuickActionsSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private PoiUiFiltersSettingsItem getBasePoiUiFiltersSettingsItem() { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.POI_UI_FILTERS) { - return (PoiUiFiltersSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private MapSourcesSettingsItem getBaseMapSourcesSettingsItem() { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.MAP_SOURCES) { - return (MapSourcesSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private AvoidRoadsSettingsItem getBaseAvoidRoadsSettingsItem() { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == SettingsItemType.AVOID_ROADS) { - return (AvoidRoadsSettingsItem) settingsItem; - } - } - return null; - } - - @Nullable - private T getBaseItem(SettingsItemType settingsItemType, Class clazz) { - for (SettingsItem settingsItem : settingsItems) { - if (settingsItem.getType() == settingsItemType && clazz.isInstance(settingsItem)) { - return clazz.cast(settingsItem); - } - } - return null; - } - - private List getSettingsItemsFromData(List data) { - List settingsItems = new ArrayList<>(); - List appModeBeans = new ArrayList<>(); - List quickActions = new ArrayList<>(); - List poiUIFilters = new ArrayList<>(); - List tileSourceTemplates = new ArrayList<>(); - List avoidRoads = new ArrayList<>(); - List osmNotesPointList = new ArrayList<>(); - List osmEditsPointList = new ArrayList<>(); - List favoriteGroups = new ArrayList<>(); - List markersGroups = new ArrayList<>(); - List markersHistoryGroups = new ArrayList<>(); - List historyEntries = new ArrayList<>(); - List onlineRoutingEngines = new ArrayList<>(); - for (Object object : data) { - if (object instanceof ApplicationModeBean) { - appModeBeans.add((ApplicationModeBean) object); - } else if (object instanceof QuickAction) { - quickActions.add((QuickAction) object); - } else if (object instanceof PoiUIFilter) { - poiUIFilters.add((PoiUIFilter) object); - } else if (object instanceof TileSourceTemplate || object instanceof SQLiteTileSource) { - tileSourceTemplates.add((ITileSource) object); - } else if (object instanceof File) { - File file = (File) object; - if (file.getName().endsWith(IndexConstants.GPX_FILE_EXT)) { - settingsItems.add(new GpxSettingsItem(app, file)); - } else { - settingsItems.add(new FileSettingsItem(app, file)); - } - } else if (object instanceof FileSettingsItem) { - settingsItems.add((FileSettingsItem) object); - } else if (object instanceof AvoidRoadInfo) { - avoidRoads.add((AvoidRoadInfo) object); - } else if (object instanceof OsmNotesPoint) { - osmNotesPointList.add((OsmNotesPoint) object); - } else if (object instanceof OpenstreetmapPoint) { - osmEditsPointList.add((OpenstreetmapPoint) object); - } else if (object instanceof FavoriteGroup) { - favoriteGroups.add((FavoriteGroup) object); - } else if (object instanceof GlobalSettingsItem) { - settingsItems.add((GlobalSettingsItem) object); - } else if (object instanceof MapMarkersGroup) { - MapMarkersGroup markersGroup = (MapMarkersGroup) object; - if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) { - markersGroups.add((MapMarkersGroup) object); - } else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) { - markersHistoryGroups.add((MapMarkersGroup) object); - } - } else if (object instanceof HistoryEntry) { - historyEntries.add((HistoryEntry) object); - } else if (object instanceof OnlineRoutingEngine) { - onlineRoutingEngines.add((OnlineRoutingEngine) object); - } - } - if (!appModeBeans.isEmpty()) { - for (ApplicationModeBean modeBean : appModeBeans) { - settingsItems.add(new ProfileSettingsItem(app, getBaseProfileSettingsItem(modeBean), modeBean)); - } - } - if (!quickActions.isEmpty()) { - settingsItems.add(new QuickActionsSettingsItem(app, getBaseQuickActionsSettingsItem(), quickActions)); - } - if (!poiUIFilters.isEmpty()) { - settingsItems.add(new PoiUiFiltersSettingsItem(app, getBasePoiUiFiltersSettingsItem(), poiUIFilters)); - } - if (!tileSourceTemplates.isEmpty()) { - settingsItems.add(new MapSourcesSettingsItem(app, getBaseMapSourcesSettingsItem(), tileSourceTemplates)); - } - if (!avoidRoads.isEmpty()) { - settingsItems.add(new AvoidRoadsSettingsItem(app, getBaseAvoidRoadsSettingsItem(), avoidRoads)); - } - if (!osmNotesPointList.isEmpty()) { - OsmNotesSettingsItem baseItem = getBaseItem(SettingsItemType.OSM_NOTES, OsmNotesSettingsItem.class); - settingsItems.add(new OsmNotesSettingsItem(app, baseItem, osmNotesPointList)); - } - if (!osmEditsPointList.isEmpty()) { - OsmEditsSettingsItem baseItem = getBaseItem(SettingsItemType.OSM_EDITS, OsmEditsSettingsItem.class); - settingsItems.add(new OsmEditsSettingsItem(app, baseItem, osmEditsPointList)); - } - if (!favoriteGroups.isEmpty()) { - FavoritesSettingsItem baseItem = getBaseItem(SettingsItemType.FAVOURITES, FavoritesSettingsItem.class); - settingsItems.add(new FavoritesSettingsItem(app, baseItem, favoriteGroups)); - } - if (!markersGroups.isEmpty()) { - List mapMarkers = new ArrayList<>(); - for (MapMarkersGroup group : markersGroups) { - mapMarkers.addAll(group.getMarkers()); - } - MarkersSettingsItem baseItem = getBaseItem(SettingsItemType.ACTIVE_MARKERS, MarkersSettingsItem.class); - settingsItems.add(new MarkersSettingsItem(app, baseItem, mapMarkers)); - } - if (!markersHistoryGroups.isEmpty()) { - List mapMarkers = new ArrayList<>(); - for (MapMarkersGroup group : markersHistoryGroups) { - mapMarkers.addAll(group.getMarkers()); - } - HistoryMarkersSettingsItem baseItem = getBaseItem(SettingsItemType.HISTORY_MARKERS, HistoryMarkersSettingsItem.class); - settingsItems.add(new HistoryMarkersSettingsItem(app, baseItem, mapMarkers)); - } - if (!historyEntries.isEmpty()) { - SearchHistorySettingsItem baseItem = getBaseItem(SettingsItemType.SEARCH_HISTORY, SearchHistorySettingsItem.class); - settingsItems.add(new SearchHistorySettingsItem(app, baseItem, historyEntries)); - } - if (!onlineRoutingEngines.isEmpty()) { - OnlineRoutingSettingsItem baseItem = getBaseItem(SettingsItemType.ONLINE_ROUTING_ENGINES, OnlineRoutingSettingsItem.class); - settingsItems.add(new OnlineRoutingSettingsItem(app, baseItem, onlineRoutingEngines)); - } - return settingsItems; - } - public void setFile(File file) { this.file = file; }