Added MovedCertificatesStorage, only list moved system certs in GUI.
This commit is contained in:
parent
5159fa88b1
commit
9cbfa8bf86
3 changed files with 166 additions and 1 deletions
|
@ -0,0 +1,66 @@
|
||||||
|
package com.nutomic.zertman.test;
|
||||||
|
|
||||||
|
import android.test.AndroidTestCase;
|
||||||
|
import android.test.suitebuilder.annotation.MediumTest;
|
||||||
|
import android.test.suitebuilder.annotation.SmallTest;
|
||||||
|
|
||||||
|
import com.nutomic.zertman.Certificate;
|
||||||
|
import com.nutomic.zertman.MovedCertificatesStorage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: This test works on the app's actual data.
|
||||||
|
*/
|
||||||
|
public class MovedCertificatesStorageTest extends AndroidTestCase {
|
||||||
|
|
||||||
|
private MovedCertificatesStorage mMovedCertificatesStorage;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
mMovedCertificatesStorage = new MovedCertificatesStorage(getContext());
|
||||||
|
assertTrue(mMovedCertificatesStorage.list().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tearDown() throws Exception {
|
||||||
|
super.tearDown();
|
||||||
|
|
||||||
|
mMovedCertificatesStorage.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public void testInvalidInsert() {
|
||||||
|
assertFalse(mMovedCertificatesStorage.insert(new Certificate("user", false)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public void testInvalidDelete() {
|
||||||
|
assertFalse(mMovedCertificatesStorage.delete(new Certificate("cert", true)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public void testDuplicateInsert() {
|
||||||
|
Certificate c = new Certificate("dupe", true);
|
||||||
|
assertTrue(mMovedCertificatesStorage.insert(c));
|
||||||
|
assertFalse(mMovedCertificatesStorage.insert(c));
|
||||||
|
assertTrue(mMovedCertificatesStorage.delete(c));
|
||||||
|
}
|
||||||
|
|
||||||
|
@MediumTest
|
||||||
|
public void testStorage() {
|
||||||
|
Certificate c1 = new Certificate("first", true);
|
||||||
|
Certificate c2 = new Certificate("second", true);
|
||||||
|
assertTrue(mMovedCertificatesStorage.insert(c1));
|
||||||
|
assertTrue(mMovedCertificatesStorage.insert(c2));
|
||||||
|
List<Certificate> list = mMovedCertificatesStorage.list();
|
||||||
|
assertEquals(list.get(0), c1);
|
||||||
|
assertEquals(list.get(1), c2);
|
||||||
|
assertTrue(mMovedCertificatesStorage.delete(c1));
|
||||||
|
assertTrue(mMovedCertificatesStorage.delete(c2));
|
||||||
|
assertTrue(mMovedCertificatesStorage.list().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,6 +13,8 @@ public class MainActivity extends ListActivity {
|
||||||
|
|
||||||
private CertificateManager mCertificateManager;
|
private CertificateManager mCertificateManager;
|
||||||
|
|
||||||
|
private MovedCertificatesStorage mMovedCertificatesStorage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets up ListView showing all certificates.
|
* Sets up ListView showing all certificates.
|
||||||
*/
|
*/
|
||||||
|
@ -23,8 +25,10 @@ public class MainActivity extends ListActivity {
|
||||||
mListView = getListView();
|
mListView = getListView();
|
||||||
mCertificateAdapter = new CertificateAdapter(this);
|
mCertificateAdapter = new CertificateAdapter(this);
|
||||||
mCertificateManager = new CertificateManager();
|
mCertificateManager = new CertificateManager();
|
||||||
|
mMovedCertificatesStorage = new MovedCertificatesStorage(this);
|
||||||
|
|
||||||
mCertificateAdapter.addAll(mCertificateManager.getCertificates(false));
|
mCertificateAdapter.addAll(mCertificateManager.getCertificates(false));
|
||||||
mCertificateAdapter.addAll(mCertificateManager.getCertificates(true));
|
mCertificateAdapter.addAll(mMovedCertificatesStorage.list());
|
||||||
mListView.setAdapter(mCertificateAdapter);
|
mListView.setAdapter(mCertificateAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
package com.nutomic.zertman;
|
||||||
|
|
||||||
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
import android.provider.BaseColumns;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keeps information about certificates that have been moved to system memory.
|
||||||
|
*/
|
||||||
|
public class MovedCertificatesStorage implements Closeable {
|
||||||
|
|
||||||
|
private static final String TAG = "MovedCertificatesStorage";
|
||||||
|
|
||||||
|
|
||||||
|
private MovedCertificatesHelper mDbHelper;
|
||||||
|
|
||||||
|
public MovedCertificatesStorage(Context context) {
|
||||||
|
mDbHelper = new MovedCertificatesHelper(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws IOException {
|
||||||
|
mDbHelper.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean insert(Certificate cert) {
|
||||||
|
if (!cert.isSystemCertificate())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ContentValues cv = new ContentValues();
|
||||||
|
cv.put(Table.COLUMN_NAME_FILE_NAME, cert.getFile().getName());
|
||||||
|
SQLiteDatabase db = mDbHelper.getWritableDatabase();
|
||||||
|
long row = db.insert(Table.TABLE_NAME, null, cv);
|
||||||
|
return row != -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Certificate> list() {
|
||||||
|
SQLiteDatabase db = mDbHelper.getReadableDatabase();
|
||||||
|
Cursor c = db.query(
|
||||||
|
Table.TABLE_NAME, new String[]{Table.COLUMN_NAME_FILE_NAME},
|
||||||
|
null, null, null, null, null);
|
||||||
|
ArrayList<Certificate> list = new ArrayList<Certificate>(c.getCount());
|
||||||
|
c.moveToFirst();
|
||||||
|
for (int i = 0; i < c.getCount(); i++) {
|
||||||
|
list.add(new Certificate(
|
||||||
|
c.getString(c.getColumnIndex(Table.COLUMN_NAME_FILE_NAME)), true));
|
||||||
|
c.moveToNext();
|
||||||
|
}
|
||||||
|
c.close();
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean delete(Certificate cert) {
|
||||||
|
SQLiteDatabase db = mDbHelper.getWritableDatabase();
|
||||||
|
int count = db.delete(Table.TABLE_NAME, Table.COLUMN_NAME_FILE_NAME + " = ?",
|
||||||
|
new String[]{cert.getFile().getName()});
|
||||||
|
return count == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class Table implements BaseColumns {
|
||||||
|
public static final String TABLE_NAME = "certificate";
|
||||||
|
public static final String COLUMN_NAME_FILE_NAME = "file_name";
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MovedCertificatesHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
|
private static final int DATABASE_VERSION = 1;
|
||||||
|
|
||||||
|
private static final String DATABASE_NAME = "moved_certificates.db";
|
||||||
|
|
||||||
|
public MovedCertificatesHelper(Context context) {
|
||||||
|
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(SQLiteDatabase db) {
|
||||||
|
db.execSQL("CREATE TABLE " + Table.TABLE_NAME + " (" +
|
||||||
|
Table._ID + " INTEGER PRIMARY KEY," +
|
||||||
|
Table.COLUMN_NAME_FILE_NAME + " TEXT UNIQUE)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in a new issue