Skip to content
Snippets Groups Projects
Commit 573b9ea1 authored by Javier Calvo's avatar Javier Calvo
Browse files

Falta trayecto

parent f2e293c1
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@ import es.uva.inf.poo.maps.GPSCoordinate;
public class Muelle {
private Plaza[] plazas;
private int identificador;
private String identificador;
private boolean operativo;
private GPSCoordinate cord;
private int plazasVacias;
......@@ -22,17 +22,14 @@ public class Muelle {
/**
* Constructor del objeto Muelle
* @param identificador Identificador de 2 digitos
* @param identificador Identificador de 2 digitos (numeros)
* @param cord Punto GPS que lo localiza. Clase GPSCoordinate.
* @param operativo Estado del muelle.
* @param plazas Numero de plazas totales que tiene el Muelle
* @param altura numero maximo de contenedores que se pueden apilar encima de otro
*/
//CONTROLAR LO DE LAS PLAZAS --> COMO HACER
public Muelle (int identificador, GPSCoordinate cord, boolean operativo, int plazas, int altura) {
if(String.valueOf(identificador).length() != 2) {
throw new IllegalArgumentException("Formato incorrecto. Debe ser un entero de 2 digitos");
}
public Muelle (String identificador, GPSCoordinate cord, boolean operativo, int plazas, int altura) {
comprobarIdentificador(identificador);
this.identificador = identificador;
this.cord=cord;
this.operativo=operativo;
......@@ -44,11 +41,21 @@ public class Muelle {
}
}
/**
* Metodo que comprueba si el identificador es correcto (2 digitos)
* @param identificador identificador del muelle
*/
private void comprobarIdentificador(String identificador) {
if (identificador.length() != 2 || !identificador.matches("\\d{2}")) {
throw new IllegalArgumentException("Formato incorrecto. Debe ser un entero de 2 dígitos numéricos (por ejemplo, 04, 15, 65)");
}
}
/**
* Metodo que devuelve el identificador de un muelle. Este identificador sera de 2 digitos.
* @return identificador del muelle
*/
public int getIdentificador() {
public String getIdentificador() {
return this.identificador;
}
......@@ -83,7 +90,6 @@ public class Muelle {
* @return numero de plazas vacias.
*/
public int plazasVacias() {
this.actualizarPlazas();
return this.plazasVacias;
}
......@@ -94,7 +100,6 @@ public class Muelle {
* @return plazasLlenas
*/
public int plazasLlenas() {
this.actualizarPlazas();
return this.plazasLlenas;
}
......@@ -104,7 +109,6 @@ public class Muelle {
* @return plazasSemillenas
*/
public int plazasSemillenas() {
this.actualizarPlazas();
return this.plazasSemillenas;
}
......@@ -156,10 +160,15 @@ public class Muelle {
}
else {
if (!this.plazas[plaza].colocarContenedor(contenedor))
if (this.plazas[plaza].colocarContenedor(contenedor)) {
//Se añade el contenedor --> actualizarPlazas
}
else {
throw new IllegalArgumentException("La plaza esta llena");
}
}
}
/**
* 1.1.12 Metodo que sirve para sacar un contenedor de una Plaza y desapilarlo si es posible
......@@ -167,33 +176,50 @@ public class Muelle {
* @return True si lo ha despilado, o false si no, ya que ese contenedor o no está en el muelle, o no se encuentra en la
* ultima posicio apilada para poder sacarlo
*/
public boolean sacarContenedorDePlaza(Contenedor contenedor) {
public void sacarContenedorDePlaza(Contenedor contenedor) {
for (Plaza plaza : this.plazas) {
if (plaza != null && plaza.estaEnUltimoNivel(contenedor.getCodigo())) {
int plazasAntes = plaza.numeroContenedores();
plaza.desapilarContenedor();
return true;
int plazasDespues = plaza.numeroContenedores();
this.actualizarPlazas(plazasAntes, plazasDespues, plaza);
}
}
return false;
}
/**
* Metodo para actualizar las plazas
* Este metodo es empleado si el alternarTecho() del contenedor se ejecuta desde fuera del muelle.
* Metodo que cambia el techo a un contenedor comprobando que este sea el ultimo de la plaza para evitar
* problemas, ya que no se puede cambiar el techo a un contenedor que tenga apilado otro encima
* @param contenedor Contenedor que se cambia el techo
*/
private void actualizarPlazas() {
this.plazasLlenas = 0;
this.plazasVacias = 0;
this.plazasSemillenas = 0;
public void alternarTechoContenedor(Contenedor contenedor) {
String codigo = contenedor.getCodigo();
for (Plaza plaza: this.plazas) {
int cont = plaza.numeroContenedores();
if(cont == 5)this.plazasLlenas++;
else if(cont == 0) this.plazasVacias++;
else {
if(plaza.ultimoContenedor().tieneTecho())this.plazasLlenas++;
else this.plazasSemillenas++;
//Si el contenedor esta en el ultimo nivel de una plaza se puede cambiar el techo
if (plaza.contieneContenedor(codigo) && plaza.estaEnUltimoNivel(codigo)) {
plaza.ultimoContenedor().alternarTecho();
//Si la cantidad de contenedores es menor a la altura, hay cambios en el numero de plazas
if (plaza.numeroContenedores() < plaza.altura()) {
//Si ahora tiene techo, las llenas son uno mas y semillenas uno menos
if (plaza.ultimoContenedor().tieneTecho()) { this.plazasLlenas--; this.plazasSemillenas++;}
//Si ahora no lo tiene, las llenas son una mas y semillenas uno menos
else { this.plazasLlenas++; this.plazasSemillenas--;}
}
}
}
}
/**
* Metodo que actualiza el numero de plazas (vacias, llenas, semillenas) al añadir o eliminar un contenedor
* @param plazasAntes El numero de plazas antes de añadir o eliminar un contenedor
* @param plazasDespues El numero despues
* @param plaza La plaza donde se ha realizado una de esas 2 acciones (eliminar/añadir)
*/
private void actualizarPlazas(int plazasAntes, int plazasDespues, Plaza plaza) {
}
}
\ No newline at end of file
......@@ -25,12 +25,21 @@ public class Puerto {
* @param ciudad Ciudad al que pertenece el puerto (3 letras)
*/
public Puerto(String pais, String ciudad) {
if (pais.length()!= 2 && ciudad.length() !=3) {
throw new IllegalArgumentException("Formato incorrecto. Debe ser "+"XX-XXX");
}
comprobarIdentificador(pais, ciudad);
this.identificador = pais.toUpperCase()+"-"+ciudad.toUpperCase();
}
/**
* Metodo que comprueba si tanto el pais como la ciudad son correctos (2 y 3 letras respectivamente)
* @param pais Pais del puerto (2 letras)
* @param ciudad Ciudad del puerto(3 letras)
*/
private void comprobarIdentificador(String pais, String ciudad) {
if (!(pais.matches("[A-Za-z]{2}") && ciudad.matches("[A-Za-z]{3}"))) {
throw new IllegalArgumentException("Formato incorrecto. Debe ser en el formato 'XX-XXX', donde XX es el país y XXX es la ciudad, usando solo letras.");
}
}
/**
* 1.1.1. Metodo que agrega un nuevo muelle al puerto. Se comprueba que ese muelle no se encuentre ya agregado.
* Si no lo esta, lo agrega, si ya se encuentra agregado, no.
......@@ -46,20 +55,20 @@ public class Puerto {
* 1.1.2 Método que elimina un muelle del puerto.
* @param id : Identificador del muelle que se elimina
*/
public void eliminarMuelle(int id) {
this.muelles.removeIf(muelle -> muelle.getIdentificador() == id);
public void eliminarMuelle(String id) {
this.muelles.removeIf(muelle -> muelle.getIdentificador().equals(id));
}
/**
* Metodo para comprobar si un muelle esta en ese puerto o no, para agregarle, ya que solo puede haber un muelle con el mismo
* identificador para cada puerto.
* @param m obtejo Muelle
* @return true/false
* @return true si esta, y false si no se encuentra en el puerto
*/
public boolean comprobarMuelleEnPuerto(Muelle m) {
int id = m.getIdentificador();
String id = m.getIdentificador();
for (Muelle muelle : this.muelles) {
if (id == muelle.getIdentificador()) {
if (id.equals(muelle.getIdentificador())) {
return true;
}
}
......
......
package es.markse;
public class PuertoTest {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment