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

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