diff options
-rw-r--r-- | vdrmanager/src/de/bjusystems/vdrmanager/data/Vdr.java | 104 | ||||
-rw-r--r-- | vdrmanager/src/de/bjusystems/vdrmanager/data/VdrSharedPreferences.java | 141 |
2 files changed, 169 insertions, 76 deletions
diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/data/Vdr.java b/vdrmanager/src/de/bjusystems/vdrmanager/data/Vdr.java index fa16e69..8f89b54 100644 --- a/vdrmanager/src/de/bjusystems/vdrmanager/data/Vdr.java +++ b/vdrmanager/src/de/bjusystems/vdrmanager/data/Vdr.java @@ -10,7 +10,7 @@ import com.j256.ormlite.table.DatabaseTable; public class Vdr { /** - * + * */ @DatabaseField(columnName = "_id", generatedId = true) private Integer id; @@ -62,7 +62,7 @@ public class Vdr { /** * vdr mac for wol - * + * * @since 0.2 */ @DatabaseField @@ -70,9 +70,9 @@ public class Vdr { /** * which wakeup method to use - * + * * @since 0.2 - * + * */ @DatabaseField private String wakeupMethod; @@ -107,7 +107,7 @@ public class Vdr { /** * Which port to use for streaming - * + * * @since 0.2 */ @DatabaseField @@ -115,7 +115,7 @@ public class Vdr { /** * Which format to use for streaming - * + * * @since 0.2 */ @DatabaseField @@ -123,7 +123,7 @@ public class Vdr { /** * Do not send broadcasts, send directly to the host (router problem) - * + * * @since 0.2 */ @DatabaseField @@ -173,17 +173,16 @@ public class Vdr { @DatabaseField private String streamingPassword; - + @DatabaseField private int livePort; - + @DatabaseField private String recStreamMethod; - + @DatabaseField private boolean enableRecStreaming = false; - public String getRecStreamMethod() { return recStreamMethod; } @@ -208,7 +207,6 @@ public class Vdr { this.enableRecStreaming = enableRecStreaming; } - public String getStreamingPassword() { return streamingPassword; } @@ -478,10 +476,14 @@ public class Vdr { } private static <T> T get(Map<String, Object> map, String key, Object def) { - return (T) map.get(key); + if(map.containsKey(key)){ + return (T) map.get(key); + } + return (T)def; } - private static Integer getInteger(Map<String, Object> map, String key, Integer def) { + private static Integer getInteger(Map<String, Object> map, String key, + Integer def) { if (map.containsKey(key) == false) { return def; } @@ -506,8 +508,13 @@ public class Vdr { } private static Boolean getBoolean(Map<String, Object> map, String key) { + return getBoolean(map, key, false); + } + + private static Boolean getBoolean(Map<String, Object> map, String key, + boolean defValue) { if (map.containsKey(key) == false) { - return Boolean.FALSE; + return defValue; } Object obj = get(map, key); if (obj instanceof Boolean) { @@ -554,13 +561,64 @@ public class Vdr { map.put("remux_enable", enableRemux); map.put("key_rec_stream_enable", enableRecStreaming); map.put("key_live_port", livePort); - map.put("key_recstream_method", recStreamMethod ); + map.put("key_recstream_method", recStreamMethod); return map; } + public void set(Map<String, Object> map) { + name = get(map, "vdr_name", name); + host = get(map, "vdr_host", host); + port = getInteger(map, "vdr_port", port); + password = get(map, "vdr_password", password); + secure = getBoolean(map, "vdr_secure", secure); + + filterChannels = getBoolean(map, "limit_channels", filterChannels); + channelFilter = get(map, "last_channel", channelFilter); + + wakeupEnabled = getBoolean(map, "key_wakeup_enabled", wakeupEnabled); + wakeupUrl = get(map, "key_wakeup_url", wakeupUrl); + wakeupUser = get(map, "key_wakeup_user", wakeupUser); + wakeupPassword = get(map, "key_wakeup_password", wakeupPassword); + wakeupMethod = get(map, "key_wakeup_method", wakeupMethod); + wolCustomBroadcast = get(map, "key_wol_custom_broadcast", + wolCustomBroadcast); + mac = get(map, "key_wakeup_wol_mac", mac); + + connectionTimeout = getInteger(map, "key_conntimeout_key", + connectionTimeout); + readTimeout = getInteger(map, "key_vdr_readtimeout", readTimeout); + timeout = getInteger(map, "key_vdr_timeout", timeout); + + timerPreMargin = getInteger(map, "timer_pre_start_buffer", + timerPreMargin); + timerPostMargin = getInteger(map, "timer_post_end_buffer", + timerPostMargin); + timerDefaultPriority = getInteger(map, "timer_default_priority", + timerDefaultPriority); + timerDefaultLifetime = getInteger(map, "timer_default_lifetime", + timerDefaultLifetime); + + streamPort = getInteger(map, "streamingport", streamPort); + streamingPassword = get(map, "key_streaming_password", + streamingPassword); + streamingUsername = get(map, "key_streaming_username", + streamingUsername); + encoding = get(map, "key_vdr_encoding", encoding); + streamFormat = get(map, "livetv_streamformat", streamFormat); + remuxCommand = get(map, "remux_command", remuxCommand); + remuxParameter = get(map, "remux_parameter", remuxParameter); + enableRemux = getBoolean(map, "remux_enable", enableRemux); + + enableRecStreaming = getBoolean(map, "key_rec_stream_enable", + enableRecStreaming); + livePort = getInteger(map, "key_live_port", livePort); + recStreamMethod = get(map, "key_recstream_method", recStreamMethod); + + } + public void init(Map<String, Object> map) { name = get(map, "vdr_name", name); - host = get(map, "vdr_host" ); + host = get(map, "vdr_host"); port = getInteger(map, "vdr_port"); password = get(map, "vdr_password"); secure = getBoolean(map, "vdr_secure"); @@ -570,11 +628,11 @@ public class Vdr { wakeupEnabled = getBoolean(map, "key_wakeup_enabled"); wakeupUrl = get(map, "key_wakeup_url", "0.0.0.0"); - wakeupUser = get(map, "key_wakeup_user",""); - wakeupPassword = get(map, "key_wakeup_password",""); - wakeupMethod = get(map, "key_wakeup_method","wol"); - wolCustomBroadcast = get(map, "key_wol_custom_broadcast",""); - mac = get(map, "key_wakeup_wol_mac",""); + wakeupUser = get(map, "key_wakeup_user", ""); + wakeupPassword = get(map, "key_wakeup_password", ""); + wakeupMethod = get(map, "key_wakeup_method", "wol"); + wolCustomBroadcast = get(map, "key_wol_custom_broadcast", ""); + mac = get(map, "key_wakeup_wol_mac", ""); connectionTimeout = getInteger(map, "key_conntimeout_key"); readTimeout = getInteger(map, "key_vdr_readtimeout"); @@ -593,7 +651,7 @@ public class Vdr { remuxCommand = get(map, "remux_command"); remuxParameter = get(map, "remux_parameter"); enableRemux = getBoolean(map, "remux_enable"); - + enableRecStreaming = getBoolean(map, "key_rec_stream_enable"); livePort = getInteger(map, "key_live_port"); recStreamMethod = get(map, "key_recstream_method"); diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/data/VdrSharedPreferences.java b/vdrmanager/src/de/bjusystems/vdrmanager/data/VdrSharedPreferences.java index 86103bf..a55e821 100644 --- a/vdrmanager/src/de/bjusystems/vdrmanager/data/VdrSharedPreferences.java +++ b/vdrmanager/src/de/bjusystems/vdrmanager/data/VdrSharedPreferences.java @@ -1,6 +1,7 @@ package de.bjusystems.vdrmanager.data; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -14,31 +15,40 @@ import com.j256.ormlite.dao.RuntimeExceptionDao; public class VdrSharedPreferences implements SharedPreferences { private static final String EMPTY_STRING = ""; - - public int commits = 0; - + + public int commits = 0; + public RuntimeExceptionDao<Vdr, Integer> dao; - - public Vdr instance; - + + private Vdr instance; + + public Vdr getInstance() { + return instance; + } + + public void setInstance(Vdr instance) { + this.instance = instance; + map.putAll(instance.toMap()); + } + protected List<OnSharedPreferenceChangeListener> listeners = new LinkedList<OnSharedPreferenceChangeListener>(); Map<String, Object> map = new HashMap<String, Object>(); - - public VdrSharedPreferences(){ - - } - public VdrSharedPreferences (Vdr vdr){ - map.putAll(vdr.toMap()); - instance = vdr; + + public VdrSharedPreferences() { + } - + +// public VdrSharedPreferences(Vdr vdr) { + +// } + public boolean contains(String key) { return map.containsKey(key); } public Editor edit() { - return new Editor(); + return new Editor(); } public Map<String, Object> getAll() { @@ -70,7 +80,7 @@ public class VdrSharedPreferences implements SharedPreferences { public String getString(String key, String defValue) { Object obj = get(key, defValue); - if(obj == null){ + if (obj == null) { return EMPTY_STRING; } return String.valueOf(obj); @@ -89,85 +99,110 @@ public class VdrSharedPreferences implements SharedPreferences { OnSharedPreferenceChangeListener listener) { listeners.remove(listener); } - - + + /** + * @author lado + * + */ public class Editor implements SharedPreferences.Editor { - - Map<String, Object> data = new HashMap<String, Object>(); + + Map<String, Object> modified = new HashMap<String, Object>(); + + private boolean clear = false; public SharedPreferences.Editor clear() { - data.clear(); + clear = true; + modified.clear(); return this; } public boolean commit() { - instance.init(map); - CreateOrUpdateStatus custatus = dao.createOrUpdate(instance); + + if(instance == null){ + map.putAll(modified); + return true; + } + + instance.set(modified); + + CreateOrUpdateStatus custatus = dao.createOrUpdate(instance); + boolean status = custatus.isCreated() || custatus.isUpdated(); - if(status == false) + if (status == false) return false; - + + map.putAll(modified); + + ++commits; - + // and update any listeners - for (OnSharedPreferenceChangeListener listener : listeners) { - listener.onSharedPreferenceChanged( - VdrSharedPreferences.this, null); + for (String key : modified.keySet()) { + for (OnSharedPreferenceChangeListener listener : listeners) { + listener.onSharedPreferenceChanged( + VdrSharedPreferences.this, key); + } } + modified.clear(); + return true; } - - public android.content.SharedPreferences.Editor put( - String key, Object value) { - map.put(key, value); - return this; - + public android.content.SharedPreferences.Editor put(String key, + Object value) { + synchronized (this) { + modified.put(key, value); + return this; + } } - public android.content.SharedPreferences.Editor putBoolean( - String key, boolean value) { - return put(key,value); + + public android.content.SharedPreferences.Editor putBoolean(String key, + boolean value) { + return put(key, value); } - public android.content.SharedPreferences.Editor putFloat( - String key, float value) { - return put(key,value); + public android.content.SharedPreferences.Editor putFloat(String key, + float value) { + return put(key, value); } public android.content.SharedPreferences.Editor putInt(String key, int value) { - return put(key,value); + return put(key, value); } public android.content.SharedPreferences.Editor putLong(String key, long value) { - return put(key,value); + return put(key, value); } - public android.content.SharedPreferences.Editor putString( - String key, String value) { - return put(key,value); + public android.content.SharedPreferences.Editor putString(String key, + String value) { + return put(key, value); } public android.content.SharedPreferences.Editor remove(String key) { - map.remove(key); - return this; + synchronized (this) { + modified.remove(key); + return this; + } } - public void apply() { commit(); } - public android.content.SharedPreferences.Editor putStringSet( - String arg0, Set<String> arg1) { - // TODO Auto-generated method stub - return null; + String key, Set<String> values) { + synchronized (this) { + modified.put(key, (values == null) ? null + : new HashSet<String>(values)); + return this; + } } } |