Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/services/QuickConnectHistoryGateway.java

Packit 1fb8d4
/*
Packit 1fb8d4
   Quick connect history gateway
Packit 1fb8d4
Packit 1fb8d4
   Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
Packit 1fb8d4
Packit Service 5a9772
   This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
Packit Service 5a9772
   If a copy of the MPL was not distributed with this file, You can obtain one at
Packit Service 5a9772
   http://mozilla.org/MPL/2.0/.
Packit 1fb8d4
*/
Packit 1fb8d4
Packit 1fb8d4
package com.freerdp.freerdpcore.services;
Packit 1fb8d4
Packit 1fb8d4
import android.database.Cursor;
Packit 1fb8d4
import android.database.SQLException;
Packit 1fb8d4
import android.database.sqlite.SQLiteDatabase;
Packit 1fb8d4
import android.database.sqlite.SQLiteException;
Packit 1fb8d4
import android.database.sqlite.SQLiteOpenHelper;
Packit 1fb8d4
import android.util.Log;
Packit 1fb8d4
Packit 1fb8d4
import com.freerdp.freerdpcore.domain.BookmarkBase;
Packit 1fb8d4
import com.freerdp.freerdpcore.domain.QuickConnectBookmark;
Packit 1fb8d4
Packit 1fb8d4
import java.util.ArrayList;
Packit 1fb8d4
Packit Service 5a9772
public class QuickConnectHistoryGateway
Packit Service 5a9772
{
Packit Service 5a9772
	private final static String TAG = "QuickConnectHistoryGateway";
Packit Service 5a9772
	private SQLiteOpenHelper historyDB;
Packit Service 5a9772
Packit Service 5a9772
	public QuickConnectHistoryGateway(SQLiteOpenHelper historyDB)
Packit Service 5a9772
	{
Packit Service 5a9772
		this.historyDB = historyDB;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	public ArrayList<BookmarkBase> findHistory(String filter)
Packit Service 5a9772
	{
Packit Service 5a9772
		String[] column = { HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM };
Packit Service 5a9772
Packit Service 5a9772
		SQLiteDatabase db = getReadableDatabase();
Packit Service 5a9772
		String selection =
Packit Service 5a9772
		    (filter.length() > 0)
Packit Service 5a9772
		        ? (HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM + " LIKE '%" + filter + "%'")
Packit Service 5a9772
		        : null;
Packit Service 5a9772
		Cursor cursor = db.query(HistoryDB.QUICK_CONNECT_TABLE_NAME, column, selection, null, null,
Packit Service 5a9772
		                         null, HistoryDB.QUICK_CONNECT_TABLE_COL_TIMESTAMP);
Packit Service 5a9772
Packit Service 5a9772
		ArrayList<BookmarkBase> result = new ArrayList<BookmarkBase>(cursor.getCount());
Packit Service 5a9772
		if (cursor.moveToFirst())
Packit Service 5a9772
		{
Packit Service 5a9772
			do
Packit Service 5a9772
			{
Packit Service 5a9772
				String hostname =
Packit Service 5a9772
				    cursor.getString(cursor.getColumnIndex(HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM));
Packit Service 5a9772
				QuickConnectBookmark bookmark = new QuickConnectBookmark();
Packit Service 5a9772
				bookmark.setLabel(hostname);
Packit Service 5a9772
				bookmark.setHostname(hostname);
Packit Service 5a9772
				result.add(bookmark);
Packit Service 5a9772
			} while (cursor.moveToNext());
Packit Service 5a9772
		}
Packit Service 5a9772
		cursor.close();
Packit Service 5a9772
		return result;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	public void addHistoryItem(String item)
Packit Service 5a9772
	{
Packit Service 5a9772
		String insertHistoryItem = "INSERT OR REPLACE INTO " + HistoryDB.QUICK_CONNECT_TABLE_NAME +
Packit Service 5a9772
		                           " (" + HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM + ", " +
Packit Service 5a9772
		                           HistoryDB.QUICK_CONNECT_TABLE_COL_TIMESTAMP + ") VALUES('" +
Packit Service 5a9772
		                           item + "', datetime('now'))";
Packit Service 5a9772
		SQLiteDatabase db = getWritableDatabase();
Packit Service 5a9772
		try
Packit Service 5a9772
		{
Packit Service 5a9772
			db.execSQL(insertHistoryItem);
Packit Service 5a9772
		}
Packit Service 5a9772
		catch (SQLException e)
Packit Service 5a9772
		{
Packit Service 5a9772
			Log.v(TAG, e.toString());
Packit Service 5a9772
		}
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	public boolean historyItemExists(String item)
Packit Service 5a9772
	{
Packit Service 5a9772
		String[] column = { HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM };
Packit Service 5a9772
		SQLiteDatabase db = getReadableDatabase();
Packit Service 5a9772
		Cursor cursor = db.query(HistoryDB.QUICK_CONNECT_TABLE_NAME, column,
Packit Service 5a9772
		                         HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM + " = '" + item + "'", null,
Packit Service 5a9772
		                         null, null, null);
Packit Service 5a9772
		boolean exists = (cursor.getCount() == 1);
Packit Service 5a9772
		cursor.close();
Packit Service 5a9772
		return exists;
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	public void removeHistoryItem(String hostname)
Packit Service 5a9772
	{
Packit Service 5a9772
		SQLiteDatabase db = getWritableDatabase();
Packit Service 5a9772
		db.delete(HistoryDB.QUICK_CONNECT_TABLE_NAME,
Packit Service 5a9772
		          HistoryDB.QUICK_CONNECT_TABLE_COL_ITEM + " = '" + hostname + "'", null);
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	// safety wrappers
Packit Service 5a9772
	// in case of getReadableDatabase it could happen that upgradeDB gets called which is
Packit Service 5a9772
	// a problem if the DB is only readable
Packit Service 5a9772
	private SQLiteDatabase getWritableDatabase()
Packit Service 5a9772
	{
Packit Service 5a9772
		return historyDB.getWritableDatabase();
Packit Service 5a9772
	}
Packit Service 5a9772
Packit Service 5a9772
	private SQLiteDatabase getReadableDatabase()
Packit Service 5a9772
	{
Packit Service 5a9772
		SQLiteDatabase db;
Packit Service 5a9772
		try
Packit Service 5a9772
		{
Packit Service 5a9772
			db = historyDB.getReadableDatabase();
Packit Service 5a9772
		}
Packit Service 5a9772
		catch (SQLiteException e)
Packit Service 5a9772
		{
Packit Service 5a9772
			db = historyDB.getWritableDatabase();
Packit Service 5a9772
		}
Packit Service 5a9772
		return db;
Packit Service 5a9772
	}
Packit 1fb8d4
}