Package tvbrowser.core.plugin.programformating

Source Code of tvbrowser.core.plugin.programformating.GlobalPluginProgramFormatingManager

/*
* TV-Browser
* Copyright (C) 04-2003 Martin Oberhauser (martin@tvbrowser.org)
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* CVS information:
*     $Date: 2007-01-20 23:10:59 +0100 (Sa, 20 Jan 2007) $
*   $Author: ds10 $
* $Revision: 3037 $
*/
package tvbrowser.core.plugin.programformating;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import tvbrowser.core.Settings;
import util.io.stream.ObjectOutputStreamProcessor;
import util.io.stream.StreamUtilities;
import util.ui.Localizer;

/**
* Handles the global program configurations.
*
* @author René Mach
* @since 2.5.1
*/
public class GlobalPluginProgramFormatingManager {
  private static final Localizer mLocalizer = Localizer.getLocalizerFor(GlobalPluginProgramFormatingManager.class);
 
  private static GlobalPluginProgramFormatingManager mInstance;
  private GlobalPluginProgramFormating[] mAvailableProgramConfigurations;
 
  private GlobalPluginProgramFormatingManager() {
    mInstance = this;
    ObjectInputStream in=null;
   
    try {
      File programConfigFile = new File(Settings.getUserSettingsDirName(),"programConfigurations.dat");
     
      in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(programConfigFile), 0x1000));
     
      in.readInt(); // read version
     
      mAvailableProgramConfigurations = new GlobalPluginProgramFormating[in.readInt()];
     
      for(int i = 0; i < mAvailableProgramConfigurations.length; i++) {
        mAvailableProgramConfigurations[i] = GlobalPluginProgramFormating.load(in);
      }
     
    }catch(Exception e) {
      mAvailableProgramConfigurations = new GlobalPluginProgramFormating[2];
      mAvailableProgramConfigurations[0] = getDefaultConfiguration();
      new Thread("Plugin formating creation") {
        public void run() {
          try {
            Thread.sleep(100);
          } catch (InterruptedException e) {}
         
          mAvailableProgramConfigurations[1] = getTvPearlFormating();
          store();
        }
      }.start();
    } finally {
      if (in!=null) {
        try { in.close(); } catch(IOException exc) {}
      }
    }
  }
 
  /**
   * Gets the instance of this class.
   *
   * @return The instance of this class.
   */
  public static GlobalPluginProgramFormatingManager getInstance() {
    if(mInstance == null) {
      new GlobalPluginProgramFormatingManager();
    }
   
    return mInstance;
  }
 
  /**
   * Gets the available program configurations.
   *
   * @return The available program configurations.
   */
  public GlobalPluginProgramFormating[] getAvailableGlobalPluginProgramFormatings() {
    return mAvailableProgramConfigurations;
  }

  /**
   * Sets the available program configurations.
   *
   * @param configs
   *          The new program configurations array.
   */
  public void setAvailableProgramConfigurations(GlobalPluginProgramFormating[] configs) {
    mAvailableProgramConfigurations = configs;
  }
 
  /**
   * Saves the current available program configurations.
   */
  public void store() {
    File programConfigFile = new File(Settings.getUserSettingsDirName(),"programConfigurations.dat");
    StreamUtilities.objectOutputStreamIgnoringExceptions(programConfigFile,
        new ObjectOutputStreamProcessor() {
          public void process(ObjectOutputStream out) throws IOException {
            // write version
            out.writeInt(1);
            // write number of configurations
            out.writeInt(mAvailableProgramConfigurations.length);

            for (GlobalPluginProgramFormating config : mAvailableProgramConfigurations) {
              config.store(out);
            }
            out.close();
          }
        });
  }
 
  /**
   * Gets the default configuration.
   *
   * @return The default configuration.
   */
  public static GlobalPluginProgramFormating getDefaultConfiguration() {
    return new GlobalPluginProgramFormating(mLocalizer.msg("default","Default"),"{title}","{channel_name} - {title}\n{leadingZero(start_day,\"2\")}.{leadingZero(start_month,\"2\")}.{start_year} {leadingZero(start_hour,\"2\")}:{leadingZero(start_minute,\"2\")}-{leadingZero(end_hour,\"2\")}:{leadingZero(end_minute,\"2\")}\n\n{splitAt(short_info,\"78\")}\n\n","UTF-8");
  }
 
  /**
   * Gets the TV pearl formating.
   *
   * @return The TV pearl formating.
   * @since 2.6
   */
  public static GlobalPluginProgramFormating getTvPearlFormating() {
    return new GlobalPluginProgramFormating(mLocalizer.msg("tvPearl","TV Pearl"),"{title}","{start_day_of_week}, {start_day}. {start_month_name}, {leadingZero(start_hour,\"2\")}:{leadingZero(start_minute,\"2\")}, {channel_name}\n{title}\n\n{genre}","UTF-8");
  }
 
  protected GlobalPluginProgramFormating getConfigurationForId(String id) {
    for(GlobalPluginProgramFormating config : mAvailableProgramConfigurations) {
      if(config.hasId(id)) {
        return config;
      }
    }
   
    return null;
  }
 
  /**
   * Gets the instance of the given formating.
   *
   * @param formating The formating to get the instance for.
   * @return The instance of the given formating.
   */
  public GlobalPluginProgramFormating getFormatingInstanceForInstance(GlobalPluginProgramFormating formating) {
    for(GlobalPluginProgramFormating config : mAvailableProgramConfigurations) {
      if(config.equals(formating)) {
        return config;
      }
    }
   
    return null;
  }
}
TOP

Related Classes of tvbrowser.core.plugin.programformating.GlobalPluginProgramFormatingManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.