diff --git a/build.gradle b/build.gradle index be515a8..77ce66e 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.android.tools.build:gradle:2.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f23df6e..9b406e0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 21 11:34:03 PDT 2015 +#Thu Sep 15 14:56:19 IDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/rxsnappy/build.gradle b/rxsnappy/build.gradle index 7084e5b..51212a4 100644 --- a/rxsnappy/build.gradle +++ b/rxsnappy/build.gradle @@ -16,12 +16,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 23 + compileSdkVersion 22 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 22 versionCode 1 versionName "1.0" } diff --git a/rxsnappy/src/androidTest/java/io/supercharge/rxsnappy/BasicOperationTest.java b/rxsnappy/src/androidTest/java/io/supercharge/rxsnappy/BasicOperationTest.java index dc2986a..a054903 100644 --- a/rxsnappy/src/androidTest/java/io/supercharge/rxsnappy/BasicOperationTest.java +++ b/rxsnappy/src/androidTest/java/io/supercharge/rxsnappy/BasicOperationTest.java @@ -1,16 +1,21 @@ package io.supercharge.rxsnappy; +import android.os.CountDownTimer; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import com.snappydb.SnappydbException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import io.supercharge.mock.DataGenerator; import io.supercharge.mock.DummyData; import io.supercharge.mock.MockedResponse; import io.supercharge.rxsnappy.exception.RxSnappyException; +import rx.functions.Action1; /** * Testing Fundamentals @@ -53,6 +58,45 @@ public void testResetDatabase() throws SnappydbException { } + @SmallTest + public void testHashMap(){ + final String key_test_hash = "hash me up23"; + HashMap hash = new HashMap<>(); + hash.put("key", "value"); + rxSnappyClient.setHashMapList(key_test_hash ,hash).subscribe(new Action1>() { + @Override + public void call(HashMap objectObjectHashMap) { + Log.d("check the hash" , "key is cache up!"); + } + }); + + new CountDownTimer(1000 , 1000){ + + @Override + public void onTick(long millisUntilFinished) { + + } + + @Override + public void onFinish() { + rxSnappyClient.getHashMapList(key_test_hash, (long) 100000).subscribe(new Action1>() { + @Override + public void call(HashMap objectObjectHashMap) { + for (Map.Entry entry : objectObjectHashMap.entrySet()) { + Object key = entry.getKey(); + Object value = entry.getValue(); + Log.d("check the hash" , "key = "+ key.toString() + " value =" + value.toString()); + + } + } + }); + } + }.start(); + + + + } + @SmallTest public void testBooleanValue() throws Exception { Boolean expected = Boolean.TRUE; diff --git a/rxsnappy/src/main/java/io/supercharge/rxsnappy/BaseSnappyClient.java b/rxsnappy/src/main/java/io/supercharge/rxsnappy/BaseSnappyClient.java index 73ca173..774f28a 100644 --- a/rxsnappy/src/main/java/io/supercharge/rxsnappy/BaseSnappyClient.java +++ b/rxsnappy/src/main/java/io/supercharge/rxsnappy/BaseSnappyClient.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import io.supercharge.rxsnappy.exception.CacheExpiredException; @@ -12,6 +13,7 @@ import io.supercharge.rxsnappy.exception.MissingDataException; import io.supercharge.rxsnappy.exception.RxSnappyException; import io.supercharge.rxsnappy.exception.ValueIsNullException; +import io.supercharge.rxsnappy.objects.keyValue; /** * Created by richardradics on 25/11/15. @@ -104,7 +106,7 @@ public boolean isInCache(String key) throws SnappydbException { } } - public boolean exsts(String key) throws SnappydbException { + public Boolean isExists(String key) throws SnappydbException { synchronized (db) { return db.exists(key); } @@ -261,6 +263,47 @@ protected void setStringListValue(String key, List value, boolean ignore } + + protected void setHashMap(String key, HashMap value, boolean ignoreCache) throws SnappydbException, RxSnappyException { + synchronized (db) { + if (key == null) { + throw new KeyIsNullException(); + } + if (value == null) { + throw new ValueIsNullException(); + } + + + if (!ignoreCache) { + db.put(generateKey(key), value.entrySet().toArray()); + removePreviousCachedElement(key); + } else { + db.put(key, value.entrySet().toArray()); + } + } + } + + + protected HashMap getHashMap(String key, Long cacheTime) throws SnappydbException { + synchronized (db) { + if (key == null) { + throw new KeyIsNullException(); + } + HashMap hash= new HashMap<>(); + if (isInCache(key, cacheTime)) { + keyValue[] array = db.getObjectArray(findTimeBasedKey(key), keyValue.class); + for(keyValue s : array) + hash.put(s.getKey() , s.getKey()); + } else { + throw new MissingDataException(); + } + return hash; + } + } + + + + protected List getStringListValue(String key, Long cacheTime) throws SnappydbException { synchronized (db) { if (key == null) { diff --git a/rxsnappy/src/main/java/io/supercharge/rxsnappy/RxSnappyClient.java b/rxsnappy/src/main/java/io/supercharge/rxsnappy/RxSnappyClient.java index 75a8fca..69a9476 100644 --- a/rxsnappy/src/main/java/io/supercharge/rxsnappy/RxSnappyClient.java +++ b/rxsnappy/src/main/java/io/supercharge/rxsnappy/RxSnappyClient.java @@ -2,6 +2,7 @@ import com.snappydb.DB; +import java.util.HashMap; import java.util.List; import rx.Observable; @@ -39,7 +40,7 @@ public Observable exists(final String key) { @Override public Observable call() { try { - return Observable.just(exsts(key)); + return Observable.just(isExists(key)); } catch (Exception e) { return Observable.error(e); } @@ -224,6 +225,39 @@ public Observable> call() { }); } + + public Observable> setHashMapList(final String key, final HashMap value) { + return Observable.defer(new Func0>>() { + @Override + public Observable> call() { + try { + setHashMap(key, value , false); + return Observable.just(value); + } catch (Exception e) { + return Observable.error(e); + } + } + }); + } + + public Observable> getHashMapList(final String key, final Long cacheTime) { + return Observable.defer(new Func0>>() { + @Override + public Observable> call() { + try { + return Observable.just(getHashMap(key, cacheTime)); + } catch (Exception e) { + return Observable.error(e); + } + } + }); + } + + + + + + public Observable setList(final String key, final List value) { return setList(key, value, false); } @@ -277,6 +311,8 @@ public Observable call() { }); } + + public Observable getObject(String key, Class selectedClass) { return getObject(key, null, selectedClass); } diff --git a/rxsnappy/src/main/java/io/supercharge/rxsnappy/objects/keyValue.java b/rxsnappy/src/main/java/io/supercharge/rxsnappy/objects/keyValue.java new file mode 100644 index 0000000..ec44e8e --- /dev/null +++ b/rxsnappy/src/main/java/io/supercharge/rxsnappy/objects/keyValue.java @@ -0,0 +1,34 @@ +package io.supercharge.rxsnappy.objects; + +import java.io.Serializable; + +/** + * Created by omri on 15/09/2016. + */ +public class keyValue implements Serializable { + + public keyValue(){} + private Object key; + private Object value; + + public Object getKey() { + return key; + } + + public void setKey(Object key) { + this.key = key; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public keyValue(Object key, Object value) { + this.key = key; + this.value = value; + } +}