Package gui

Source Code of gui.SimulationBase

package gui;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;

import resources.PropertiesLoader;
import utils.logging.Logger;
import core.simulation.SimulationException;



/**
* Esta clase implementa la base de datos de simulaciones creadas.
*/
public class SimulationBase
{
  public static final int     OK        = 0;
  public static final int     DUPLICATEK_KEY  = 500;
  public static final int     NO_SUCH_OBJECT  = 501;
 
  private Vector           base;
 
 
  public SimulationBase()
  {
    super();
    base = new Vector();
  }
 
 
  /**
   * Recibe por parametro el archivo donde est� la base de la simulaci�n.
   * @param file  archivo de base de la simulaci�n.
   * @throws SimulationException
   */
  public SimulationBase(String file) throws SimulationException
  {
    super();
    base = new Vector();
    String str;
   
    try
    {
          BufferedReader in = new BufferedReader(new FileReader(file));
          while ((str = in.readLine()) != null)
          {
            if ( str.matches("[^#]*#[^#]*#[^#]*#[^#]*") )
            {
                SimulationBaseItem item = new SimulationBaseItem(str);
                base.add(item);
            }
          }
          in.close();
      }
    catch (IOException e)
    {
        throw new SimulationException( e.getMessage() );
      }
  }
 
 
  /**
   * Busca un �tem en la base de simlaciones y lo retorna en caso de
   * existir, o <code>null</code> si no se encuentra.
   * @param name
   * @return �tem o <code>null</code> si no se encuentra.
   */
  public SimulationBaseItem getSimulationBaseItem(String name)
  {
    for (int i=0;i<base.size();i++)
    {
      if (((SimulationBaseItem)base.get(i)).getName().compareTo(name)==0)
      {
        return (SimulationBaseItem)base.get(i);
      }
    }
    return null;
  }
 
 
  /**
   * Busca si existe un �tem por nombre.
   * @param name
   * @return  <code>true</code> si existe, o <code>false</code> en caso
   *       contrario.
   */
  public boolean isItemInBase(String name)
  {
    for (int i=0;i<base.size();i++)
      if ( ((SimulationBaseItem)base.get(i)).getName().compareTo(name) == 0 )
        return true;

    return false;
  }
 
 
  /**
   * Busca si existe un �tem por nombre y retorna su posicion en el vector.
   * @param name
   * @return posici�n de la primara ocurrencia, o -1 en caso que no encuentre.
   */
  public int indexOf(String name)
  {
    for (int i=0;i<base.size();i++)
    {
      if (((SimulationBaseItem)base.get(i)).getName().compareTo(name)==0)
      {
        return i;
      }
    }
    return -1;
  }
 
 
  /**
   * Inserta un �tem en la base y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK} o {@link #DUPLICATEK_KEY}.
   */
  public int insertSimulationBaseItem(SimulationBaseItem item)
  {
    if(! isItemInBase(item.getName()))
    {
      base.add(item);
      saveToFile();
      return OK;
    }
    else
      return DUPLICATEK_KEY;
  }
 
 
  /**
   * Actualiza el �tem que se ingresa por par�metro y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK} o {@link #DUPLICATEK_KEY}.
   */
  public int updateSimulationBaseItem(SimulationBaseItem item)
  {
    if(! isItemInBase(item.getName()))
      return NO_SUCH_OBJECT;
    else
    {
      base.set(indexOf(item.getName()),item);
      saveToFile();
    }
   
    return OK;
  }
 
 
  /**
   * Remueve el �tem pasado por par�metro y guarda los cambios.
   * @param item  �tem.
   * @return    {@link #OK}, o {@link #NO_SUCH_OBJECT} en caso de no
   *         existir el objeto.
   */
  public int removeSimulationBaseItem(SimulationBaseItem item)
  {
    if(indexOf(item.getName()) != -1)
    {
      base.removeElementAt(indexOf(item.getName()));
      saveToFile();
      return OK;
    }
    else
      return NO_SUCH_OBJECT;
  }
 
 
  /**
   * Graba en el archivo el contenido de la base. El nombre del archivo se
   * obtiene del archivo de confifuraci�n.
   */
  public void saveToFile()
  {
    String file = PropertiesLoader.getInstance().getProperty("SimulationBaseFile");
    try
    {
          BufferedWriter out = new BufferedWriter(new FileWriter(file));
          for (int i=0; i<base.size();i++)
            out.write(((SimulationBaseItem)base.get(i)).toString());
          out.close();
      }
    catch (IOException e)
    {
        Logger.error( e.getMessage() );
      }
  }
 
 
  /**
   * Retorna el arreglo de �tems.
   * @return arreglo de �tems.
   */
  public Vector getItems()
  {
    return base;
  }

}
TOP

Related Classes of gui.SimulationBase

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.