Skip to content

Commit

Permalink
pass sql args into type serializers making it possible to query on th…
Browse files Browse the repository at this point in the history
…ings like dates
  • Loading branch information
emilsjolander committed Feb 22, 2014
1 parent 2fc660e commit a625743
Show file tree
Hide file tree
Showing 12 changed files with 55 additions and 34 deletions.
11 changes: 4 additions & 7 deletions library/src/main/java/se/emilsjolander/sprinkles/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import android.content.ContentValues;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.net.Uri;

import java.lang.reflect.Array;
Expand All @@ -12,6 +11,7 @@

import se.emilsjolander.sprinkles.annotations.Table;
import se.emilsjolander.sprinkles.exceptions.NoTableAnnotationException;
import se.emilsjolander.sprinkles.typeserializers.TypeSerializer;

class Utils {

Expand Down Expand Up @@ -98,12 +98,9 @@ static String insertSqlArgs(String sql, Object[] args) {
return sql;
}
for (Object o : args) {
if (o instanceof Number) {
sql = sql.replaceFirst("\\?", o.toString());
} else {
String escapedString = DatabaseUtils.sqlEscapeString(o.toString());
sql = sql.replaceFirst("\\?", escapedString);
}
TypeSerializer typeSerializer = Sprinkles.sInstance.getTypeSerializer(o.getClass());
String sqlObject = typeSerializer.toSql(o);
sql = sql.replaceFirst("\\?", sqlObject);
}
return sql;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public class BooleanSerializer implements TypeSerializer<Boolean> {

@Override
Expand All @@ -18,6 +15,11 @@ public void pack(Boolean object, ContentValues cv, String name) {
cv.put(name, object ? 1 : 0);
}

@Override
public String toSql(Boolean object) {
return object ? "1" : "0";
}

@Override
public SqlType getSqlType() {
return SqlType.INTEGER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@

import java.util.Date;

/**
* Created by emilsjolander on 27/12/13.
*/
public class DateSerializer implements TypeSerializer<Date> {

@Override
Expand All @@ -20,6 +17,11 @@ public void pack(Date object, ContentValues cv, String name) {
cv.put(name, object.getTime());
}

@Override
public String toSql(Date object) {
return ""+object.getTime();
}

@Override
public SqlType getSqlType() {
return SqlType.INTEGER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public class DoubleSerializer implements TypeSerializer<Double> {

@Override
Expand All @@ -18,6 +15,11 @@ public void pack(Double object, ContentValues cv, String name) {
cv.put(name, object);
}

@Override
public String toSql(Double object) {
return ""+object;
}

@Override
public SqlType getSqlType() {
return SqlType.REAL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public class FloatSerializer implements TypeSerializer<Float> {

@Override
Expand All @@ -18,6 +15,11 @@ public void pack(Float object, ContentValues cv, String name) {
cv.put(name, object);
}

@Override
public String toSql(Float object) {
return ""+object;
}

@Override
public SqlType getSqlType() {
return SqlType.REAL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public class IntSerializer implements TypeSerializer<Integer> {

@Override
Expand All @@ -18,6 +15,11 @@ public void pack(Integer object, ContentValues cv, String name) {
cv.put(name, object);
}

@Override
public String toSql(Integer object) {
return ""+object;
}

@Override
public SqlType getSqlType() {
return SqlType.INTEGER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public class LongSerializer implements TypeSerializer<Long> {

@Override
Expand All @@ -18,6 +15,11 @@ public void pack(Long object, ContentValues cv, String name) {
cv.put(name, object);
}

@Override
public String toSql(Long object) {
return ""+object;
}

@Override
public SqlType getSqlType() {
return SqlType.INTEGER;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package se.emilsjolander.sprinkles.typeserializers;

/**
* Created by emilsjolander on 27/12/13.
*/
public enum SqlType {
INTEGER,
REAL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

import android.content.ContentValues;
import android.database.Cursor;
import android.database.DatabaseUtils;

/**
* Created by emilsjolander on 27/12/13.
*/
public class StringSerializer implements TypeSerializer<String> {

@Override
Expand All @@ -18,6 +16,11 @@ public void pack(String object, ContentValues cv, String name) {
cv.put(name, object);
}

@Override
public String toSql(String object) {
return DatabaseUtils.sqlEscapeString(object);
}

@Override
public SqlType getSqlType() {
return SqlType.TEXT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
import android.content.ContentValues;
import android.database.Cursor;

/**
* Created by emilsjolander on 27/12/13.
*/
public interface TypeSerializer<T> {

T unpack(Cursor c, String name);

void pack(T object, ContentValues cv, String name);

String toSql(T object);

SqlType getSqlType();

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public void pack(MyObject object, ContentValues cv, String name) {

}

@Override
public String toSql(MyObject object) {
return null;
}

@Override
public SqlType getSqlType() {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Date;

import se.emilsjolander.sprinkles.annotations.AutoIncrementPrimaryKey;
import se.emilsjolander.sprinkles.annotations.Column;
Expand Down Expand Up @@ -111,6 +112,13 @@ public void insertSqlArgs() {
assertEquals(result, "1 'hej'");
}

@Test
public void insertTypeSerializedSqlArgs() {
Date date = new Date();
String result = Utils.insertSqlArgs("?", new Object[]{date});
assertEquals(result, ""+date.getTime());
}

@Test
public void getAllDeclaredFields() {
Field[] fields = Utils.getAllDeclaredFields(TestModel.class, Model.class);
Expand Down

0 comments on commit a625743

Please sign in to comment.