From 82594dab993741669b50fe1ec784f528fd836bc2 Mon Sep 17 00:00:00 2001
From: undisclosed
Date: Fri, 30 Dec 2022 08:47:11 +0000
Subject: [PATCH] Verwendung des VLCPlayer verbessert

---
 src/de/uhilger/calypso/MeldeThread.java         |    2 +
 src/de/uhilger/calypso/handler/OMXPlayer.java   |   11 +++--
 src/de/uhilger/calypso/handler/VLCPlayer.java   |   13 +-----
 src/de/uhilger/calypso/handler/BasePlayer.java  |   66 +++++++++++++++++++++++++++++++++
 src/de/uhilger/calypso/handler/PlayHandler.java |    4 +
 5 files changed, 79 insertions(+), 17 deletions(-)

diff --git a/src/de/uhilger/calypso/MeldeThread.java b/src/de/uhilger/calypso/MeldeThread.java
index 1bdfe01..7d03fb5 100644
--- a/src/de/uhilger/calypso/MeldeThread.java
+++ b/src/de/uhilger/calypso/MeldeThread.java
@@ -70,6 +70,8 @@
   }
   
   private void prozessBeendetMelden() {
+    logger.log(Level.FINER, 
+              "Alle Lauscher werden ueber beendeten Abspielprozess verstaendigt..");
     Iterator<ProzessLauscher> i = lauscher.iterator();
     while(i.hasNext()) {
       ProzessLauscher l = i.next();
diff --git a/src/de/uhilger/calypso/handler/BasePlayer.java b/src/de/uhilger/calypso/handler/BasePlayer.java
new file mode 100644
index 0000000..28a052d
--- /dev/null
+++ b/src/de/uhilger/calypso/handler/BasePlayer.java
@@ -0,0 +1,66 @@
+package de.uhilger.calypso.handler;
+
+import de.uhilger.calypso.App;
+import static de.uhilger.calypso.handler.OMXPlayer.CMD_STOP;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ulli
+ */
+public abstract class BasePlayer implements Player {
+  
+  private static final Logger logger = Logger.getLogger(BasePlayer.class.getName());
+  
+  
+  @Override
+  public void prozessBeendet(String meldeUrlStr) {
+    logger.log(Level.INFO, 
+              "Abspielen beendet, sende Meldung an {0}.", 
+              new Object[]{meldeUrlStr});
+    try {
+      HttpURLConnection conn = (HttpURLConnection) new URL(meldeUrlStr).openConnection();
+      conn.setRequestMethod("GET");
+      conn.connect();
+      int status = conn.getResponseCode();
+      logger.log(Level.INFO, 
+              "Abspielen beendet, Meldung an {0} mit Statuscode {1} gesendet.", 
+              new Object[]{meldeUrlStr, status});
+          /*
+            fuer den Fall, dass ein Stopp-Signal den Player nicht erreicht 
+            oder dort nicht funktioniert, gibt es keine Moeglichkeit festzustellen,
+            dass der Player noch spielt. Damit in einem solchen Fall der Zeiger 
+            auf den Abspielprozess nicht verloren geht, wird  der Zeiger nicht 
+            auf null gesetzt.
+          */
+      //App.setPlayerProcess(null);
+    } catch(IOException ex) {
+      logger.log(Level.INFO, ex.getMessage(), ex);
+    }
+  }
+
+  @Override
+  public String tilgen() {
+    logger.log(Level.INFO,"Player tilgen.");
+    String antwort; // = null;
+    try {
+      Process o = App.getPlayerProcess();
+      if(o == null) {
+        antwort = "Es ist kein Player zum Beenden vorhanden.";
+        //App.setPlayerProcess(null);
+      } else {
+        kommando(CMD_STOP); // setzt den Prozess der App auf null
+        antwort = "Player gestoppt.";
+      }
+    } 
+    catch(Exception ex) {
+      antwort = "Fehler: " + ex.getMessage();
+    }
+    return antwort;
+  }
+    
+}
diff --git a/src/de/uhilger/calypso/handler/OMXPlayer.java b/src/de/uhilger/calypso/handler/OMXPlayer.java
index 4248cb8..10b869f 100644
--- a/src/de/uhilger/calypso/handler/OMXPlayer.java
+++ b/src/de/uhilger/calypso/handler/OMXPlayer.java
@@ -27,8 +27,6 @@
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -45,7 +43,7 @@
  *
  * @author ulrich
  */
-public class OMXPlayer implements Player , ProzessLauscher {
+public class OMXPlayer extends BasePlayer implements Player , ProzessLauscher {
   
   private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName());
   
@@ -131,6 +129,7 @@
    *
    * @return die Antwort des Servers
    */
+  /*
   @Override
   public String tilgen() {
     String antwort; // = null;
@@ -149,7 +148,7 @@
     }
     return antwort;
   }
-  
+  */
   
   /**
    * Dem laufenden Abspielprozess ein Kommando uebermitteln
@@ -202,6 +201,7 @@
   
   /* ------ Implementierung ProzessLauscher ----------------- */
   
+  /*
   @Override
   public void prozessBeendet(String meldeUrlStr) {
     try {
@@ -220,9 +220,10 @@
             auf null gesetzt.
           */
       //App.setPlayerProcess(null);
+  /*
     } catch(IOException ex) {
       logger.log(Level.INFO, ex.getMessage(), ex);
     }
   }
-  
+  */
 }
diff --git a/src/de/uhilger/calypso/handler/PlayHandler.java b/src/de/uhilger/calypso/handler/PlayHandler.java
index f11a935..0c2b527 100644
--- a/src/de/uhilger/calypso/handler/PlayHandler.java
+++ b/src/de/uhilger/calypso/handler/PlayHandler.java
@@ -77,7 +77,9 @@
         //FileUtils.deleteDirectory(new File(System.getProperty("omx.wd"), "omx-logs"));
         FileSystem fs = FileSystems.getDefault();
         Path path = fs.getPath(System.getProperty("omx.wd"), "omx-logs");
-        deleteDirectory(path);
+        if(path.toFile().exists()) {
+          deleteDirectory(path);
+        }
         //Files.delete(path);
       } catch (IOException ex) {
         logger.log(Level.SEVERE, null, ex);
diff --git a/src/de/uhilger/calypso/handler/VLCPlayer.java b/src/de/uhilger/calypso/handler/VLCPlayer.java
index 29469c0..849babb 100644
--- a/src/de/uhilger/calypso/handler/VLCPlayer.java
+++ b/src/de/uhilger/calypso/handler/VLCPlayer.java
@@ -7,7 +7,6 @@
 
 import de.uhilger.calypso.App;
 import de.uhilger.calypso.MeldeThread;
-import static de.uhilger.calypso.handler.OMXPlayer.BLANK;
 import java.io.IOException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -16,7 +15,7 @@
  *
  * @author ulrich
  */
-public class VLCPlayer implements Player {
+public class VLCPlayer extends BasePlayer implements Player {
   
   private static final Logger logger = Logger.getLogger(VLCPlayer.class.getName());
 
@@ -58,6 +57,7 @@
         
         kommando.append(urlStr);
       }
+      kommando.append(" vlc://quit");
       logger.log(Level.FINE, "kommando: {0}", kommando.toString());
       Process player_process = Runtime.getRuntime().exec(kommando.toString());
       if(meldeUrlStr != null) {
@@ -90,14 +90,5 @@
     return antwort;
   }
 
-  @Override
-  public void prozessBeendet(String meldeUrlStr) {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
 
-  @Override
-  public String tilgen() {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
-  
 }

--
Gitblit v1.9.3