From a0ec7b1043129c09ad1ed6050c8fc8bbf05488fd Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Sun, 25 Feb 2018 18:05:28 +0000 Subject: [PATCH] SenderApi begonnen --- web/WEB-INF/web.xml | 12 +++ src/java/de/uhilger/radiozentrale/api/SenderApi.java | 66 ++++++++++++++++ web/WEB-INF/sql.properties | 4 + src/java/de/uhilger/radiozentrale/api/Api.java | 82 ++++++++++++++++++++ web/app.js | 18 ++++ 5 files changed, 181 insertions(+), 1 deletions(-) diff --git a/src/java/de/uhilger/radiozentrale/api/Api.java b/src/java/de/uhilger/radiozentrale/api/Api.java new file mode 100644 index 0000000..d68b587 --- /dev/null +++ b/src/java/de/uhilger/radiozentrale/api/Api.java @@ -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; + } + +} diff --git a/src/java/de/uhilger/radiozentrale/api/SenderApi.java b/src/java/de/uhilger/radiozentrale/api/SenderApi.java new file mode 100644 index 0000000..ac56940 --- /dev/null +++ b/src/java/de/uhilger/radiozentrale/api/SenderApi.java @@ -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)); + } +} diff --git a/web/WEB-INF/sql.properties b/web/WEB-INF/sql.properties index 5881357..f33598d 100644 --- a/web/WEB-INF/sql.properties +++ b/web/WEB-INF/sql.properties @@ -23,4 +23,8 @@ app.keytable where key_name = ? </entry> + <entry key="getSender"> + select * from + app.sender + </entry> </properties> diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml index 1f4d8f3..55b2926 100644 --- a/web/WEB-INF/web.xml +++ b/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 diff --git a/web/app.js b/web/app.js index 7647533..d3613cf 100644 --- a/web/app.js +++ b/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) { -- Gitblit v1.9.3