package pckValidacao;

/** Ultima atualizacao : 03-04-2001 
 * Autores : Claudio Copello - 980860
 *           Joao Porto - 981389
 *           Joao Guilherme - 981374
 *           Joyce Ynoue - 981414
 *           Eduardo Lins - 952302
 *           Fernando Viegas - 900508
 */

import mc726.pckRota.*;
import mc726.pckPlano.*;
import mc726.pckEncomenda.*;
import mc726.pckVeiculo.*;

public abstract class ValidacaoAbs {
    /** Classe que valida o plano de atendimento baseado em
     * requisicoes de encomendas.
     */

    private String messagemErro = "";

    public abstract Boolean PA( PlanoAbs planoAtendimento, EncomendaAbs[] encomendas, VeiculoAbs[] veiculos );
    /** Validacao do plano de atendimento 
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se o Plano de Atendimento e valido. Falso, caso contrario
     */

    public abstract Boolean Rotas( PlanoAbs planoAtendimento, EncomendaAbs[] encomendas, VeiculoAbs[] veiculos );
    /** Validacao das rotas do Plano de Atendimento 
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se o Plano de Rotas e valido. Falso, caso contrario
     */

    public abstract Boolean Encomendas( PlanoAbs planoAtendimento, EncomendaAbs[] encomendas, VeiculoAbs[] veiculos );
    /** Validacao das encomendas do plano de atendimento 
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se o Plano de Atendimento satisfaz as encomendas. Falso, caso contrario
     */

    public abstract Boolean Capacidade( PlanoAbs planoAtendimento, EncomendaAbs[] encomendas, VeiculoAbs[] veiculos );
    /** Validacao da capacidade do veiculo
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se a capacidade e sempre valida. Falso, caso contrario
     */

    private abstract Boolean ConectTrecho( PlanoRotas );
    /** Validacao da conectividade dos trechos 
     * Entrada: Plano de Rotas
     * Saida: Verdadeiro se os trechos sao conexos. Falso, caso contrario
     */

    private abstract Boolean ConectHorario( PlanoRotas );
    /** Validacao da conectividade dos horarios 
     * Entrada: Plano de Rotas
     * Saida: Verdadeiro se os horarios sao conexos . Falso, caso contrario
     */

    private abstract Boolean TempoPercTrechos( PlanoRotas, Encomendas, Veiculos );
    /** Validacao do tempo de permanencia em um trecho 
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se o tempo de permanencia eh valido. Falso, caso contrario
     */

    private abstract Boolean TrechoCargaDescagaEncomenda( PlanoAbs planoAtendimento, EncomendaAbs[] encomendas, VeiculoAbs[] veiculos );
    /** Validacao se todas as encomendas foram carregadas/descarregadas em um trecho
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se todas encomendas foram contempladas. Falso, caso contrario
     */

    private abstract Boolean HorarioCargaDescargaEncomenda( PlanoAtendimento, Encomendas, Veiculos);
    /** Validacao se todas as encomendas foram carregadas/descarregadas no horario
     * Entrada: Plano de Atendimento, Encomendas e Veiculos
     * Saida: Verdadeiro se todas as encomendas foram carregadas/descarregadas no horario. Falso, caso contrario
     */

    public abstract String getMensagemErro();
    /** Obtem a mensagem de erro 
     * Entrada: nenhuma
     * Saida: Mensagem de erro gerada pelos outros metodos da classe
     */

}
