From 77e05984127807428be7761dc8511a3624b9be1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=20=E5=85=83=E6=9D=B0?= Date: Fri, 16 May 2014 18:37:05 +0800 Subject: [PATCH] Add two methods to query sql loading from raw text file --- .../se/emilsjolander/sprinkles/Query.java | 48 +++++++++++++++++++ .../se/emilsjolander/sprinkles/Utils.java | 25 ++++++++++ 2 files changed, 73 insertions(+) diff --git a/library/src/main/java/se/emilsjolander/sprinkles/Query.java b/library/src/main/java/se/emilsjolander/sprinkles/Query.java index c853f00..0b092ea 100644 --- a/library/src/main/java/se/emilsjolander/sprinkles/Query.java +++ b/library/src/main/java/se/emilsjolander/sprinkles/Query.java @@ -35,6 +35,30 @@ public static OneQuery one(Class clazz, String sql return query; } + /** + * Start a query for a single instance of type T + * + * @param clazz + * The class representing the type of the model you want returned + * + * @param sqlResId + * The raw sql resource id that should be executed. + * + * @param sqlArgs + * The array of arguments to insert instead of ? in the placeholderQuery statement. + * Strings are automatically placeholderQuery escaped. + * + * @param + * The type of the model you want returned + * + * @return the query to execute + */ + public static OneQuery one(Class clazz, int sqlResId, + Object... sqlArgs) { + String sql = Utils.readRawText(sqlResId); + return one(clazz, sql, sqlArgs); + } + /** * Start a query for a list of instance of type T * @@ -62,6 +86,30 @@ public static ManyQuery many(Class clazz, String s return query; } + /** + * Start a query for a list of instance of type T + * + * @param clazz + * The class representing the type of the list you want returned + * + * @param sqlResId + * The raw sql resource id that should be executed. + * + * @param sqlArgs + * The array of arguments to insert instead of ? in the placeholderQuery statement. + * Strings are automatically placeholderQuery escaped. + * + * @param + * The type of the list you want returned + * + * @return the query to execute + */ + public static ManyQuery many(Class clazz, int sqlResId, + Object... sqlArgs) { + String sql = Utils.readRawText(sqlResId); + return many(clazz, sql, sqlArgs); + } + /** * Start a query for the entire list of instance of type T * diff --git a/library/src/main/java/se/emilsjolander/sprinkles/Utils.java b/library/src/main/java/se/emilsjolander/sprinkles/Utils.java index 1e9ef36..b5857f4 100644 --- a/library/src/main/java/se/emilsjolander/sprinkles/Utils.java +++ b/library/src/main/java/se/emilsjolander/sprinkles/Utils.java @@ -4,6 +4,10 @@ import android.database.Cursor; import android.net.Uri; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.util.Arrays; @@ -132,4 +136,25 @@ static T[] concatArrays(T[] one, T[] two) { return result; } + static String readRawText(int rawId) { + final InputStream inputStream = Sprinkles.sInstance.mContext + .getResources().openRawResource(rawId); + final InputStreamReader inputStreamReader = new InputStreamReader( + inputStream); + final BufferedReader bufferedReader = new BufferedReader( + inputStreamReader); + + String line; + final StringBuilder body = new StringBuilder(); + try { + while ((line = bufferedReader.readLine()) != null) + { + body.append(line); + body.append('\n'); + } + } catch (IOException e) { + return null; + } + return body.toString(); + } }