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