BeanShell - Textdatei auslesen

Bei Problemen mit der Bedienung von TV-Browser, bitte hier posten.
ds10
Site Admin
Beiträge: 19117
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Sheldon2012 hat geschrieben:Ich habe mal zur Laufzeit die CSV-Datei umbenannt. Das stört ihn aber gar nicht. Er arbeitet einfach mit den alten Daten weiter.
Dann machst du etwas falsch. Die Instanz muss nicht aktualisiert werden (was du im Übrigen auch gar nicht kannst), denn sie hat den Code den du programmiert hast und wenn der nicht richtig arbeitet, dann funktioniert es halt nicht.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Das da was falsch läuft, ist schon klar. Aber was? ich finde den Fehler einfach nicht!
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

vielleicht solltest du mal den code der fraglichen klasse komplett posten. aus den schnippseln und beim überfliegen werd ich nicht schlau daraus. nur, weil du das file nochmal neu instanziierst (File data = new File(mFile);), werden die daten ja nicht neu eingelesen.
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Wenn Du da mal reinschauen möchtest, kannst Du die CSVFileFilterComponent.jar unter Plugins - Sonstige finden.
Da ist der aktuelle Code drin. Dann kann ich Dir sagen, was ich für die Aktualisierung modifizeirt habe. Das sind nur die 3 Stellen, die ich bereits gepostet habe. Das ist vielleicht einfacher, als den ganzen Code zu posten.

Ein neues Klassenfeld

Code: Alles auswählen


public class CSVFileFilterComp extends PluginsFilterComponent{
   ......
   private long lastFileModificationTime; 
  .....
   
Auruf von readFile() in accept(Program program)

Code: Alles auswählen


   @Override
   public boolean accept(Program program) {     
	  if(program != null && mCSVData != null) {         
    	 readFile(); 
         ......

Und der Vergleich der Timestamps in Millisekunden in readFile()

Code: Alles auswählen


   private synchronized void readFile() {     
      String line = EMPTY_STRING;
   
      if (mFile != null){
         File data = new File(mFile);         
         
         if (data.lastModified() == lastFileModificationTime) {
        	return;
         }
         
         lastFileModificationTime = data.lastModified(); 
                  
         Reader r;
         try {		                    
            if(data.isFile()) {
               r = new InputStreamReader(new FileInputStream(mFile), "UTF-8");	
               try{           
                  // Read CSV file
                  br = new BufferedReader(r);
           
                  // Clear the map
                  if (mCSVData != null){
                     mCSVData.clear();
                     
                     if (mCSVData.isEmpty()) {
                        System.out.println("Map is empty!");
                     }
                  } 
                  
                  line = br.readLine();
 
                  while (line != null){
                     processLine(line);
                     line = br.readLine();
                  } 
           
                  closeReaders(r,br);   
               } catch (IOException ioe) {
                  closeReaders(r,br);
                  ioe.printStackTrace();
               }
            }               
		 } catch (UnsupportedEncodingException e) {
		   e.printStackTrace();
		 } catch (FileNotFoundException e) {
			e.printStackTrace();
		 }
      }
   }  

Zuletzt geändert von Sheldon2012 am 10 Jul 2015, 19:39, insgesamt 1-mal geändert.
ds10
Site Admin
Beiträge: 19117
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Wenn ich mich recht entsinne hatten wir doch einen Cache für die Sendungen vorgesehen, in dem der Status der Filterung für eine Sendung gespeichert wird. Der muss natürlich auch gelöscht werden, sonst werden die neu eingelesenen Daten nicht benutzt werden.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Ach je! Du meinst die mPogramStatusMap! Richtig?
Vielen Dank! Das war's!
Zuletzt geändert von Sheldon2012 am 10 Jul 2015, 19:47, insgesamt 1-mal geändert.
ds10
Site Admin
Beiträge: 19117
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Ja, das wird die wohl sein.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Mist! Daran hatte ich nicht gedacht! Vielen Dank für den Hinweis!
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Interessant ist, das die Daten auch aktualisiert werden, wenn ein Filter (Sendungstitelfilter) verwendet wird, der die Komponente nicht verwendet.
Das hätte ich eigentlich nicht erwartet. Läuft da im TV-Browser noch etwas im Hintergrund.
Oder liegt das am Scroller im Tab Lieblingssendungen. Wenn ich mich richtig erinnere, hattest Du damals erwähnt, das der permanent Filter aufruft.

Natürlich ist es so noch praktischer. Ich verstehe es aber nicht.
Zuletzt geändert von Sheldon2012 am 10 Jul 2015, 20:16, insgesamt 1-mal geändert.
ds10
Site Admin
Beiträge: 19117
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Warum die accept-Methode nun genau aufgerufen wird, kann ich auch nicht sagen, es wird aber einen sinnvollen Grund dafür geben. Vielleicht verwendest du die Filterkomponente ja woanders, z.B. in Filter-Info-Icons.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Ja, um die gefundenen Sendungen mit einem Icon zu kennzeichnen, verwende ich den Filter dort.
Antworten