Skip to content
Snippets Groups Projects
Commit cd6d5d22 authored by victorm's avatar victorm
Browse files

Merge branch 'entrega2' of...

Merge branch 'entrega2' of https://gitlab.inf.uva.es/javcalv/entrega_javcalv_victorm.git into entrega2
parents 5b3ae4fa 90f13962
Branches
No related tags found
No related merge requests found
......@@ -9,10 +9,10 @@ import java.util.ArrayList;
* @author javcalv
* @author victorm
*/
public abstract class TCombinado extends Trayecto {
public abstract class Combinado extends Trayecto {
//ArrayList para guardar todos los trayectos simples
protected ArrayList<TSimple> trayectosSimples;
protected ArrayList<Simple> trayectosSimples;
/**
* Constructor de la clase abstracta TrayectoCombinado
......@@ -23,7 +23,7 @@ public abstract class TCombinado extends Trayecto {
* @param puertoDestino Puerto en el que finaliza un Trayecto
* @param fechaFinTrayecto Fecha en la que finaliza un Trayecto
*/
public TCombinado(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino, Puerto puertoDestino, Fecha fechaFinTrayecto) {
public Combinado(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino, Puerto puertoDestino, Fecha fechaFinTrayecto) {
super(muelleOrigen, puertoOrigen, fechaInicioTrayecto, muelleDestino, puertoDestino, fechaFinTrayecto);
this.trayectosSimples = new ArrayList<>();
}
......@@ -31,7 +31,7 @@ public abstract class TCombinado extends Trayecto {
/*********************************************************
* METODOS EJECUTADOS POR EL COSTRUCTOR DE LAS SUBCLASES *
*********************************************************/
protected boolean estanVacios(ArrayList<TSimple> ts) {
protected boolean estanVacios(ArrayList<Simple> ts) {
return (ts.isEmpty() || ts == null) ? true : false;
}
......@@ -40,9 +40,9 @@ public abstract class TCombinado extends Trayecto {
* @param trayectos ArrayList de los trayectos simples a comprobar
* @return true si hay trayectos de camion o false si no los hay
*/
protected boolean comprobarSiHayTrayectosCamion(ArrayList<TSimple> ts) {
protected boolean comprobarSiHayTrayectosCamion(ArrayList<Simple> ts) {
int trayectosCamiones = 0;
for (TSimple t : ts) {
for (Simple t : ts) {
if (t instanceof TCamion) trayectosCamiones++;
}
return (trayectosCamiones == 0)? false : true;
......@@ -55,10 +55,10 @@ public abstract class TCombinado extends Trayecto {
* @return true si es un orden correcto o false si no lo es
* @throws IllegalArgumentException Si hay elementos vacios de poer medio
*/
protected boolean ordenTrayectosCorrecto(ArrayList<TSimple> ts) {
protected boolean ordenTrayectosCorrecto(ArrayList<Simple> ts) {
for (int i = 0; i<(ts.size() - 1); i++) {
TSimple t1 = ts.get(i);
TSimple t2 = ts.get(i + 1);
Simple t1 = ts.get(i);
Simple t2 = ts.get(i + 1);
if (t1 == null || t2 == null) {
throw new IllegalArgumentException("Hay trayectos nulos en la lista");
}
......@@ -69,62 +69,38 @@ public abstract class TCombinado extends Trayecto {
}
/**
* Metodo que comprueba si el puerto y muelle destino son el origen del siguiente trayecto
* Metodo que comprueba si 2 trayectos (puerto/muelle) son iguales
* @param t1 trayecto simple primero
* @param t2 trayecto compuesto posterior
* @param t2 trayecto simple segundo
* @return true si el destino y el origen de siguiente son iguales o false si no lo son
*/
private boolean comprobarDestinoOrigenIguales(TSimple t1, TSimple t2) {
private boolean comprobarDestinoOrigenIguales(Simple t1, Simple t2) {
return (t1.getMuelleDestino().getIdentificador().equals(t2.getMuelleOrigen().getIdentificador()) &&
t1.getPuertoDestino().identificadorPuerto().equals(t2.getPuertoOrigen().identificadorPuerto()))
? true : false;
}
/**
* Método que Devuelve el primer Muelle de Origen de la lista
* @return muelleOrigen
* Metodo que compara si el puerto/muelle/fecha origen y destino, son iguales a las del primer trayecto
* y ultimo trayecto de la listas del trayecto del pack repectivamente
* @param simples Lista de los trayectos (combinados)
* @throws IllegalArgumentException si el puerto/muelle/fecha origen no coinciden con los de la primera lista del pack de trayectos
* @throws IllegalArgumentException si el puerto/muelle/fecha destino no coinciden con los de el ultimo de lista del pack de trayectos
*/
public Muelle getMuelleOrigen() {
return this.trayectosSimples.get(0).muelleOrigen;
}
/**
* Método que Devuelve el ultimo Muelle de Destino de la lista
* @return muelleOrigen
*/
public Muelle getMuelleDestino() {
return this.trayectosSimples.get(this.trayectosSimples.size()-1).muelleDestino;
}
/**
* Método que Devuelve el Puerto de Origen de la lista
* @return puertoOrigen
*/
public Puerto getPuertoOrigen(){
return this.trayectosSimples.get(0).puertoOrigen;
}
protected void compararTrayectosDeLaLista(ArrayList<Simple> simples) {
Simple primerT = this.trayectosSimples.get(0);
Simple ultimoT = this.trayectosSimples.get(this.trayectosSimples.size() -1);
/**
* Método que Devuelve el ultimo Puerto de Destino de la lista
* @return puertoDestino
*/
public Puerto getPuertoDestino() {
return this.trayectosSimples.get(this.trayectosSimples.size()-1).puertoDestino;
}
//Comparamos los datos de origen si son iguales que los del primer trayecto del pack
if (!(this.muelleOrigen.getIdentificador().equals(primerT.getMuelleOrigen().getIdentificador()) &&
this.puertoOrigen.identificadorPuerto().equals(primerT.getPuertoOrigen().identificadorPuerto())&&
this.fechaInicioTrayecto == primerT.getFechaInicioTrayecto()))
throw new IllegalArgumentException("El puerto/muelle/fecha origen no coinciden con los de la primera lista del pack de trayectos");
/**
* Método que Devuelve la primera Fecha del Inicio del Trayecto de la lista
* @return fechaInicioTrayecto
*/
public Fecha getFechaInicioTrayecto() {
return this.trayectosSimples.get(0).fechaInicioTrayecto;
}
/**
* Método que Devuelve la ultima Fecha del Fin del Trayecto de la lista
* @return fechaFinTrayecto
*/
public Fecha getFechaFinTrayecto() {
return this.trayectosSimples.get(this.trayectosSimples.size()-1).fechaFinTrayecto;
//Comparamos los datos de destino si son iguales que los del ultimo trayecto del pack
if (!(this.muelleDestino.getIdentificador().equals(ultimoT.getMuelleDestino().getIdentificador()) &&
this.puertoDestino.identificadorPuerto().equals(ultimoT.getPuertoDestino().identificadorPuerto())&&
this.fechaFinTrayecto == ultimoT.getFechaFinTrayecto()))
throw new IllegalArgumentException("El puerto/muelle/fecha destino no coinciden con los de el ultimo de lista del pack de trayectos");
}
}
......@@ -10,7 +10,7 @@ import java.util.ArrayList;
* @author javcalv
* @author victorm
*/
public class PackCamionBarco extends TCombinado {
public class PackCamionBarco extends Combinado {
//Descuentos que se aplican
private final double DESCUENTO = 0.85;
......@@ -27,7 +27,7 @@ public class PackCamionBarco extends TCombinado {
* @param trayectosBarco
*/
public PackCamionBarco(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino,
Puerto puertoDestino, Fecha fechaFinTrayecto, ArrayList<TSimple> trayectosSimples) {
Puerto puertoDestino, Fecha fechaFinTrayecto, ArrayList<Simple> trayectosSimples) {
super(muelleOrigen, puertoOrigen, fechaInicioTrayecto, muelleDestino, puertoDestino, fechaFinTrayecto);
//Comprobamos si los trayectos no estan nulos (Debe de tener uno al menos)
......@@ -49,6 +49,7 @@ public class PackCamionBarco extends TCombinado {
throw new IllegalArgumentException("El orden de los trayectos no es correcto. "
+ "Comprueba si el destino es el mismo que el origen del siguiente trayecto");
compararTrayectosDeLaLista(trayectosSimples);
this.trayectosSimples = trayectosSimples;
}
......@@ -58,8 +59,8 @@ public class PackCamionBarco extends TCombinado {
* @param ts Arraylist con los Trayectos a comparar
* @return true si son correctos o false si no lo son
*/
private boolean trayectosCorrectos(ArrayList<TSimple> ts) {
for (TSimple t : ts) {
private boolean trayectosCorrectos(ArrayList<Simple> ts) {
for (Simple t : ts) {
if (!(t instanceof TCamion || t instanceof TBarco)) {
return false;
}
......@@ -72,9 +73,9 @@ public class PackCamionBarco extends TCombinado {
* @param trayectos ArrayList de los trayectos simples a comprobar
* @return true si hay trayectos de tren o false si no los hay
*/
private boolean comprobarSiHayTrayectosBarco(ArrayList<TSimple> trayectos) {
private boolean comprobarSiHayTrayectosBarco(ArrayList<Simple> trayectos) {
int trayectosBarco = 0;
for (TSimple t : trayectos) {
for (Simple t : trayectos) {
if (t instanceof TBarco) trayectosBarco++;
}
return (trayectosBarco == 0)? false : true;
......@@ -91,7 +92,7 @@ public class PackCamionBarco extends TCombinado {
@Override
public double costeTrayecto() {
double coste = 0;
for (TSimple ts: this.trayectosSimples) {
for (Simple ts: this.trayectosSimples) {
if (ts instanceof TBarco) {
TBarco tb = (TBarco) ts;
coste += tb.costeTrayecto() * this.DESCUENTO;
......
......
......@@ -9,7 +9,7 @@ import java.util.ArrayList;
* @author javcalv
* @author victorm
*/
public class PackCamionTren extends TCombinado {
public class PackCamionTren extends Combinado {
//Reduccion de los precios
private final int RED_COSTE_FIJO = 0;
......@@ -31,7 +31,7 @@ public class PackCamionTren extends TCombinado {
* @throws IllegalArgumentException Si El orden de los trayectos no es correcto
*/
public PackCamionTren(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino,
Puerto puertoDestino, Fecha fechaFinTrayecto, ArrayList<TSimple> trayectosSimples){
Puerto puertoDestino, Fecha fechaFinTrayecto, ArrayList<Simple> trayectosSimples){
super(muelleOrigen, puertoOrigen, fechaInicioTrayecto, muelleDestino, puertoDestino, fechaFinTrayecto);
//Comprobamos que los trayectos no sean nulos/vacios
......@@ -53,6 +53,7 @@ public class PackCamionTren extends TCombinado {
throw new IllegalArgumentException("El orden de los trayectos no es correcto. "
+ "Comprueba si el destino es el mismo que el origen del siguiente trayecto");
compararTrayectosDeLaLista(trayectosSimples);
this.trayectosSimples = trayectosSimples;
}
......@@ -61,9 +62,9 @@ public class PackCamionTren extends TCombinado {
* @param trayectos ArrayList de los trayectos simples a comprobar
* @return true si hay trayectos de tren o false si no los hay
*/
private boolean comprobarSiHayTrayectosTren(ArrayList<TSimple> trayectos) {
private boolean comprobarSiHayTrayectosTren(ArrayList<Simple> trayectos) {
int trayectosTren = 0;
for (TSimple t : trayectos) {
for (Simple t : trayectos) {
if (t instanceof TTren) trayectosTren++;
}
return (trayectosTren == 0)? false : true;
......@@ -74,8 +75,8 @@ public class PackCamionTren extends TCombinado {
* @param ts Arraylist con los Trayectos a comparar
* @return true si son correctos o false si no lo son
*/
private boolean trayectosCorrectos(ArrayList<TSimple> ts) {
for (TSimple t : ts) {
private boolean trayectosCorrectos(ArrayList<Simple> ts) {
for (Simple t : ts) {
if (!(t instanceof TCamion || t instanceof TTren)) {
return false;
}
......@@ -95,7 +96,7 @@ public class PackCamionTren extends TCombinado {
@Override
public double costeTrayecto() {
double coste = 0;
for (TSimple ts : this.trayectosSimples) {
for (Simple ts : this.trayectosSimples) {
TVehiculoTierra tv = (TVehiculoTierra) ts;
tv.COSTE_FIJO = this.RED_COSTE_FIJO;
tv.COSTE_POR_KILOMETRO = this.RED_COSTE_POR_KILOMETRO;
......
......
......@@ -8,7 +8,7 @@ package es.markse;
* @author javcalv
* @author victorm
*/
public abstract class TSimple extends Trayecto {
public abstract class Simple extends Trayecto {
protected double distanciaKilometros;
private final float MILLAS_A_KILOMETROS = 1.852f;
......@@ -22,72 +22,40 @@ public abstract class TSimple extends Trayecto {
* @param puertoDestino Puerto en el que finaliza un Trayecto
* @param fechaFinTrayecto Fecha en la que finaliza un Trayecto
*/
public TSimple(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino, Puerto puertoDestino, Fecha fechaFinTrayecto) {
public Simple(Muelle muelleOrigen, Puerto puertoOrigen, Fecha fechaInicioTrayecto, Muelle muelleDestino, Puerto puertoDestino, Fecha fechaFinTrayecto) {
super(muelleOrigen, puertoOrigen, fechaInicioTrayecto, muelleDestino, puertoDestino, fechaFinTrayecto);
if (!comprobacionMuellesDistintos(muelleOrigen, muelleDestino, puertoOrigen, puertoDestino))
throw new IllegalArgumentException("El muelle de origen no puede ser igual al de destino");
//Obtenemos la distancia en millas marinas del trayecto y las convertimos en kilometros
this.distanciaKilometros = convertirMillasAKilometros(distanciaMillasMarinas());
}
/**
* Metodo que sirve para convertir las Millas marinas a Kilometros
* @param millas Millas de un trayecto
* @return Kilometros de un trayecto
*/
private double convertirMillasAKilometros(double millas) {
return millas * this.MILLAS_A_KILOMETROS;
}
/********************************************
* OBTENCION DE LOS VALORES PARA EL TSIMPLE *
********************************************/
/**
* Método que Devuelve el Muelle de Origen
* @return muelleOrigen
* Método que Comprueba si los Muelles Introducidos son Distintos o no
* @param muelleOrigen Muelle desde el que comienza el Trayecto
* @param muelleDestino Muelle en el que finaliza el Trayecto
* @return true si los muelles son distintos o false si son los mismos
*/
public Muelle getMuelleOrigen() {
return this.muelleOrigen;
private boolean comprobacionMuellesDistintos(Muelle muelleOrigen, Muelle muelleDestino, Puerto puertoOrigen, Puerto puertoDestino) {
return (muelleOrigen.getIdentificador() == muelleDestino.getIdentificador() &&
puertoOrigen.identificadorPuerto().equals(puertoDestino.identificadorPuerto())) ? false : true;
}
/**
* Método que Devuelve el Muelle de Destino
* @return muelleDestino
*/
public Muelle getMuelleDestino() {
return this.muelleDestino;
}
/******************
* METODOS SIMPLE *
******************/
/**
* Método que Devuelve el Puerto de Origen
* @return puertoOrigen
*/
public Puerto getPuertoOrigen() {
return this.puertoOrigen;
}
/**
* Método que Devuelve el Puerto de Destino
* @return puertoDestino
*/
public Puerto getPuertoDestino() {
return this.puertoDestino;
}
/**
* Método que Devuelve la Fecha del Inicio del Trayecto
* @return fechaInicioTrayecto
*/
public Fecha getFechaInicioTrayecto() {
return this.fechaInicioTrayecto;
}
/**
* Método que Devuelve la Fecha del Fin del Trayecto
* @return fechaFinTrayecto
* Metodo que sirve para convertir las Millas marinas a Kilometros
* @param millas Millas de un trayecto
* @return Kilometros de un trayecto
*/
public Fecha getFechaFinTrayecto() {
return this.fechaFinTrayecto;
private double convertirMillasAKilometros(double millas) {
return millas * this.MILLAS_A_KILOMETROS;
}
}
......@@ -8,7 +8,7 @@ package es.markse;
* @author javcalv
* @author victorm
*/
public class TBarco extends TSimple {
public class TBarco extends Simple {
private final double COSTE_DIARIO = 4000;
......
......
package es.markse;
public abstract class TVehiculoTierra extends TSimple{
public abstract class TVehiculoTierra extends Simple{
protected double COSTE_FIJO;
protected double COSTE_POR_KILOMETRO;
......
......
......@@ -47,11 +47,13 @@ public abstract class Trayecto{
if (!puertoDestino.comprobarMuelleEnPuerto(muelleDestino))
throw new IllegalStateException("El muelle no pertenece al puerto");
if (!comprobacionMuellesDistintos(muelleOrigen, muelleDestino, puertoOrigen, puertoDestino))
throw new IllegalArgumentException("El muelle de origen no puede ser igual al de destino");
if(fechaInicioTrayecto.getDiasDesdeEpoch()>fechaFinTrayecto.getDiasDesdeEpoch())
throw new IllegalArgumentException ("La Fecha del Inicio del Trayecto no puede ser posterior a la fecha del Fin del Trayecto");
if (!comprobacionMuellesDistintos(muelleOrigen, muelleDestino, puertoOrigen, puertoDestino))
throw new IllegalArgumentException("El muelle de origen no puede ser igual al de destino");
this.muelleOrigen=muelleOrigen;
this.puertoOrigen=puertoOrigen;
this.fechaInicioTrayecto=fechaInicioTrayecto;
......@@ -144,35 +146,47 @@ public abstract class Trayecto{
* Método que Devuelve el Muelle de Origen
* @return muelleOrigen
*/
public abstract Muelle getMuelleOrigen();
public Muelle getMuelleOrigen() {
return this.muelleOrigen;
}
/**
* Método que Devuelve el Muelle de Destino
* @return muelleDestino
*/
public abstract Muelle getMuelleDestino();
public Muelle getMuelleDestino() {
return this.muelleDestino;
}
/**
* Método que Devuelve el Puerto de Origen
* @return puertoOrigen
*/
public abstract Puerto getPuertoOrigen();
public Puerto getPuertoOrigen() {
return this.puertoOrigen;
}
/**
* Método que Devuelve el Puerto de Destino
* @return puertoDestino
*/
public abstract Puerto getPuertoDestino();
public Puerto getPuertoDestino() {
return this.puertoDestino;
}
/**
* Método que Devuelve la Fecha del Inicio del Trayecto
* @return fechaInicioTrayecto
*/
public abstract Fecha getFechaInicioTrayecto();
public Fecha getFechaInicioTrayecto() {
return this.fechaInicioTrayecto;
}
/**
* Método que Devuelve la Fecha del Fin del Trayecto
* @return fechaFinTrayecto
*/
public abstract Fecha getFechaFinTrayecto();
public Fecha getFechaFinTrayecto() {
return this.fechaFinTrayecto;
}
}
\ No newline at end of file
/**
*
*/
package es.markse;
import static org.junit.Assert.*;
import java.util.ArrayList;
import org.junit.Test;
import es.uva.inf.poo.maps.GPSCoordinate;
import es.markse.Muelle.estado;
/**
* @author Javier
*
*/
public class PackCamionBarcoTest {
@Test
public void testPackCamionBarco() {
Muelle muelleOrigen = new Muelle("01", new GPSCoordinate(10.0, 15.0), estado.OPERATIVO, 10, 3, true, true);
Muelle muelleDestino = new Muelle("02", new GPSCoordinate(15.0, -15.0), estado.OPERATIVO, 10, 3, true, true);
Puerto puertoOrigen = new Puerto("ES", "BAR");
Puerto puertoDestino = new Puerto("ES", "VAL");
puertoOrigen.anyadirMuelle(muelleOrigen);
puertoDestino.anyadirMuelle(muelleDestino);
Fecha fechaInicioTrayecto = new Fecha(20, 10, 2015);
Fecha fechaFinTrayecto = new Fecha(30, 10, 2015);
ArrayList<Simple> trayectosSimples = new ArrayLis
PackCamionBarco pcb = new PackCamionBarco(muelleOrigen, puertoOrigen, fechaInicioTrayecto, muelleDestino, puertoDestino, fechaFinTrayecto, trayectosSimples)
}
@Test
public void testCosteTrayecto() {
fail("Not yet implemented");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment