Skip to content

Commit

Permalink
Merge branch 'master' of github.com:novoda/SQLiteProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
akshaydashrath committed Dec 3, 2010
2 parents b8e16a9 + abf38db commit 46043cf
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 27 deletions.
6 changes: 3 additions & 3 deletions src/novoda/lib/sqliteprovider/provider/SQLiteProvider.java
Expand Up @@ -50,8 +50,8 @@ public Uri insert(Uri uri, ContentValues initialValues) {
initialValues)
: new ContentValues();
if (UriUtils.hasParent(uri)){
if (!insertValues.containsKey(UriUtils.getParentName(uri)+"_id")){
insertValues.put(UriUtils.getParentName(uri)+"_id", UriUtils.getParentId(uri));
if (!insertValues.containsKey(UriUtils.getParentId(uri)+"_id")){
insertValues.put(UriUtils.getParentColumnName(uri)+"_id", UriUtils.getParentId(uri));
}
}
SQLiteDatabase database = getWritableDatabase();
Expand Down Expand Up @@ -94,7 +94,7 @@ public Cursor query(Uri uri, String[] projection, String selection,
builder.appendWhere(ID + "=" + uri.getLastPathSegment());
} else {
if (UriUtils.hasParent(uri)) {
builder.appendWhereEscapeString(UriUtils.getParentName(uri)
builder.appendWhereEscapeString(UriUtils.getParentColumnName(uri)
+ ID + "=" + UriUtils.getParentId(uri));
}
}
Expand Down
14 changes: 14 additions & 0 deletions src/novoda/lib/sqliteprovider/util/UriInspector.java
@@ -0,0 +1,14 @@
package novoda.lib.sqliteprovider.util;

import android.net.Uri;

public class UriInspector {

public UriInspector() {
}

public UriToSqlAttributes parse(Uri uri) {
return new UriToSqlAttributes(uri);
}

}
20 changes: 20 additions & 0 deletions src/novoda/lib/sqliteprovider/util/UriToSqlAttributes.java
@@ -0,0 +1,20 @@
package novoda.lib.sqliteprovider.util;

import java.util.List;

import android.net.Uri;

public class UriToSqlAttributes {

public Uri uri;
public UriToSqlAttributes(Uri uri) {
this.uri = uri;
}

public boolean hasWhereClauseInQuery() {
if (uri.toString().split("\\?").length >=2){
return true;
}
return false;
}
}
18 changes: 9 additions & 9 deletions src/novoda/lib/sqliteprovider/util/UriUtils.java
Expand Up @@ -55,23 +55,23 @@ public static boolean isDir(final Uri uri) {
return isDir("", uri);
}

public static boolean isDir(final String rootPath, final Uri uri) {
return !isItem(rootPath, uri);
}

public static boolean isItem(final Uri uri) {
return isItem("", uri);
}

public static boolean isItem(final String rootPath, final Uri uri) {
final List<String> segments = uri.getPathSegments();
if (rootPath != null && !rootPath.equals("")) {
return (((segments.size() - rootPath.split("/").length + 1) % 2) == 1);
} else {
return ((segments.size() % 2) == 0);
}
};

public static boolean isItem(final Uri uri) {
return isItem("", uri);
}

public static boolean isDir(final String rootPath, final Uri uri) {
return !isItem(rootPath, uri);
};

public static String getItemDirID(final Uri uri) {
return getItemDirID("", uri);
}
Expand Down Expand Up @@ -105,7 +105,7 @@ public static boolean hasParent(Uri uri){



public static String getParentName(Uri uri){
public static String getParentColumnName(Uri uri){
if (hasParent(uri)){
if (!isNumberedEntryWithinCollection(uri)){
return uri.getPathSegments().get((uri.getPathSegments().size()-1)-2);
Expand Down
16 changes: 8 additions & 8 deletions tests/java/novoda/lib/sqliteprovider/util/SQLFileTest.java
Expand Up @@ -24,14 +24,14 @@ public class SQLFileTest extends AndroidTestCase {

@Test
public void testSimpleSQLFile() throws Exception {
//BufferedReader reader = new BufferedReader( new InputStreamReader(getClass().getResourceAsStream("/create.sql")));
//new InputStreamReader(new FileInputStream("create.sql")));
// List<String> statements = SQLFile.statementsFrom(reader);
// List<String> expected = new ArrayList<String>();
// expected.add(one);
// expected.add(two);
// assertSameList(statements, expected);
// assertNotNull(this.getContext().getAssets());
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/create.sql")));
new InputStreamReader(new FileInputStream("create.sql"));
List<String> statements = SQLFile.statementsFrom(reader);
List<String> expected = new ArrayList<String>();
expected.add(one);
expected.add(two);
assertSameList(statements, expected);
assertNotNull(this.getContext().getAssets());
}

private void assertSameList(List<String> first, List<String> second) {
Expand Down
Expand Up @@ -15,6 +15,4 @@ public class ShadowAndroidTestCase {
public final Context getContext() {
return Robolectric.application.getApplicationContext();
}


}
@@ -0,0 +1,38 @@
package novoda.lib.sqliteprovider.util;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.Test;
import org.junit.runner.RunWith;

import android.net.Uri;

import com.xtremelabs.robolectric.RobolectricTestRunner;


@RunWith(RobolectricTestRunner.class)
public class UriToSqlAttributesInspectorTest {

private UriInspector uriInspector = new UriInspector();;
private UriToSqlAttributes attrs = null;

private void setup() {
uriInspector = new UriInspector();
}

@Test
public void testUriInspectorCreationBehaviour(){
attrs = uriInspector.parse(Uri.parse("content://test.com/item/1"));
assertEquals("content://test.com/item/1", attrs.uri.toString());
}

@Test
public void testHasWhereClauseInQuery(){
attrs = uriInspector.parse(Uri.parse("content://test.com/item/1"));
assertFalse(attrs.hasWhereClauseInQuery());
attrs = uriInspector.parse(Uri.parse("content://test.com/tableName?groupBy=col&having=value"));
assertTrue(attrs.hasWhereClauseInQuery());
}
}
10 changes: 5 additions & 5 deletions tests/java/novoda/lib/sqliteprovider/util/UriUtilsLocalTest.java
Expand Up @@ -65,23 +65,23 @@ public void testGettingRowIds() {
@Test
public void testGettingParentDetails(){
Uri uri = Uri.parse("content://test.com");
assertEquals("",UriUtils.getParentName(uri));
assertEquals("",UriUtils.getParentColumnName(uri));
assertEquals("",UriUtils.getParentId(uri));
assertEquals(false,UriUtils.hasParent(uri));
uri = Uri.parse("content://test.com/parent/1/child");
assertEquals("parent",UriUtils.getParentName(uri));
assertEquals("parent",UriUtils.getParentColumnName(uri));
assertEquals("1",UriUtils.getParentId(uri));
assertEquals(true,UriUtils.hasParent(uri));
uri = Uri.parse("content://test.com/parent/1/child/6");
assertEquals("parent",UriUtils.getParentName(uri));
assertEquals("parent",UriUtils.getParentColumnName(uri));
assertEquals("1",UriUtils.getParentId(uri));
assertEquals(true,UriUtils.hasParent(uri));
uri = Uri.parse("content://test.com/parent/1/child/6/subchild");
assertEquals("child",UriUtils.getParentName(uri));
assertEquals("child",UriUtils.getParentColumnName(uri));
assertEquals("6",UriUtils.getParentId(uri));
assertEquals(true,UriUtils.hasParent(uri));
uri = Uri.parse("content://test.com/parent/1/child/6/subchild/3");
assertEquals("child",UriUtils.getParentName(uri));
assertEquals("child",UriUtils.getParentColumnName(uri));
assertEquals("6",UriUtils.getParentId(uri));
assertEquals(true,UriUtils.hasParent(uri));
}
Expand Down

0 comments on commit 46043cf

Please sign in to comment.