src/java/de/uhilger/radiozentrale/api/Api.java | ●●●●● patch | view | raw | blame | history | |
src/java/de/uhilger/radiozentrale/api/SenderApi.java | ●●●●● patch | view | raw | blame | history | |
web/WEB-INF/sql.properties | ●●●●● patch | view | raw | blame | history | |
web/WEB-INF/web.xml | ●●●●● patch | view | raw | blame | history | |
web/app.js | ●●●●● 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) {