ulrich
2018-03-09 64773918c0eb346be28c5290a9186b6eaa34bcbe
Abspieler aendern und loeschen
5 files modified
78 ■■■■ changed files
src/java/de/uhilger/radiozentrale/api/AbspielerApi.java 44 ●●●● patch | view | raw | blame | history
web/WEB-INF/sql.properties 5 ●●●●● patch | view | raw | blame | history
web/app.js 25 ●●●● patch | view | raw | blame | history
web/data/tpl/abspieler-eintrag.tpl 2 ●●● patch | view | raw | blame | history
web/data/tpl/abspieler-transit.tpl 2 ●●● patch | view | raw | blame | history
src/java/de/uhilger/radiozentrale/api/AbspielerApi.java
@@ -33,14 +33,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 = "getAbspieler";
  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;
@@ -49,8 +51,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);
@@ -66,6 +71,35 @@
    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), getMapper(Initialiser.MP_ABSPIELER));
  }
web/WEB-INF/sql.properties
@@ -31,4 +31,9 @@
    select * from 
    app.abspieler
  </entry>
  <entry key="unselectAbspieler">
    update app.abspieler
    set abs_zustand = ?
    where abs_zustand = ?
  </entry>
</properties>
web/app.js
@@ -112,7 +112,8 @@
  var aname = opt.text();
  var aurl = opt.attr("aurl");
  var zustand = opt.attr("standardzustand");
  return new Abspieler(-1, aname, aurl, atyp, "", zustand);
  var id = opt.attr("aid");
  return new Abspieler(id, aname, aurl, atyp, "", zustand);
}
/*
@@ -166,6 +167,7 @@
function app_abspieler_entfernen(abspieler) {
  $(".abspieler-auswahl :selected").remove();
  app_abspieler_loeschen_aus_db(abspieler);
}
/* Senderliste */
@@ -309,20 +311,21 @@
    $('#abspieler-speichern').off('click');
    // Aenderungen auf die Bedienoberflaeche uebernehmen
    var abspieler = app_abspieler_dialog_lesen();
    if(abspieler.zustand === 'selected') {
    var abspieler2 = app_abspieler_dialog_lesen(abspieler.id);
    if(abspieler2.zustand === 'selected') {
      $(".abspieler-auswahl").children().attr("standardzustand", "");
    }
    var opt = $(".abspieler-auswahl :selected");
    opt.attr("atyp", abspieler.typ);
    opt.attr("aurl", abspieler.url);
    opt.attr("standardzustand", abspieler.zustand);
    opt.text(abspieler.name);
    opt.attr("atyp", abspieler2.typ);
    opt.attr("aurl", abspieler2.url);
    opt.attr("standardzustand", abspieler2.zustand);
    opt.text(abspieler2.name);
    /*
      hier fehlt noch eine Funktion zum Speichern
      der Aenderungen
    */
    app_abspieler_aendern(abspieler2);
    app_dialog_schliessen();
    app_meldung_mit_timeout('Speichern gewaehlt', 1500);
@@ -501,6 +504,14 @@
  app_crud_api(URL_ABSPIELER_API, 'neuerAbspieler', abspieler);
}
function app_abspieler_aendern(abspieler) {
  app_crud_api(URL_ABSPIELER_API, 'abspielerAendern', abspieler);
}
function app_abspieler_loeschen_aus_db(abspieler) {
  app_crud_api(URL_ABSPIELER_API, 'abspielerLoeschen', abspieler);
}
/* Hilfsfunktionen */
function serialisieren(obj) {
web/data/tpl/abspieler-eintrag.tpl
@@ -1 +1 @@
<option {{zustand}} atyp="{{typ}}" aurl="{{url}}">{{name}}</option>
<option {{zustand}} aid="{{id}}" atyp="{{typ}}" aurl="{{url}}">{{name}}</option>
web/data/tpl/abspieler-transit.tpl
@@ -1,7 +1,7 @@
<label class="inline-label abspieler-lb">Abspieler:</label>
<select name="abspieler" size="1" class="abspieler-auswahl">
  {{#List}}
    <option {{zustand}} standardzustand="{{zustand}}" atyp="{{typ}}" aurl="{{url}}">{{name}}</option>
    <option {{zustand}} standardzustand="{{zustand}}" aid="{{id}}" atyp="{{typ}}" aurl="{{url}}">{{name}}</option>
  {{/List}}
</select>
<button type="button" id="abspielen-stoppen">&#x25a0;</button>