malhaFerroviaria
Class Ferrovia

java.lang.Object
  extended by malhaFerroviaria.Ferrovia
All Implemented Interfaces:
ControleFerrovia, DefsGlobais

public class Ferrovia
extends java.lang.Object
implements ControleFerrovia

Fachada para a Rede Ferroviária simulada, implementada como 'singleton'.

Author:
Vanini

Nested Class Summary
 
Nested classes/interfaces inherited from interface interfacesFerrovia.DefsGlobais
DefsGlobais.TipoAtributo, DefsGlobais.TipoElemento, DefsGlobais.TipoFalha
 
Method Summary
 int acelerarComposicao(java.lang.String idComposicao, float velocidade, boolean urgente)
          Comando para acelerar uma composicão.
 java.lang.Object consultaAtributo(java.lang.String idElemento, DefsGlobais.TipoAtributo atributo)
          Consulta um atributo de um elemento da rede.
 java.util.Map<DefsGlobais.TipoAtributo,java.lang.Object> consultaAtributosFixos(java.lang.String idElemento)
          Consulta os atributos fixos de um elemento da rede.
 float consultaDistMinParada(java.lang.String idComposicao)
          Calcula a distância mínima necessária à parada de uma composição.
 java.lang.String[] consultaElementos()
          Consulta aos elementos da rede.
 java.util.Map<DefsGlobais.TipoAtributo,java.lang.Object> consultaEstado(java.lang.String idElemento)
          Consulta o estado (formado pelo conjunto de atributos variáveis) de um elemento da rede.
 java.util.Set<DefsGlobais.TipoAtributo> consultaListaDeAtributos(java.lang.String idElemento)
          Consulta o conjunto de atributos de um dado elemento da rede.
 float consultaPosicao(java.lang.String idComposicao, int instante)
          COnsulta a posição prevista para um instante futuro.
 int consultaTempo(java.lang.String idComposicao, float posicao)
          Consulta o tempo previsto para atingir uma dada posição no trecho atual (considerando a velocidade e taxa de aceleração ou frenagem atuais).
 void defineCenario(int cenario)
          Define o cenário a ser usado na simulação.
 int frearComposicao(java.lang.String idComposicao, float velocidade, boolean urgente)
          Comando para frear a composição.
static Ferrovia getInstance()
          Devolve a instância única do objeto Ferrovia.
 boolean mudarChave(java.lang.String idChave, java.lang.String idTrechoA, java.lang.String idTrechoB)
          Comando para mudar o estado de uma chave.
 boolean registraTratadorDeEventos(TratadorDeEventos tratador)
          Registra um tratador para os eventos gerados pela rede ferroviária.
 void simularCenario(int t1, int t2)
          Simula um cenário pré-definido, formado por um conjunto de elementos de rede.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static Ferrovia getInstance()
Devolve a instância única do objeto Ferrovia.

Returns:
Instância única desta classe

acelerarComposicao

public int acelerarComposicao(java.lang.String idComposicao,
                              float velocidade,
                              boolean urgente)
Description copied from interface: ControleFerrovia
Comando para acelerar uma composicão.

Specified by:
acelerarComposicao in interface ControleFerrovia
Parameters:
idComposicao - Identificação única da composição.
velocidade - Velocidade a ser atingida.
urgente - Urgente(true) ou normal(false).
Returns:
Tempo necessário para atingir a velocidade.

consultaAtributo

public java.lang.Object consultaAtributo(java.lang.String idElemento,
                                         DefsGlobais.TipoAtributo atributo)
Description copied from interface: ControleFerrovia
Consulta um atributo de um elemento da rede.

Specified by:
consultaAtributo in interface ControleFerrovia
Parameters:
idElemento - Identificação única do elemento
atributo - Nome do atributo a ser consultado
Returns:
Object Valor do atributo

consultaAtributosFixos

public java.util.Map<DefsGlobais.TipoAtributo,java.lang.Object> consultaAtributosFixos(java.lang.String idElemento)
Description copied from interface: ControleFerrovia
Consulta os atributos fixos de um elemento da rede.

Specified by:
consultaAtributosFixos in interface ControleFerrovia
Parameters:
idElemento - identificação única do elemento.
Returns:
mapa contendo os atributos fixos do elemento.

consultaElementos

public java.lang.String[] consultaElementos()
Description copied from interface: ControleFerrovia
Consulta aos elementos da rede. Retorna uma lista contendo os id's dos elementos da rede.

Specified by:
consultaElementos in interface ControleFerrovia
Returns:
lista contendo os id's dos elementos da rede.

consultaEstado

public java.util.Map<DefsGlobais.TipoAtributo,java.lang.Object> consultaEstado(java.lang.String idElemento)
Description copied from interface: ControleFerrovia
Consulta o estado (formado pelo conjunto de atributos variáveis) de um elemento da rede.

Specified by:
consultaEstado in interface ControleFerrovia
Parameters:
idElemento - identificação única do elemento.
Returns:
mapa que caracteriza o estado do elemento.

consultaListaDeAtributos

public java.util.Set<DefsGlobais.TipoAtributo> consultaListaDeAtributos(java.lang.String idElemento)
Description copied from interface: ControleFerrovia
Consulta o conjunto de atributos de um dado elemento da rede.

Specified by:
consultaListaDeAtributos in interface ControleFerrovia
Parameters:
idElemento - Identificação única do elemento da rede.
Returns:
Conjunto de atributos (fixos e variáveis) associados ao elemento.

consultaPosicao

public float consultaPosicao(java.lang.String idComposicao,
                             int instante)
Description copied from interface: ControleFerrovia
COnsulta a posição prevista para um instante futuro.

Specified by:
consultaPosicao in interface ControleFerrovia
Parameters:
idComposicao - Identificação única da composição.
instante - Instante futuro a ser considerado.
Returns:
A posição prevista, no trecho atual.

consultaTempo

public int consultaTempo(java.lang.String idComposicao,
                         float posicao)
Description copied from interface: ControleFerrovia
Consulta o tempo previsto para atingir uma dada posição no trecho atual (considerando a velocidade e taxa de aceleração ou frenagem atuais).

Specified by:
consultaTempo in interface ControleFerrovia
Parameters:
idComposicao - Identificação única da composição.
posicao - Posição a ser atingida.
Returns:
Tempo estimado necessário para atingir a posição.

frearComposicao

public int frearComposicao(java.lang.String idComposicao,
                           float velocidade,
                           boolean urgente)
Description copied from interface: ControleFerrovia
Comando para frear a composição.

Specified by:
frearComposicao in interface ControleFerrovia
Parameters:
idComposicao - Identificação única da composição.
velocidade - Velocidade a ser atingida
urgente - Urgente(true) ou normal(false).
Returns:
Tempo necessário para realizar a operação.

mudarChave

public boolean mudarChave(java.lang.String idChave,
                          java.lang.String idTrechoA,
                          java.lang.String idTrechoB)
Description copied from interface: ControleFerrovia
Comando para mudar o estado de uma chave.

Specified by:
mudarChave in interface ControleFerrovia
Parameters:
idChave - Identificação única da chave
idTrechoA - Identificação do trecho a ser conectado à extremidade A da chave.
idTrechoB - Identificação do trecho a ser conectado à extremidade B da chave.
Returns:
True se a operação pode ser realizada.

consultaDistMinParada

public float consultaDistMinParada(java.lang.String idComposicao)
Description copied from interface: ControleFerrovia
Calcula a distância mínima necessária à parada de uma composição.

Specified by:
consultaDistMinParada in interface ControleFerrovia
Parameters:
idComposicao - Identificação única da composição.
Returns:
Distância mínima necessária à parada da composição.

registraTratadorDeEventos

public boolean registraTratadorDeEventos(TratadorDeEventos tratador)
Description copied from interface: ControleFerrovia
Registra um tratador para os eventos gerados pela rede ferroviária. Pode-se registrar mais de um tratador

Specified by:
registraTratadorDeEventos in interface ControleFerrovia
Parameters:
tratador - Objeto que implementa a interface TratadorDeEventos.
Returns:
true se o registro for feito normalmente.

defineCenario

public void defineCenario(int cenario)
Description copied from interface: ControleFerrovia
Define o cenário a ser usado na simulação.

Specified by:
defineCenario in interface ControleFerrovia
Parameters:
cenario - Indica o cenário a ser usado (0..nCenarios-1)

simularCenario

public void simularCenario(int t1,
                           int t2)
                    throws java.lang.Exception
Description copied from interface: ControleFerrovia
Simula um cenário pré-definido, formado por um conjunto de elementos de rede.

Specified by:
simularCenario in interface ControleFerrovia
Parameters:
t1 - Instante de início da simulação (quase sempre zero).
t2 - Instante de término da simulação.
Throws:
java.lang.Exception