Seite 2 von 11

Verfasst: Do 10 Mär 2005, 8:41
von z3r0
Am Wocheende gibt es die RMI-Schnittstelle. Das einzige Problem das ich sehe, ist die Ermittlung der Sender-Id. Diese ist in TV-Browser ja nicht vorhanden. Das heisst, die Sender-Namen in TV-Browser muessen mit den Sendernamen in der Box übereinstimmen. Wie auch immer, um neue Timer anzulegen braucht XMG entweder einen "richtigen" Sendernamen, oder die richtige Channel-Id.

Verfasst: Do 10 Mär 2005, 13:11
von turmann
Das ist denke ich kein Problem. Wenn du dir das Plugin mal anschaust wirst du sehen, dass ich in den Einstellungen ein Channelmapping eingebaut habe. D.h. man kann jedem Sendernamen im TV-Browser einen beliebigen Namen zuordnen.

Bin ja schon gespannt, was die Schnittstelle alles bietet. Wird es möglich sein einen Timer durch Sendername, Start- und Endzeit/Datum zu identifizieren? Das wäre fürs Löschen eines Timers wichtig. Andernfalls wäre es gut wenn man beim Erstellen eine "TimerID" zurückkriegen würde. Folgende Methoden wären gut:

Code: Alles auswählen

void createNewTimer(Date startDate, Date endDate, String title, String sender) // statt Date wäre auch String denkbar
removeTimer(Date startDate, Date endDate, String title, String sender)
oder

Code: Alles auswählen

<ID> createNewTimer(Date startDate, Date endDate, String title, String sender) 
removeTimer(<ID>)
Ich hoffe das kommt jetzt nicht zu spät.

Tom

Verfasst: Do 10 Mär 2005, 16:48
von z3r0
Es gibt eine saveTimer(bla bla) Methode. Falls noch mehr gebraucht wird, kann man das dann ja nachziehen. Mal sehen ob der einfache Fall funktioniert :) Um mit XMG kommunizieren zu koennen, musst du die xmediagrabber.jar in den Classpath deines Plugins einbinden.

Verfasst: Fr 11 Mär 2005, 14:06
von turmann
Wäre nett, wenn du mir dann das Package oder die namen der RMI-Interfaces mitteilen könntest. Gibts die neue Version dann als Beta im Downloadbereich?

Noch ne Frage bezüglich RMI:
Startet XMG dann auch gleich die RMI-Registry mit? Wenn ja, unter welchen Namen sind die Funktionen Registriert?

Tom

Verfasst: Fr 11 Mär 2005, 21:19
von z3r0
Die rmiregistry wird mitgestartet (geht auch nicht anders) :)

Mit
(RMITimerReceiverIF)Naming.lookup("rmi://localhost:1097/xmgTimerServer");
bekommst du ein Objekt zurück das eine Methode saveTimer() besitzt. Als Parameter brauche ich
1. als String die channelId
2. String, den Sendernamen
3. long, Startzeit in millis
4. long, Stopzeit in millis
5. String, Titel der Sendung

Verfasst: Sa 12 Mär 2005, 10:49
von turmann
Es gibt wieder eine neue Version des Plugins.

Diesmal habe ich es um die Funktion in JtG Timer zu erstellen erweitert. Löschen der Timer funktioniert noch nicht.

Evtl. gibts beim ersten Start eine Fehlermeldung (wenn ihr eine frühere Version des Plugins schon verwendet hattet). Diese einfach ignorieren, TV-Browser schließen und nochmal starten, dann sollte es keine Probleme mehr geben.

Tom

Verfasst: So 13 Mär 2005, 17:40
von turmann
@z3r0

Wäre es möglich, das Interface um eine Methode zu erweitern, die mir bei Übergabe der Senderbezeichnung die SenderID zurückgibt. Sonst müsste ich mir die ID ja über die Box holen, was ich vermeiden will.
Am besten wäre natürlich eine Methode der ich den SenderNAMEN, Titel, Anfangs- und Endzeit als java.util.Date. Ich habe auch vor die Timer wieder löschen zu können.
Eine entsprechende Methode (gleicher Aufbau wie eben) wäre nicht schlecht und natürlich eine Methode, die mir alle Timer als Liste zurückliefert.

Tom

Verfasst: So 13 Mär 2005, 17:47
von z3r0
Hast recht. Ich bau das mal um, das nur der Sendername benötigt wird. In XMG ist ja schon alles da, die passende ID rauszufinden. Man muss das Rad ja nicht 2 mal erfinden.

Verfasst: So 13 Mär 2005, 20:27
von z3r0
In der Version 0.3.0b (eben hochgeladen) sieht die Schnittstelle etwas anders aus.

Damit muesste es gehen.

Code: Alles auswählen

RMITimerReceiverIF test = (RMITimerReceiverIF)Naming.lookup("rmi://localhost:1097/xmgTimerServer");
            test.saveTimer("sat.1", startInMillis, stopInMillis, "titel"));

Verfasst: So 13 Mär 2005, 20:28
von turmann
Danke wär echt super.

Verfasst: Mi 16 Mär 2005, 15:48
von turmann
Hallo,
es gibt wieder mal ne neue Version des XMGPlugins. Diese Version kann mittlerweile Timer in JtG setzen und wieder entfernen, CSV-Dateien schreiben und Timer im XMG erstellen (mehr gibt das RMI-Interface noch nicht her).
Denkt bitte immer an das Channel-Mapping (siehe Einstellungen).

Ach ja und berichtet doch bitte von euren Erfahrungen, sonst kanns keine Verbesserungen geben.

Tom

Verfasst: Mi 16 Mär 2005, 20:21
von z3r0
Hallo,
bei mir klappt da was nicht. Ich kann in den Einstellungen keine Sender zuordnen. Unter dem Einstellungsreiter "Sender" ist kein inziger Sender zu sehen. Weder bei TV-Broser-Sendern, noch bei den XMG-Senderen. Daraus resultiert wahrscheinlich der 2. Fehler. Wenn ich einen Timer setze, kommt dieser zwar in XMG an, aber es fehlt dern Sendername.

Ansonsten ist das eine Super Sache, wenn es funktionieren wuerde, und eine grosse Bereicherung. Sieht sehr komfotabel aus, auf diesem Wege Timer zu setzen.

Verfasst: Mi 16 Mär 2005, 23:54
von turmann
Hm,
sehr seltsam. Hast du dir den TV-Browser schon komplett eingerichtet d.h. die Senderlisten geladen und evtl. schon einige Sender zur Anzeige Ausgewählt? Normalerweise müssten in der Tabelle alle Sender stehen, die der TV-Browser kennt.
Hast du schon mal ne Version von meinem Plugin getestet? Dann könnten die alten Settings Probleme machen. Unter Windows kannst du unter C:\Dokumente und Einstellungen\<deinBenutzername>\.tvbrowser\ die beiden xmgplugen.... Dateien löschen und dann den TV-Browser neu starten. Vielleicht hilft auch ein neues Abrufen der Senderlisten.

Noch ne super Sache wäre eine Methode im RMI-Interface mit der ich auch Timer wieder entfernen kann.

Tom

Verfasst: Do 17 Mär 2005, 0:12
von turmann
Ich habe noch mal ne neue Version des Plugins hochgeladen. Könntest du das mal verwenden und den TV-Browser von der Kommandozeile starten, dann schick mir bitte die Ausgaben. Vielleicht helfen die weiter.

Verfasst: Do 17 Mär 2005, 6:05
von amdfan
Teste gerade das XMGPlugin 17.03.2005.zip.
Folgendes habe ich gemacht:"1) Zur Installation einfach das JAR-File 'XMGPlugin.jar' in das Plugin-Verzeichnis des TV-Browser kopiern. 2) Wer das XMGPlugin benutzen will, um Timer in JtG zu setzen muss die datei 'jRegistryKey.dll'
in <WindowsInstallationsverzeichnis>\system32 kopieren."
Beim Zugriff auf das (aktivierte) XMG-Plugin folgende Fehlermeldung:
Fehler: Ein nicht behandelter Fehler ist aufgetreten.
Details:


----- Start of stacktrace -----
Exception occurred during event dispatching:
java.lang.NoSuchMethodError: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
at xmgplugin.XMGSubSys.getSettingsTab(XMGSubSys.java:82)
at xmgplugin.XMGSettingsTab.createSettingsPanel(XMGSettingsTab.java:63)
at tvbrowser.ui.settings.ConfigPluginSettingsTab.createContentPanel(ConfigPluginSettingsTab.java:79)
at tvbrowser.ui.settings.ConfigPluginSettingsTab.createSettingsPanel(ConfigPluginSettingsTab.java:60)
at tvbrowser.ui.settings.SettingsDialog$SettingNode.getSettingsPanel(SettingsDialog.java:325)
at tvbrowser.ui.settings.SettingsDialog.showSettingsPanelForSelectedNode(SettingsDialog.java:224)
at tvbrowser.ui.settings.SettingsDialog.access$000(SettingsDialog.java:47)
at tvbrowser.ui.settings.SettingsDialog$1.valueChanged(SettingsDialog.java:83)
at javax.swing.JTree.fireValueChanged(Unknown Source)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
at javax.swing.JTree.setSelectionPath(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at util.ui.UiUtilities.centerAndShow(UiUtilities.java:84)
at tvbrowser.ui.settings.SettingsDialog.centerAndShow(SettingsDialog.java:135)
at tvbrowser.ui.mainframe.MainFrame.showSettingsDialog(MainFrame.java:674)
at tvbrowser.ui.mainframe.HorizontalToolBar$4.actionPerformed(HorizontalToolBar.java:184)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
----- End of stacktrace -----

Irgendeine Idee?