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