From 74f15b5b543bd46ae8ff22b424f2675d08ce3838 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Fri, 09 Mar 2018 18:37:15 +0000 Subject: [PATCH] Abspielen via PiRC auf den Server verlagert --- src/java/de/uhilger/radiozentrale/api/DbApi.java | 52 ++++++++++++++++++++++++++ src/java/de/uhilger/radiozentrale/api/SenderApi.java | 4 +- web/WEB-INF/sql.properties | 14 ++++++- src/java/de/uhilger/radiozentrale/api/AbspielerApi.java | 26 ++++++++++++- web/app.js | 6 +++ 5 files changed, 96 insertions(+), 6 deletions(-) diff --git a/src/java/de/uhilger/radiozentrale/api/AbspielerApi.java b/src/java/de/uhilger/radiozentrale/api/AbspielerApi.java index 03a4d25..e5490ee 100644 --- a/src/java/de/uhilger/radiozentrale/api/AbspielerApi.java +++ b/src/java/de/uhilger/radiozentrale/api/AbspielerApi.java @@ -20,9 +20,13 @@ import de.uhilger.baselink.PersistenceManager; import de.uhilger.radiozentrale.daten.Abspieler; +import de.uhilger.radiozentrale.daten.Sender; import de.uhilger.radiozentrale.web.Initialiser; +import java.net.HttpURLConnection; +import java.net.URL; import java.sql.Connection; import java.util.List; +import java.util.logging.Level; import java.util.logging.Logger; /** @@ -34,7 +38,7 @@ public static final String KEY_ABSPIELER_ID = "abs_id"; public static final String ABSPIELER_SELECTED = "selected"; - public static final String SQL_GET_ABSPIELER = "getAbspieler"; + public static final String SQL_GET_ABSPIELER_LIST = "getAbspielerList"; public static final String SQL_UNSEL_ABSPIELER = "unselectAbspieler"; @@ -101,7 +105,25 @@ } public List abspielerliste() { - return getDb().select(getSql(SQL_GET_ABSPIELER), getMapper(Initialiser.MP_ABSPIELER)); + return getDb().select(getSql(SQL_GET_ABSPIELER_LIST), getMapper(Initialiser.MP_ABSPIELER)); } + public String abspielen(int abspielerId, int senderId) { + Abspieler a = getAbspieler(abspielerId); + Sender s = getSender(senderId); + StringBuffer url = new StringBuffer(); + url.append(a.getUrl()); + url.append("/sys/rpc?c=de.uhilger.pirc.App&m=abspielenMitParametern&p="); + url.append(s.getUrl()); + url.append("&p=-o%20local&p="); + return abspielerKommandoSenden(url.toString()); + } + + public String abspielenStoppen(int abspielerId) { + Abspieler a = getAbspieler(abspielerId); + StringBuffer url = new StringBuffer(); + url.append(a.getUrl()); + url.append("/sys/rpc?c=de.uhilger.pirc.App&m=kommando&p=q"); + return abspielerKommandoSenden(url.toString()); + } } diff --git a/src/java/de/uhilger/radiozentrale/api/DbApi.java b/src/java/de/uhilger/radiozentrale/api/DbApi.java index 1fd13e5..0dd5fe2 100644 --- a/src/java/de/uhilger/radiozentrale/api/DbApi.java +++ b/src/java/de/uhilger/radiozentrale/api/DbApi.java @@ -7,15 +7,26 @@ import de.uhilger.baselink.GenericRecord; import de.uhilger.baselink.PersistenceManager; +import de.uhilger.radiozentrale.daten.Abspieler; +import de.uhilger.radiozentrale.daten.Sender; +import de.uhilger.radiozentrale.web.Initialiser; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; /** * */ public abstract class DbApi extends Api { + private static final Logger logger = Logger.getLogger(DbApi.class.getName()); + public static final String SQL_GET_NEXT_KEY = "getNextKey"; public static final String SQL_INCREMENT_KEY = "incrementKey"; + public static final String SQL_GET_ABSPIELER = "getAbspieler"; + public static final String SQL_GET_SENDER = "getSender"; protected int getNextId(PersistenceManager db, String key) { int nextKey = -1; @@ -28,4 +39,45 @@ } return nextKey; } + + protected Abspieler getAbspieler(int id) { + Abspieler a = null; + List list = getDb().select(getSql(SQL_GET_ABSPIELER), getMapper(Initialiser.MP_ABSPIELER), true, id); + if(list != null && list.size() > 0) { + Object o = list.get(0); + if(o instanceof Abspieler) { + a = (Abspieler) o; + } + } + return a; + } + + protected Sender getSender(int id) { + Sender s = null; + List list = getDb().select(getSql(SQL_GET_SENDER), getMapper(Initialiser.MP_SENDER), true, id); + if(list != null && list.size() > 0) { + Object o = list.get(0); + if(o instanceof Sender) { + s = (Sender) o; + } + } + return s; + } + + protected String abspielerKommandoSenden(String kommando) { + String antwort = null; + logger.info(kommando); + try { + HttpURLConnection conn = (HttpURLConnection) new URL(kommando).openConnection(); + conn.setRequestMethod("GET"); + conn.connect(); + int status = conn.getResponseCode(); + String msg = conn.getResponseMessage(); + antwort = "Kommando " + kommando + " mit Status " + status + " " + msg + " gesendet."; + logger.log(Level.INFO, antwort); + } catch(Exception ex) { + logger.log(Level.INFO, ex.getMessage(), ex); + } + return antwort; + } } diff --git a/src/java/de/uhilger/radiozentrale/api/SenderApi.java b/src/java/de/uhilger/radiozentrale/api/SenderApi.java index 1c6800e..7088ff2 100644 --- a/src/java/de/uhilger/radiozentrale/api/SenderApi.java +++ b/src/java/de/uhilger/radiozentrale/api/SenderApi.java @@ -32,7 +32,7 @@ private static final Logger logger = Logger.getLogger(SenderApi.class.getName()); - public static final String SQL_GET_SENDER = "getSender"; + public static final String SQL_GET_SENDER_LIST = "getSenderList"; public static final String KEY_SENDER_ID = "sender_id"; public Sender neuerSender(Sender sender) { @@ -80,7 +80,7 @@ } public List senderliste() { - return getDb().select(getSql(SQL_GET_SENDER), getMapper(Initialiser.MP_SENDER)); + return getDb().select(getSql(SQL_GET_SENDER_LIST), getMapper(Initialiser.MP_SENDER)); } } diff --git a/web/WEB-INF/sql.properties b/web/WEB-INF/sql.properties index c02c03b..3fc254c 100644 --- a/web/WEB-INF/sql.properties +++ b/web/WEB-INF/sql.properties @@ -23,14 +23,24 @@ app.keytable where key_name = ? </entry> - <entry key="getSender"> + <entry key="getSenderList"> select * from app.sender </entry> - <entry key="getAbspieler"> + <entry key="getSender"> + select * from + app.sender + where sender_id = ? + </entry> + <entry key="getAbspielerList"> select * from app.abspieler </entry> + <entry key="getAbspieler"> + select * from + app.abspieler + where abs_id = ? + </entry> <entry key="unselectAbspieler"> update app.abspieler set abs_zustand = ? diff --git a/web/app.js b/web/app.js index b504356..6367bc6 100644 --- a/web/app.js +++ b/web/app.js @@ -129,11 +129,14 @@ function app_abspielen(sender, abspieler) { var url; if(abspieler.typ === 'pirc') { + /* url = abspieler.url + '/sys/rpc?c=de.uhilger.pirc.App&m=abspielenMitParametern&p=' + sender.url + '&p=-o%20local&p='; + */ + url = URL_ABSPIELER_API + 'abspielen&p=' + abspieler.id + '&p=' + sender.id; app_radio_kommando_senden(url); } else { url = sender.url; @@ -145,9 +148,12 @@ function app_abspielen_stoppen() { var abspieler = app_get_abspiel_ziel(); if(abspieler.typ === 'pirc') { + /* var url = abspieler.url + '/sys/rpc?c=de.uhilger.pirc.App&m=kommando&p=q'; + */ + var url = URL_ABSPIELER_API + 'abspielenStoppen&p=' + abspieler.id; app_radio_kommando_senden(url); } else { // 'hier abspielen' stoppen muss noch gebaut werden -- Gitblit v1.9.3