refactored backend code to use Map

storage_ts_index
Georg Lukas 2011-02-18 21:18:03 +01:00
rodzic 105ed3ab7e
commit bc5f1a9b2f
2 zmienionych plików z 39 dodań i 15 usunięć

Wyświetl plik

@ -6,23 +6,10 @@ object AprsIsUploader {
val DEFAULT_CONNTYPE = "tcp"
def instanciateUploader(service : AprsService, prefs : SharedPreferences) : AprsIsUploader = {
prefs.getString("conntype", DEFAULT_CONNTYPE) match {
case "udp" =>
new UdpUploader(prefs)
case "http" =>
new HttpPostUploader(prefs)
case "afsk" =>
new AfskUploader(prefs)
case _ =>
new TcpUploader(service, prefs)
}
Backend.defaultBackendInfo(prefs).create(service, prefs)
}
def instanciatePrefsAct(prefs : SharedPreferences) = {
prefs.getString("conntype", DEFAULT_CONNTYPE) match {
case "afsk" => R.xml.pref_afsk
case "udp" => R.xml.pref_udp
case _ => R.xml.pref_tcp // TCP is default
}
Backend.defaultBackendInfo(prefs).prefxml
}
}

Wyświetl plik

@ -0,0 +1,37 @@
package de.duenndns.aprsdroid
import _root_.android.content.SharedPreferences
object Backend {
val backend_collection = Map(
"udp" -> new BackendInfo(
(s, p) => new UdpUploader(p),
R.xml.pref_udp,
true),
"http" -> new BackendInfo(
(s, p) => new HttpPostUploader(p),
R.xml.pref_http,
true),
"afsk" -> new BackendInfo(
(s, p) => new AfskUploader(p),
R.xml.pref_afsk,
false),
"tcp" -> new BackendInfo(
(s, p) => new TcpUploader(s, p),
R.xml.pref_tcp,
true)
)
def defaultBackendInfo(prefs : SharedPreferences) : BackendInfo = {
backend_collection.get(prefs.getString("conntype", "")) match {
case Some(bi) => bi
case None => backend_collection("tcp")
}
}
}
class BackendInfo(
val create : (AprsService, SharedPreferences) => AprsIsUploader,
val prefxml : Int,
val need_passcode : Boolean
) {}