Skip to content

Commit eabff92

Browse files
committed
Merge pull request androidannotations#1272 from chvndb/1203-Generic_AbstractPrefField
androidannotations#1203: Modified AbstractPrefField interface to include generic get and put methods.
2 parents 2964494 + 58fbbf8 commit eabff92

7 files changed

Lines changed: 63 additions & 73 deletions

File tree

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/AbstractPrefField.java‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@
1818
import android.content.SharedPreferences;
1919
import android.content.SharedPreferences.Editor;
2020

21-
public abstract class AbstractPrefField {
21+
public abstract class AbstractPrefField<T> {
22+
23+
protected final T defaultValue;
2224

2325
protected final SharedPreferences sharedPreferences;
2426
protected final String key;
2527

26-
public AbstractPrefField(SharedPreferences sharedPreferences, String key) {
28+
public AbstractPrefField(SharedPreferences sharedPreferences, String key, T defaultValue) {
2729
this.sharedPreferences = sharedPreferences;
2830
this.key = key;
31+
this.defaultValue = defaultValue;
2932
}
3033

3134
public final boolean exists() {
@@ -36,6 +39,18 @@ public String key() {
3639
return this.key;
3740
}
3841

42+
public final T get() {
43+
return getOr(defaultValue);
44+
}
45+
46+
public abstract T getOr(T defaultValue);
47+
48+
public final void put(T value) {
49+
putInternal((value == null) ? defaultValue : value);
50+
};
51+
52+
protected abstract void putInternal(T value);
53+
3954
public final void remove() {
4055
apply(edit().remove(key));
4156
}

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/BooleanPrefField.java‎

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,19 @@
1717

1818
import android.content.SharedPreferences;
1919

20-
public final class BooleanPrefField extends AbstractPrefField {
20+
public final class BooleanPrefField extends AbstractPrefField<Boolean> {
2121

22-
private final boolean defaultValue;
23-
24-
BooleanPrefField(SharedPreferences sharedPreferences, String key, boolean defaultValue) {
25-
super(sharedPreferences, key);
26-
this.defaultValue = defaultValue;
27-
}
28-
29-
public boolean get() {
30-
return getOr(defaultValue);
22+
BooleanPrefField(SharedPreferences sharedPreferences, String key, Boolean defaultValue) {
23+
super(sharedPreferences, key, defaultValue);
3124
}
3225

33-
public boolean getOr(boolean defaultValue) {
26+
@Override
27+
public Boolean getOr(Boolean defaultValue) {
3428
return sharedPreferences.getBoolean(key, defaultValue);
3529
}
3630

37-
public void put(boolean value) {
31+
@Override
32+
protected void putInternal(Boolean value) {
3833
apply(edit().putBoolean(key, value));
3934
}
4035

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/FloatPrefField.java‎

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,14 @@
1717

1818
import android.content.SharedPreferences;
1919

20-
public final class FloatPrefField extends AbstractPrefField {
20+
public final class FloatPrefField extends AbstractPrefField<Float> {
2121

22-
private final float defaultValue;
23-
24-
FloatPrefField(SharedPreferences sharedPreferences, String key, float defaultValue) {
25-
super(sharedPreferences, key);
26-
this.defaultValue = defaultValue;
27-
}
28-
29-
public float get() {
30-
return getOr(defaultValue);
22+
FloatPrefField(SharedPreferences sharedPreferences, String key, Float defaultValue) {
23+
super(sharedPreferences, key, defaultValue);
3124
}
3225

33-
public float getOr(float defaultValue) {
26+
@Override
27+
public Float getOr(Float defaultValue) {
3428
try {
3529
return sharedPreferences.getFloat(key, defaultValue);
3630
} catch (ClassCastException e) {
@@ -40,14 +34,16 @@ public float getOr(float defaultValue) {
4034
String value = sharedPreferences.getString(key, "" + defaultValue);
4135
return Float.parseFloat(value);
4236
} catch (Exception e2) {
43-
// our recovery bit failed. The problem is elsewhere. Send the original error
37+
// our recovery bit failed. The problem is elsewhere. Send the
38+
// original error
4439
throw e;
4540
}
4641
}
4742

4843
}
4944

50-
public void put(float value) {
45+
@Override
46+
protected void putInternal(Float value) {
5147
apply(edit().putFloat(key, value));
5248
}
5349

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/IntPrefField.java‎

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,14 @@
1717

1818
import android.content.SharedPreferences;
1919

20-
public final class IntPrefField extends AbstractPrefField {
20+
public final class IntPrefField extends AbstractPrefField<Integer> {
2121

22-
private final int defaultValue;
23-
24-
IntPrefField(SharedPreferences sharedPreferences, String key, int defaultValue) {
25-
super(sharedPreferences, key);
26-
this.defaultValue = defaultValue;
27-
}
28-
29-
public int get() {
30-
return getOr(defaultValue);
22+
IntPrefField(SharedPreferences sharedPreferences, String key, Integer defaultValue) {
23+
super(sharedPreferences, key, defaultValue);
3124
}
3225

33-
public int getOr(int defaultValue) {
26+
@Override
27+
public Integer getOr(Integer defaultValue) {
3428
try {
3529
return sharedPreferences.getInt(key, defaultValue);
3630
} catch (ClassCastException e) {
@@ -40,14 +34,16 @@ public int getOr(int defaultValue) {
4034
String value = sharedPreferences.getString(key, "" + defaultValue);
4135
return Integer.parseInt(value);
4236
} catch (Exception e2) {
43-
// our recovery bit failed. The problem is elsewhere. Send the original error
37+
// our recovery bit failed. The problem is elsewhere. Send the
38+
// original error
4439
throw e;
4540
}
4641
}
4742

4843
}
4944

50-
public void put(int value) {
45+
@Override
46+
protected void putInternal(Integer value) {
5147
apply(edit().putInt(key, value));
5248
}
5349

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/LongPrefField.java‎

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,14 @@
1717

1818
import android.content.SharedPreferences;
1919

20-
public final class LongPrefField extends AbstractPrefField {
20+
public final class LongPrefField extends AbstractPrefField<Long> {
2121

22-
private final long defaultValue;
23-
24-
LongPrefField(SharedPreferences sharedPreferences, String key, long defaultValue) {
25-
super(sharedPreferences, key);
26-
this.defaultValue = defaultValue;
27-
}
28-
29-
public long get() {
30-
return getOr(defaultValue);
22+
LongPrefField(SharedPreferences sharedPreferences, String key, Long defaultValue) {
23+
super(sharedPreferences, key, defaultValue);
3124
}
3225

33-
public long getOr(long defaultValue) {
26+
@Override
27+
public Long getOr(Long defaultValue) {
3428
try {
3529
return sharedPreferences.getLong(key, defaultValue);
3630
} catch (ClassCastException e) {
@@ -40,13 +34,15 @@ public long getOr(long defaultValue) {
4034
String value = sharedPreferences.getString(key, "" + defaultValue);
4135
return Long.parseLong(value);
4236
} catch (Exception e2) {
43-
// our recovery bit failed. The problem is elsewhere. Send the original error
37+
// our recovery bit failed. The problem is elsewhere. Send the
38+
// original error
4439
throw e;
4540
}
4641
}
4742
}
4843

49-
public void put(long value) {
44+
@Override
45+
protected void putInternal(Long value) {
5046
apply(edit().putLong(key, value));
5147
}
5248

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/StringPrefField.java‎

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,20 @@
1717

1818
import android.content.SharedPreferences;
1919

20-
public final class StringPrefField extends AbstractPrefField {
21-
22-
private final String defaultValue;
20+
public final class StringPrefField extends AbstractPrefField<String> {
2321

2422
StringPrefField(SharedPreferences sharedPreferences, String key, String defaultValue) {
25-
super(sharedPreferences, key);
26-
this.defaultValue = defaultValue;
27-
}
28-
29-
public String get() {
30-
return getOr(defaultValue);
23+
super(sharedPreferences, key, defaultValue);
3124
}
3225

26+
@Override
3327
public String getOr(String defaultValue) {
3428
return sharedPreferences.getString(key, defaultValue);
3529
}
3630

37-
public void put(String value) {
31+
@Override
32+
protected void putInternal(String value) {
3833
apply(edit().putString(key, value));
3934
}
35+
4036
}

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/sharedpreferences/StringSetPrefField.java‎

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,22 @@
1919

2020
import android.content.SharedPreferences;
2121

22-
public final class StringSetPrefField extends AbstractPrefField {
23-
24-
private final Set<String> defaultValue;
22+
public final class StringSetPrefField extends AbstractPrefField<Set<String>> {
2523

2624
StringSetPrefField(SharedPreferences sharedPreferences, String key, Set<String> defaultValue) {
27-
super(sharedPreferences, key);
28-
this.defaultValue = defaultValue;
29-
}
30-
31-
public Set<String> get() {
32-
return getOr(defaultValue);
25+
super(sharedPreferences, key, defaultValue);
3326
}
3427

28+
@Override
3529
public Set<String> getOr(Set<String> defaultValue) {
3630
return SharedPreferencesCompat.getStringSet(sharedPreferences, key, defaultValue);
3731
}
3832

39-
public void put(Set<String> value) {
33+
@Override
34+
protected void putInternal(Set<String> value) {
4035
SharedPreferences.Editor editor = sharedPreferences.edit();
4136
SharedPreferencesCompat.putStringSet(editor, key, value);
4237
apply(editor);
4338
}
39+
4440
}

0 commit comments

Comments
 (0)