Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
a300a6b0a0
7 changed files with 250 additions and 189 deletions
|
@ -32,6 +32,13 @@
|
||||||
android:id="@android:id/list"
|
android:id="@android:id/list"
|
||||||
style="@style/OsmandListView"
|
style="@style/OsmandListView"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent" />
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
|
||||||
|
<net.osmand.plus.activities.search.toolbar.SplitToolbar
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:id="@+id/bottomControls"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -54,7 +54,7 @@ public class ContributionVersionActivity extends OsmandListActivity {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
pathToDownload = getMyApplication().getAppPath("osmandToInstall.apk");
|
pathToDownload = getMyApplication().getAppPath("osmandToInstall.apk");
|
||||||
setContentView(android.R.layout.list_content);
|
setContentView(R.layout.default_list_view);
|
||||||
getSupportActionBar().setSubtitle(R.string.select_build_to_install);
|
getSupportActionBar().setSubtitle(R.string.select_build_to_install);
|
||||||
|
|
||||||
String installDate = getMyApplication().getSettings().CONTRIBUTION_INSTALL_APP_DATE.get();
|
String installDate = getMyApplication().getSettings().CONTRIBUTION_INSTALL_APP_DATE.get();
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
package net.osmand.plus.activities.search;
|
package net.osmand.plus.activities.search;
|
||||||
|
|
||||||
|
|
||||||
|
import android.support.v7.widget.Toolbar;
|
||||||
import gnu.trove.set.hash.TLongHashSet;
|
import gnu.trove.set.hash.TLongHashSet;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -131,10 +132,11 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
menu = getClearToolbar(true).getMenu();
|
||||||
boolean light = getMyApplication().getSettings().isLightActionBar();
|
boolean light = getMyApplication().getSettings().isLightActionBar();
|
||||||
searchPOILevel = menu.add(0, SEARCH_MORE, 0, R.string.search_POI_level_btn);
|
searchPOILevel = menu.add(0, SEARCH_MORE, 0, R.string.search_POI_level_btn);
|
||||||
MenuItemCompat.setShowAsAction(searchPOILevel,
|
MenuItemCompat.setShowAsAction(searchPOILevel,
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
|
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||||
searchPOILevel.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
searchPOILevel.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
@ -147,7 +149,7 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
|
|
||||||
showFilterItem = menu.add(0, FILTER, 0, R.string.search_poi_filter);
|
showFilterItem = menu.add(0, FILTER, 0, R.string.search_poi_filter);
|
||||||
MenuItemCompat.setShowAsAction(showFilterItem,
|
MenuItemCompat.setShowAsAction(showFilterItem,
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
|
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||||
showFilterItem = showFilterItem.setIcon(light ? R.drawable.ic_action_filter_light: R.drawable.ic_action_filter_dark);
|
showFilterItem = showFilterItem.setIcon(light ? R.drawable.ic_action_filter_light: R.drawable.ic_action_filter_dark);
|
||||||
showFilterItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
showFilterItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -179,7 +181,7 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
|
|
||||||
showOnMapItem = menu.add(0, SHOW_ON_MAP, 0, R.string.search_shown_on_map);
|
showOnMapItem = menu.add(0, SHOW_ON_MAP, 0, R.string.search_shown_on_map);
|
||||||
MenuItemCompat.setShowAsAction(showOnMapItem,
|
MenuItemCompat.setShowAsAction(showOnMapItem,
|
||||||
MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
|
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||||
showOnMapItem = showOnMapItem.setIcon(light ? R.drawable.ic_action_map_marker_light : R.drawable.ic_action_map_marker_dark);
|
showOnMapItem = showOnMapItem.setIcon(light ? R.drawable.ic_action_map_marker_light : R.drawable.ic_action_map_marker_dark);
|
||||||
showOnMapItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
showOnMapItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -200,6 +202,14 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Toolbar getClearToolbar(boolean visible) {
|
||||||
|
final Toolbar tb = (Toolbar) findViewById(R.id.bottomControls);
|
||||||
|
tb.setTitle(null);
|
||||||
|
tb.getMenu().clear();
|
||||||
|
tb.setVisibility(visible? View.VISIBLE : View.GONE);
|
||||||
|
return tb;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean searchMore() {
|
private boolean searchMore() {
|
||||||
String query = searchFilter.getText().toString().trim();
|
String query = searchFilter.getText().toString().trim();
|
||||||
if (query.length() < 2 && (isNameFinderFilter() || isSearchByNameFilter())) {
|
if (query.length() < 2 && (isNameFinderFilter() || isSearchByNameFilter())) {
|
||||||
|
|
|
@ -6,7 +6,6 @@ import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.media.Image;
|
|
||||||
import android.widget.*;
|
import android.widget.*;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.BasicProgressAsyncTask;
|
import net.osmand.plus.base.BasicProgressAsyncTask;
|
||||||
|
@ -20,7 +19,7 @@ import android.support.annotation.Nullable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import net.osmand.plus.helpers.DownloadFrequencyHelper;
|
import net.osmand.plus.helpers.DatabaseHelper;
|
||||||
import net.osmand.plus.helpers.FontCache;
|
import net.osmand.plus.helpers.FontCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,8 +78,9 @@ public class DashUpdatesFragment extends DashBaseFragment {
|
||||||
Collections.sort(itemList, new Comparator<IndexItem>() {
|
Collections.sort(itemList, new Comparator<IndexItem>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(IndexItem indexItem, IndexItem t1) {
|
public int compare(IndexItem indexItem, IndexItem t1) {
|
||||||
DownloadFrequencyHelper helper = BaseDownloadActivity.downloadListIndexThread.getDbHelper();
|
DatabaseHelper helper = BaseDownloadActivity.downloadListIndexThread.getDbHelper();
|
||||||
return (int)(helper.getCount(t1.getBasename()) - helper.getCount(indexItem.getBasename()));
|
return (int)(helper.getCount(t1.getBasename(), DatabaseHelper.DOWNLOAD_ENTRY) -
|
||||||
|
helper.getCount(indexItem.getBasename(), DatabaseHelper.DOWNLOAD_ENTRY));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
View mainView = getView();
|
View mainView = getView();
|
||||||
|
|
|
@ -24,7 +24,7 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.base.BasicProgressAsyncTask;
|
import net.osmand.plus.base.BasicProgressAsyncTask;
|
||||||
import net.osmand.plus.download.DownloadFileHelper.DownloadFileShowWarning;
|
import net.osmand.plus.download.DownloadFileHelper.DownloadFileShowWarning;
|
||||||
import net.osmand.plus.helpers.DownloadFrequencyHelper;
|
import net.osmand.plus.helpers.DatabaseHelper;
|
||||||
import net.osmand.plus.resources.ResourceManager;
|
import net.osmand.plus.resources.ResourceManager;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
@ -58,17 +58,17 @@ public class DownloadIndexesThread {
|
||||||
private java.text.DateFormat dateFormat;
|
private java.text.DateFormat dateFormat;
|
||||||
private List<IndexItem> itemsToUpdate = new ArrayList<IndexItem>();
|
private List<IndexItem> itemsToUpdate = new ArrayList<IndexItem>();
|
||||||
|
|
||||||
DownloadFrequencyHelper dbHelper;
|
DatabaseHelper dbHelper;
|
||||||
|
|
||||||
public DownloadIndexesThread(Context ctx) {
|
public DownloadIndexesThread(Context ctx) {
|
||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
app = (OsmandApplication) ctx.getApplicationContext();
|
app = (OsmandApplication) ctx.getApplicationContext();
|
||||||
downloadFileHelper = new DownloadFileHelper(app);
|
downloadFileHelper = new DownloadFileHelper(app);
|
||||||
dateFormat = app.getResourceManager().getDateFormat();
|
dateFormat = app.getResourceManager().getDateFormat();
|
||||||
dbHelper = new DownloadFrequencyHelper(app);
|
dbHelper = new DatabaseHelper(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DownloadFrequencyHelper getDbHelper(){
|
public DatabaseHelper getDbHelper(){
|
||||||
return dbHelper;
|
return dbHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,12 +155,12 @@ public class DownloadIndexesThread {
|
||||||
uiActivity.updateDownloadButton(false);
|
uiActivity.updateDownloadButton(false);
|
||||||
DownloadEntry item = (DownloadEntry)o;
|
DownloadEntry item = (DownloadEntry)o;
|
||||||
String name = item.item.getBasename();
|
String name = item.item.getBasename();
|
||||||
long count = dbHelper.getCount(name) + 1;
|
long count = dbHelper.getCount(name, DatabaseHelper.DOWNLOAD_ENTRY) + 1;
|
||||||
DownloadFrequencyHelper.HistoryEntry entry = new DownloadFrequencyHelper.HistoryEntry(name,count);
|
DatabaseHelper.HistoryEntry entry = new DatabaseHelper.HistoryEntry(name,count);
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
dbHelper.add(entry);
|
dbHelper.add(entry, DatabaseHelper.DOWNLOAD_ENTRY);
|
||||||
} else {
|
} else {
|
||||||
dbHelper.update(entry);
|
dbHelper.update(entry, DatabaseHelper.DOWNLOAD_ENTRY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (o instanceof IndexItem) {
|
} else if (o instanceof IndexItem) {
|
||||||
|
@ -170,8 +170,8 @@ public class DownloadIndexesThread {
|
||||||
uiActivity.updateDownloadButton(false);
|
uiActivity.updateDownloadButton(false);
|
||||||
IndexItem item = (IndexItem)o;
|
IndexItem item = (IndexItem)o;
|
||||||
|
|
||||||
long count = dbHelper.getCount(item.getBasename()) + 1;
|
long count = dbHelper.getCount(item.getBasename(), DatabaseHelper.DOWNLOAD_ENTRY) + 1;
|
||||||
dbHelper.add(new DownloadFrequencyHelper.HistoryEntry(item.getBasename(), count));
|
dbHelper.add(new DatabaseHelper.HistoryEntry(item.getBasename(), count), DatabaseHelper.DOWNLOAD_ENTRY);
|
||||||
}
|
}
|
||||||
} else if (o instanceof String) {
|
} else if (o instanceof String) {
|
||||||
String message = (String) o;
|
String message = (String) o;
|
||||||
|
|
214
OsmAnd/src/net/osmand/plus/helpers/DatabaseHelper.java
Normal file
214
OsmAnd/src/net/osmand/plus/helpers/DatabaseHelper.java
Normal file
|
@ -0,0 +1,214 @@
|
||||||
|
package net.osmand.plus.helpers;
|
||||||
|
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.api.SQLiteAPI;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Denis
|
||||||
|
* on 23.01.15.
|
||||||
|
*/
|
||||||
|
public class DatabaseHelper {
|
||||||
|
|
||||||
|
public static final int DOWNLOAD_ENTRY = 0;
|
||||||
|
public static final int FAVORITES_ENTRY = 1;
|
||||||
|
|
||||||
|
private static final String DB_NAME = "download_history"; //$NON-NLS-1$
|
||||||
|
private static final int DB_VERSION = 1;
|
||||||
|
|
||||||
|
private static final String DOWNLOADS_TABLE_NAME = "downloads"; //$NON-NLS-1$
|
||||||
|
private static final String FAVORITES_TABLE_NAME = "favorites"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private static final String HISTORY_COL_NAME = "name"; //$NON-NLS-1$
|
||||||
|
private static final String HISTORY_COL_COUNT = "count"; //$NON-NLS-1$
|
||||||
|
private static final String DOWNLOAD_TABLE_CREATE = "CREATE TABLE " + DOWNLOADS_TABLE_NAME + " (" + //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
HISTORY_COL_NAME + " TEXT, " + HISTORY_COL_COUNT + " long);"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
|
||||||
|
private static final String FAVORITES_TABLE_CREATE = "CREATE TABLE " + FAVORITES_TABLE_NAME + " (" + //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
HISTORY_COL_NAME + " TEXT, " + HISTORY_COL_COUNT + " long);"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
|
||||||
|
private OsmandApplication app;
|
||||||
|
|
||||||
|
public static class HistoryEntry {
|
||||||
|
long count;
|
||||||
|
String name;
|
||||||
|
|
||||||
|
public HistoryEntry(String name, long count){
|
||||||
|
this.count = count;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCount() {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public DatabaseHelper(OsmandApplication context) {
|
||||||
|
app = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SQLiteAPI.SQLiteConnection openConnection(boolean readonly) {
|
||||||
|
SQLiteAPI.SQLiteConnection conn = app.getSQLiteAPI().getOrCreateDatabase(DB_NAME, readonly);
|
||||||
|
if (conn.getVersion() == 0 || DB_VERSION != conn.getVersion()) {
|
||||||
|
if (readonly) {
|
||||||
|
conn.close();
|
||||||
|
conn = app.getSQLiteAPI().getOrCreateDatabase(DB_NAME, true);
|
||||||
|
}
|
||||||
|
if (conn.getVersion() == 0) {
|
||||||
|
conn.setVersion(DB_VERSION);
|
||||||
|
onCreate(conn);
|
||||||
|
} else {
|
||||||
|
onUpgrade(conn, conn.getVersion(), DB_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCreate(SQLiteAPI.SQLiteConnection db) {
|
||||||
|
db.execSQL(DOWNLOAD_TABLE_CREATE);
|
||||||
|
db.execSQL(FAVORITES_TABLE_CREATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpgrade(SQLiteAPI.SQLiteConnection db, int oldVersion, int newVersion) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean remove(HistoryEntry e, int type){
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
switch (type){
|
||||||
|
case DOWNLOAD_ENTRY:
|
||||||
|
db.execSQL("DELETE FROM " + DOWNLOADS_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
|
case FAVORITES_ENTRY:
|
||||||
|
db.execSQL("DELETE FROM " + FAVORITES_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removeAll(){
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
db.execSQL("DELETE FROM " + DOWNLOADS_TABLE_NAME); //$NON-NLS-1$
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean update(HistoryEntry e, int type){
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
switch (type) {
|
||||||
|
case DOWNLOAD_ENTRY:
|
||||||
|
db.execSQL("UPDATE " + DOWNLOADS_TABLE_NAME + " SET " + HISTORY_COL_COUNT + " = ? WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getCount(), e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
|
case FAVORITES_ENTRY:
|
||||||
|
db.execSQL("UPDATE " + FAVORITES_TABLE_NAME + " SET " + HISTORY_COL_COUNT + " = ? WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getCount(), e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean add(HistoryEntry e, int type){
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
switch (type) {
|
||||||
|
case DOWNLOAD_ENTRY:
|
||||||
|
db.execSQL("INSERT INTO " + DOWNLOADS_TABLE_NAME + " VALUES (?, ?)", new Object[] { e.getName(), e.getCount()}); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
case FAVORITES_ENTRY:
|
||||||
|
db.execSQL("INSERT INTO " + FAVORITES_TABLE_NAME + " VALUES (?, ?)", new Object[] { e.getName(), e.getCount()}); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCount(String name, int type) {
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(true);
|
||||||
|
long count = 0;
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
SQLiteAPI.SQLiteCursor query;
|
||||||
|
switch (type) {
|
||||||
|
case DOWNLOAD_ENTRY:
|
||||||
|
query = db.rawQuery(
|
||||||
|
"SELECT " + HISTORY_COL_COUNT + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
|
DOWNLOADS_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + "='" + name + "'", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
case FAVORITES_ENTRY:
|
||||||
|
query = db.rawQuery(
|
||||||
|
"SELECT " + HISTORY_COL_COUNT + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
|
FAVORITES_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + "='" + name + "'", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
default:
|
||||||
|
query = db.rawQuery("not supported", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
}
|
||||||
|
|
||||||
|
if (query.moveToFirst()) {
|
||||||
|
do {
|
||||||
|
count = query.getInt(0);
|
||||||
|
} while (query.moveToNext());
|
||||||
|
}
|
||||||
|
query.close();
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HistoryEntry> getEntries(int type){
|
||||||
|
List<HistoryEntry> entries = new ArrayList<HistoryEntry>();
|
||||||
|
SQLiteAPI.SQLiteConnection db = openConnection(true);
|
||||||
|
if(db != null){
|
||||||
|
try {
|
||||||
|
SQLiteAPI.SQLiteCursor query;
|
||||||
|
switch (type) {
|
||||||
|
case DOWNLOAD_ENTRY:
|
||||||
|
query = db.rawQuery(
|
||||||
|
"SELECT " + HISTORY_COL_NAME + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
|
DOWNLOADS_TABLE_NAME + " ORDER BY " + HISTORY_COL_COUNT + " DESC", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
case FAVORITES_ENTRY:
|
||||||
|
query = db.rawQuery(
|
||||||
|
"SELECT " + HISTORY_COL_NAME + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
|
FAVORITES_TABLE_NAME + " ORDER BY " + HISTORY_COL_COUNT + " DESC", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
default:
|
||||||
|
query = db.rawQuery("not supported", null); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
|
}
|
||||||
|
if (query.moveToFirst()) {
|
||||||
|
do {
|
||||||
|
HistoryEntry e = new HistoryEntry(query.getString(0), query.getInt(1));
|
||||||
|
entries.add(e);
|
||||||
|
} while (query.moveToNext());
|
||||||
|
}
|
||||||
|
query.close();
|
||||||
|
} finally {
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,170 +0,0 @@
|
||||||
package net.osmand.plus.helpers;
|
|
||||||
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.api.SQLiteAPI;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Denis
|
|
||||||
* on 23.01.15.
|
|
||||||
*/
|
|
||||||
public class DownloadFrequencyHelper {
|
|
||||||
|
|
||||||
private static final String DB_NAME = "download_history"; //$NON-NLS-1$
|
|
||||||
private static final int DB_VERSION = 1;
|
|
||||||
private static final String HISTORY_TABLE_NAME = "history"; //$NON-NLS-1$
|
|
||||||
private static final String HISTORY_COL_NAME = "name"; //$NON-NLS-1$
|
|
||||||
private static final String HISTORY_COL_COUNT = "count"; //$NON-NLS-1$
|
|
||||||
private static final String HISTORY_TABLE_CREATE = "CREATE TABLE " + HISTORY_TABLE_NAME + " (" + //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
HISTORY_COL_NAME + " TEXT, " + HISTORY_COL_COUNT + " long);"; //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
|
|
||||||
private OsmandApplication app;
|
|
||||||
|
|
||||||
public static class HistoryEntry {
|
|
||||||
long count;
|
|
||||||
String name;
|
|
||||||
|
|
||||||
public HistoryEntry(String name, long count){
|
|
||||||
this.count = count;
|
|
||||||
this.name = name;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getCount() {
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public DownloadFrequencyHelper(OsmandApplication context) {
|
|
||||||
app = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SQLiteAPI.SQLiteConnection openConnection(boolean readonly) {
|
|
||||||
SQLiteAPI.SQLiteConnection conn = app.getSQLiteAPI().getOrCreateDatabase(DB_NAME, readonly);
|
|
||||||
if (conn.getVersion() == 0 || DB_VERSION != conn.getVersion()) {
|
|
||||||
if (readonly) {
|
|
||||||
conn.close();
|
|
||||||
conn = app.getSQLiteAPI().getOrCreateDatabase(DB_NAME, true);
|
|
||||||
}
|
|
||||||
if (conn.getVersion() == 0) {
|
|
||||||
conn.setVersion(DB_VERSION);
|
|
||||||
onCreate(conn);
|
|
||||||
} else {
|
|
||||||
onUpgrade(conn, conn.getVersion(), DB_VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onCreate(SQLiteAPI.SQLiteConnection db) {
|
|
||||||
db.execSQL(HISTORY_TABLE_CREATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onUpgrade(SQLiteAPI.SQLiteConnection db, int oldVersion, int newVersion) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean remove(HistoryEntry e){
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
db.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean removeAll(){
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
db.execSQL("DELETE FROM " + HISTORY_TABLE_NAME); //$NON-NLS-1$
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean update(HistoryEntry e){
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
db.execSQL(
|
|
||||||
"UPDATE " + HISTORY_TABLE_NAME + " SET " + HISTORY_COL_COUNT + " = ? WHERE " + HISTORY_COL_NAME + " = ?", new Object[] { e.getCount(), e.getName() }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean add(HistoryEntry e){
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(false);
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
db.execSQL(
|
|
||||||
"INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?)", new Object[] { e.getName(), e.getCount()}); //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getCount(String name) {
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(true);
|
|
||||||
long count = 0;
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
SQLiteAPI.SQLiteCursor query = db.rawQuery(
|
|
||||||
"SELECT " + HISTORY_COL_COUNT + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
|
||||||
HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_NAME + "='" + name + "'", null); //$NON-NLS-1$//$NON-NLS-2$
|
|
||||||
if (query.moveToFirst()) {
|
|
||||||
do {
|
|
||||||
count = query.getInt(0);
|
|
||||||
} while (query.moveToNext());
|
|
||||||
}
|
|
||||||
query.close();
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<HistoryEntry> getEntries(){
|
|
||||||
List<HistoryEntry> entries = new ArrayList<HistoryEntry>();
|
|
||||||
SQLiteAPI.SQLiteConnection db = openConnection(true);
|
|
||||||
if(db != null){
|
|
||||||
try {
|
|
||||||
SQLiteAPI.SQLiteCursor query = db.rawQuery(
|
|
||||||
"SELECT " + HISTORY_COL_NAME + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
|
||||||
HISTORY_TABLE_NAME + " ORDER BY " + HISTORY_COL_COUNT + " DESC", null); //$NON-NLS-1$//$NON-NLS-2$
|
|
||||||
if (query.moveToFirst()) {
|
|
||||||
do {
|
|
||||||
HistoryEntry e = new HistoryEntry(query.getString(0), query.getInt(1));
|
|
||||||
entries.add(e);
|
|
||||||
} while (query.moveToNext());
|
|
||||||
}
|
|
||||||
query.close();
|
|
||||||
} finally {
|
|
||||||
db.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue