Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
Entrega_javcalv_victorm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
javcalv
Entrega_javcalv_victorm
Commits
573b9ea1
Commit
573b9ea1
authored
11 months ago
by
Javier Calvo
Browse files
Options
Downloads
Patches
Plain Diff
Falta trayecto
parent
f2e293c1
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/es/markse/Muelle.java
+53
-27
53 additions, 27 deletions
src/es/markse/Muelle.java
src/es/markse/Puerto.java
+17
-8
17 additions, 8 deletions
src/es/markse/Puerto.java
uses/es/markse/PuertoTest.java
+5
-0
5 additions, 0 deletions
uses/es/markse/PuertoTest.java
with
75 additions
and
35 deletions
src/es/markse/Muelle.java
+
53
−
27
View file @
573b9ea1
...
...
@@ -13,7 +13,7 @@ import es.uva.inf.poo.maps.GPSCoordinate;
public
class
Muelle
{
private
Plaza
[]
plazas
;
private
in
t
identificador
;
private
Str
in
g
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
in
t
getIdentificador
()
{
public
Str
in
g
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
This diff is collapsed.
Click to expand it.
src/es/markse/Puerto.java
+
17
−
8
View file @
573b9ea1
...
...
@@ -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
(
in
t
id
)
{
this
.
muelles
.
removeIf
(
muelle
->
muelle
.
getIdentificador
()
==
id
);
public
void
eliminarMuelle
(
Str
in
g
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
)
{
in
t
id
=
m
.
getIdentificador
();
Str
in
g
id
=
m
.
getIdentificador
();
for
(
Muelle
muelle
:
this
.
muelles
)
{
if
(
id
==
muelle
.
getIdentificador
())
{
if
(
id
.
equals
(
muelle
.
getIdentificador
())
)
{
return
true
;
}
}
...
...
...
...
This diff is collapsed.
Click to expand it.
uses/es/markse/PuertoTest.java
0 → 100644
+
5
−
0
View file @
573b9ea1
package
es.markse
;
public
class
PuertoTest
{
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment