ulrich
2018-03-20 c726ded391f551cb6024b46af3de5931b0f0c531
src/java/de/uhilger/radiozentrale/api/AbspielerApi.java
@@ -20,8 +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;
/**
@@ -32,12 +37,16 @@
  private static final Logger logger = Logger.getLogger(AbspielerApi.class.getName());
  public static final String KEY_ABSPIELER_ID = "abs_id";
  public static final String ABSPIELER_SELECTED = "selected";
  public static final String SQL_GET_ABSPIELER_LIST = "getAbspielerList";
  public static final String SQL_UNSEL_ABSPIELER = "unselectAbspieler";
  
  /**
   * TODO selected bei anderen Abspielern entfernen, wenn der neue Abspieler
   * selected sein soll
   * @param abspieler
   * @return
   * Einen neuen Abspieler in der Datenbank speichern
   *
   * @param abspieler der neue Abspieler
   * return der Abspieler nach dem Speichern (mit ID)
   */
  public Abspieler neuerAbspieler(Abspieler abspieler) {
    Abspieler neuerAbspieler = null;
@@ -46,8 +55,11 @@
    db.startTransaction(c);
    int nextKey = getNextId(db, KEY_ABSPIELER_ID);
    if(nextKey > -1) {
      if(abspieler.getZustand().equals(ABSPIELER_SELECTED)) {
        db.execute(getSql(SQL_UNSEL_ABSPIELER), "", ABSPIELER_SELECTED);
      }
      abspieler.setId(nextKey);
      Object o = getDb().insert(abspieler, getMapper(Initialiser.MP_ABSPIELER));
      Object o = db.insert(abspieler, getMapper(Initialiser.MP_ABSPIELER));
      if(o instanceof Abspieler) {
        neuerAbspieler = (Abspieler) o;
        db.commit(c);
@@ -60,7 +72,58 @@
      db.rollback(c);
      logger.info("Abspieler konnte nicht erstellt werden, nextKey ist -1");
    }
    return neuerAbspieler;
    return neuerAbspieler;
  }
  public Abspieler abspielerAendern(Abspieler abspieler) {
    Abspieler geaendert = null;
    PersistenceManager db = getDb();
    Connection c = db.getConnection();
    db.startTransaction(c);
    if(abspieler.getZustand().equals(ABSPIELER_SELECTED)) {
      db.execute(getSql(SQL_UNSEL_ABSPIELER), "", ABSPIELER_SELECTED);
    }
    Object o = db.update(abspieler, getMapper(Initialiser.MP_ABSPIELER));
    if(o instanceof Abspieler) {
      geaendert = (Abspieler) o;
      db.commit(c);
      logger.fine("Abspieler geaendert: " + abspieler.getId() + " " + abspieler.getName());
    } else {
      db.rollback(c);
    }
    return geaendert;
  }
  public Abspieler abspielerLoeschen(Abspieler abspieler) {
    Abspieler geloescht = null;
    Object o = getDb().delete(abspieler, getMapper(Initialiser.MP_ABSPIELER));
    if(o instanceof Abspieler) {
      geloescht = (Abspieler) o;
      logger.fine("Abspieler geloescht: " + abspieler.getId() + " " + abspieler.getName());
    }
    return geloescht;
  }
  public List abspielerliste() {
    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());
  }
}