ulrich
2018-03-09 74f15b5b543bd46ae8ff22b424f2675d08ce3838
commit | author | age
98e5c6 1 /*
U 2  *  Radiozentrale - Webradio App
3  *  Copyright (C) 2018 Ulrich Hilger, http://uhilger.de
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see http://www.gnu.org/licenses/
17  */
18
19 package de.uhilger.radiozentrale.api;
20
21 import de.uhilger.baselink.PersistenceManager;
22 import de.uhilger.radiozentrale.daten.Abspieler;
74f15b 23 import de.uhilger.radiozentrale.daten.Sender;
98e5c6 24 import de.uhilger.radiozentrale.web.Initialiser;
74f15b 25 import java.net.HttpURLConnection;
U 26 import java.net.URL;
98e5c6 27 import java.sql.Connection;
b6585c 28 import java.util.List;
74f15b 29 import java.util.logging.Level;
98e5c6 30 import java.util.logging.Logger;
U 31
32 /**
33  *
34  */
35 public class AbspielerApi extends DbApi {
36
37   private static final Logger logger = Logger.getLogger(AbspielerApi.class.getName());
38
39   public static final String KEY_ABSPIELER_ID = "abs_id";
647739 40   public static final String ABSPIELER_SELECTED = "selected";
74f15b 41   public static final String SQL_GET_ABSPIELER_LIST = "getAbspielerList";
647739 42   public static final String SQL_UNSEL_ABSPIELER = "unselectAbspieler";
b6585c 43
98e5c6 44   
U 45   /**
647739 46    * Einen neuen Abspieler in der Datenbank speichern
U 47    * 
48    * @param abspieler der neue Abspieler
49    * return der Abspieler nach dem Speichern (mit ID)
98e5c6 50    */
U 51   public Abspieler neuerAbspieler(Abspieler abspieler) {
52     Abspieler neuerAbspieler = null;
53     PersistenceManager db = getDb();
54     Connection c = db.getConnection();
55     db.startTransaction(c);
56     int nextKey = getNextId(db, KEY_ABSPIELER_ID);
57     if(nextKey > -1) {
647739 58       if(abspieler.getZustand().equals(ABSPIELER_SELECTED)) {
U 59         db.execute(getSql(SQL_UNSEL_ABSPIELER), "", ABSPIELER_SELECTED);
60       }
98e5c6 61       abspieler.setId(nextKey);
647739 62       Object o = db.insert(abspieler, getMapper(Initialiser.MP_ABSPIELER));
98e5c6 63       if(o instanceof Abspieler) {
U 64         neuerAbspieler = (Abspieler) o;
65         db.commit(c);
66         logger.fine("Abspieler erstellt: " + abspieler.getId() + " " + abspieler.getName());
67       } else {
68         db.rollback(c);
69         logger.info("Abspieler konnte nicht erstellt werden: " + abspieler.getName());
70       } 
71     } else {
72       db.rollback(c);
73       logger.info("Abspieler konnte nicht erstellt werden, nextKey ist -1");
74     }
b6585c 75     return neuerAbspieler;   
98e5c6 76   }
b6585c 77   
647739 78   public Abspieler abspielerAendern(Abspieler abspieler) {
U 79     Abspieler geaendert = null;
80     PersistenceManager db = getDb();
81     Connection c = db.getConnection();
82     db.startTransaction(c);
83     if(abspieler.getZustand().equals(ABSPIELER_SELECTED)) {
84       db.execute(getSql(SQL_UNSEL_ABSPIELER), "", ABSPIELER_SELECTED);
85     }
86     Object o = db.update(abspieler, getMapper(Initialiser.MP_ABSPIELER));
87     if(o instanceof Abspieler) {
88       geaendert = (Abspieler) o;
89       db.commit(c);
90       logger.fine("Abspieler geaendert: " + abspieler.getId() + " " + abspieler.getName());
91     } else {
92       db.rollback(c);
93     }
94     return geaendert;
95   }
96   
97   public Abspieler abspielerLoeschen(Abspieler abspieler) {
98     Abspieler geloescht = null;
99     Object o = getDb().delete(abspieler, getMapper(Initialiser.MP_ABSPIELER));
100     if(o instanceof Abspieler) {
101       geloescht = (Abspieler) o;
102       logger.fine("Abspieler geloescht: " + abspieler.getId() + " " + abspieler.getName());
103     }
104     return geloescht;
105   }
106   
b6585c 107   public List abspielerliste() {
74f15b 108     return getDb().select(getSql(SQL_GET_ABSPIELER_LIST), getMapper(Initialiser.MP_ABSPIELER));
b6585c 109   }
U 110   
74f15b 111   public String abspielen(int abspielerId, int senderId) {
U 112     Abspieler a = getAbspieler(abspielerId);
113     Sender s = getSender(senderId);
114     StringBuffer url = new StringBuffer();
115     url.append(a.getUrl());
116     url.append("/sys/rpc?c=de.uhilger.pirc.App&m=abspielenMitParametern&p=");
117     url.append(s.getUrl());
118     url.append("&p=-o%20local&p=");
119     return abspielerKommandoSenden(url.toString());
120   }
121   
122   public String abspielenStoppen(int abspielerId) {
123     Abspieler a = getAbspieler(abspielerId);
124     StringBuffer url = new StringBuffer();
125     url.append(a.getUrl());
126     url.append("/sys/rpc?c=de.uhilger.pirc.App&m=kommando&p=q");
127     return abspielerKommandoSenden(url.toString());    
128   }
98e5c6 129 }