| | |
| | | |
| | | import de.uhilger.baselink.PersistenceManager; |
| | | import de.uhilger.radiozentrale.daten.Abspieler; |
| | | import de.uhilger.radiozentrale.daten.Sender; |
| | | import de.uhilger.radiozentrale.web.Initialiser; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.sql.Connection; |
| | | import java.util.List; |
| | | import java.util.logging.Level; |
| | | import java.util.logging.Logger; |
| | | |
| | | /** |
| | |
| | | private static final Logger logger = Logger.getLogger(AbspielerApi.class.getName()); |
| | | |
| | | public static final String KEY_ABSPIELER_ID = "abs_id"; |
| | | public static final String SQL_GET_ABSPIELER = "getAbspieler"; |
| | | public static final String ABSPIELER_SELECTED = "selected"; |
| | | public static final String SQL_GET_ABSPIELER_LIST = "getAbspielerList"; |
| | | 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; |
| | |
| | | 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); |
| | |
| | | return neuerAbspieler; |
| | | } |
| | | |
| | | public List abspielerliste() { |
| | | return getDb().select(getSql(SQL_GET_ABSPIELER), getMapper(Initialiser.MP_ABSPIELER)); |
| | | 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_LIST), getMapper(Initialiser.MP_ABSPIELER)); |
| | | } |
| | | |
| | | public String abspielen(int abspielerId, int senderId) { |
| | | Abspieler a = getAbspieler(abspielerId); |
| | | Sender s = getSender(senderId); |
| | | StringBuffer url = new StringBuffer(); |
| | | url.append(a.getUrl()); |
| | | url.append("/sys/rpc?c=de.uhilger.pirc.App&m=abspielenMitParametern&p="); |
| | | url.append(s.getUrl()); |
| | | url.append("&p=-o%20local&p="); |
| | | return abspielerKommandoSenden(url.toString()); |
| | | } |
| | | |
| | | public String abspielenStoppen(int abspielerId) { |
| | | Abspieler a = getAbspieler(abspielerId); |
| | | StringBuffer url = new StringBuffer(); |
| | | url.append(a.getUrl()); |
| | | url.append("/sys/rpc?c=de.uhilger.pirc.App&m=kommando&p=q"); |
| | | return abspielerKommandoSenden(url.toString()); |
| | | } |
| | | } |