ulrich
2018-02-25 a0ec7b1043129c09ad1ed6050c8fc8bbf05488fd
SenderApi begonnen
3 files modified
2 files added
182 ■■■■■ changed files
src/java/de/uhilger/radiozentrale/api/Api.java 82 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/radiozentrale/api/SenderApi.java 66 ●●●●● patch | view | raw | blame | history
web/WEB-INF/sql.properties 4 ●●●● patch | view | raw | blame | history
web/WEB-INF/web.xml 12 ●●●●● patch | view | raw | blame | history
web/app.js 18 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/radiozentrale/api/Api.java
New file
@@ -0,0 +1,82 @@
/*
 *  Radiozentrale - Webradio App
 *  Copyright (C) 2018 Ulrich Hilger, http://uhilger.de
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see http://www.gnu.org/licenses/
 */
package de.uhilger.radiozentrale.api;
import de.uhilger.baselink.PersistenceManager;
import de.uhilger.baselink.Record;
import de.uhilger.radiozentrale.web.Initialiser;
import de.uhilger.transit.web.RequestKontext;
import de.uhilger.transit.web.WebKontext;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
/**
 *
 */
public abstract class Api implements WebKontext, RequestKontext {
  /** Zeiger zum Servlet-Kontext dieser Anwendung */
  private ServletContext ctx;
  private HttpServletRequest request;
  protected PersistenceManager getDb() {
    return (PersistenceManager) ctx.getAttribute(Initialiser.RZ_DB);
  }
  protected String getSql(String id) {
    Properties sql = (Properties) ctx.getAttribute(Initialiser.RZ_SQL_PROPERTIES);
    return sql.getProperty(id);
  }
  protected Record getMapper(String mapperName) {
    Record record = null;
    Object o = getServletContext().getAttribute(mapperName);
    if(o instanceof Record) {
      record = (Record) o;
    }
    return record;
  }
  /* ------------- Implementierung WebKontext ------------- */
  @Override
  public ServletContext getServletContext() {
    return ctx;
  }
  @Override
  public void setServletContext(ServletContext servletContext) {
    this.ctx = servletContext;
  }
  /* ------------- Implementierung RequestKontext ------------- */
  @Override
  public HttpServletRequest getRequest() {
    return request;
  }
  @Override
  public void setRequest(HttpServletRequest r) {
    this.request = r;
  }
}
src/java/de/uhilger/radiozentrale/api/SenderApi.java
New file
@@ -0,0 +1,66 @@
/*
 *  Radiozentrale - Webradio App
 *  Copyright (C) 2018 Ulrich Hilger, http://uhilger.de
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see http://www.gnu.org/licenses/
 */
package de.uhilger.radiozentrale.api;
import de.uhilger.baselink.GenericRecord;
import de.uhilger.baselink.PersistenceManager;
import de.uhilger.radiozentrale.daten.Sender;
import de.uhilger.radiozentrale.web.Initialiser;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
 *
 */
public class SenderApi extends Api {
  public static final String SQL_GET_SENDER = "getSender";
  public static final String SQL_GET_NEXT_KEY = "getNextKey";
  public static final String SQL_INCREMENT_KEY = "incrementKey";
  public static final String KEY_SENDER_ID = "sender_id";
  public Sender neuerSender(Sender sender) {
    Sender neuerSender = null;
    PersistenceManager db = getDb();
    Connection c = db.getConnection();
    db.startTransaction(c);
    List<List<String>> list = db.select(getSql(SQL_GET_NEXT_KEY), GenericRecord.WITHOUT_BLOBS, KEY_SENDER_ID);
    if(list != null && list.size() > 0) {
      int nextKey = Integer.parseInt(list.get(1).get(0));
      db.execute(getSql(SQL_INCREMENT_KEY), nextKey+1, KEY_SENDER_ID, nextKey);
      sender.setId(nextKey);
      Object o = getDb().insert(sender, getMapper(Initialiser.MP_SENDER));
      if(o instanceof Sender) {
        neuerSender = (Sender) o;
      }
    }
    db.commit(c);
    return neuerSender;
  }
  public List senderliste() {
    String sql = getSql(SQL_GET_SENDER);
    return getDb().select(sql, getMapper(Initialiser.MP_SENDER));
  }
}
web/WEB-INF/sql.properties
@@ -23,4 +23,8 @@
    app.keytable 
    where key_name = ?
  </entry>
  <entry key="getSender">
    select * from
    app.sender
  </entry>
</properties>
web/WEB-INF/web.xml
@@ -9,6 +9,18 @@
    <listener>
        <listener-class>de.uhilger.radiozentrale.web.Initialiser</listener-class>
    </listener>
    <servlet>
        <servlet-name>TransitServlet</servlet-name>
        <servlet-class>de.uhilger.transit.web.TransitServlet</servlet-class>
        <init-param>
            <param-name>klassen</param-name>
            <param-value>de.uhilger.radiozentrale.api</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>TransitServlet</servlet-name>
        <url-pattern>/api</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
web/app.js
@@ -248,7 +248,9 @@
  app_dialog_laden_und_zeigen(templateCache[TPL_DLG_SENDER_NEU], '');
  $('#sender-speichern').on('click', function() {
    $('#sender-speichern').off('click');
    app_kachel_neu(app_sender_dialog_lesen(--ID_UNDEFINED));
    var sender = app_sender_dialog_lesen(--ID_UNDEFINED);
    app_neuen_sender_speichern(sender);
    app_kachel_neu(sender);
    app_dialog_schliessen();
    app_meldung_mit_timeout('Speichern gewaehlt', 1500);
  });
@@ -456,6 +458,20 @@
  });
}
function app_neuen_sender_speichern(sender) {
  var obj = serialisieren(sender);
  var url = 'api?c=de.uhilger.radiozentrale.api.SenderApi&m=neuerSender';
  $.post( url, 'p=' + obj, function( result ) {
    console.log( result );
  }, "json");
}
/* Hilfsfunktionen */
function serialisieren(obj) {
  return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
}
/* Objekte */
function Sender(i, n, u, l) {