Skip to content

Commit 0baee2d

Browse files
authored
Fix: Colmena.java
1 parent 4fd0d1b commit 0baee2d

File tree

1 file changed

+116
-52
lines changed

1 file changed

+116
-52
lines changed

src/Colmena/Colmena.java

Lines changed: 116 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,123 @@
11
package Colmena;
2-
2+
import java.io.Serializable;
33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.Map;
6+
7+
import static Colmena.Utilidades.printWithDelay;
8+
9+
public class Colmena implements Serializable {
10+
public String id;
11+
public String ubicacion;
12+
public String estadoSalud;
13+
public int cantidadAbejas;
14+
public double produccionMiel;
15+
public AbejaReina abejaReina;
16+
public List<Inspeccion> inspecciones;
17+
18+
public Colmena(String id, String ubicacion, String estadoSalud, int cantidadAbejas, double produccionMiel) {
19+
this.id = id;
20+
this.ubicacion = ubicacion;
21+
this.estadoSalud = estadoSalud;
22+
this.cantidadAbejas = cantidadAbejas;
23+
this.produccionMiel = produccionMiel;
24+
this.inspecciones = new ArrayList<>();
25+
}
26+
27+
public void agregarAbejaReina(AbejaReina abejaReina) {
28+
this.abejaReina = abejaReina;
29+
}
30+
31+
public void agregarInspeccion(Inspeccion inspeccion) {
32+
inspecciones.add(inspeccion);
33+
}
34+
35+
public static void editarApicultor(Apicultor apicultor, List<Apicultor> apicultores) {
36+
printWithDelay("""
37+
📝 ¿Qué deseas editar?
38+
1. Nombre
39+
2. Teléfono
40+
""", 50);
41+
String opcion = Utilidades.getValidInput("Selecciona una opción: ", "[1-2]");
42+
switch (opcion) {
43+
case "1" -> {
44+
apicultor.nombre = Utilidades.getValidInput("🧑‍🌾 Nuevo nombre: ", ".+");
45+
printWithDelay("✅ Nombre actualizado.\n", 50);
46+
}
47+
case "2" -> {
48+
String nuevoTelefono = Utilidades.getValidInput("📞 Nuevo teléfono (10 dígitos): ", "\\d{10}");
49+
boolean telefonoExistente = apicultores.stream().anyMatch(a -> a.telefono != null && a.telefono.equals(nuevoTelefono) && !a.equals(apicultor));
50+
51+
if (telefonoExistente) {
52+
printWithDelay("\n⚠️ El teléfono " + nuevoTelefono + " ya está registrado por otro apicultor. Intenta con otro número.", 50);
53+
} else {
54+
apicultor.telefono = nuevoTelefono;
55+
printWithDelay("✅ Teléfono actualizado.\n", 50);
56+
}
57+
}
58+
default -> printWithDelay("⚠️ Opción no válida. No se realizaron cambios.\n", 50);
59+
}
60+
}
561

6-
/**
7-
* Representa una colmena que contiene diferentes tipos de abejas.
8-
* Administra a las abejas y coordina sus actividades.
9-
*/
10-
public class Colmena {
11-
private List<Abeja> abejas; // Lista para almacenar las abejas en la colmena
12-
13-
/**
14-
* Constructor que inicializa la colmena con una lista de abejas vacía.
15-
*/
16-
public Colmena() {
17-
this.abejas = new ArrayList<>();
18-
}
19-
20-
/**
21-
* Agrega una abeja a la colmena.
22-
*
23-
* @param abeja la abeja a agregar
24-
*/
25-
public void agregarAbeja(Abeja abeja) {
26-
abejas.add(abeja);
27-
System.out.println(abeja.getNombre() + " se ha unido a la colmena como " + abeja.getTipo() + ".");
28-
}
29-
30-
/**
31-
* Inicia el trabajo de todas las abejas en la colmena.
32-
*/
33-
public void iniciarTrabajo() {
34-
System.out.println("\nComenzando las actividades en la colmena:");
35-
for (Abeja abeja : abejas) {
36-
abeja.trabajar();
62+
public static void editarColmena(Colmena colmena) {
63+
printWithDelay("""
64+
📝 ¿Qué deseas editar?
65+
1. Ubicación
66+
2. Estado de Salud
67+
3. Cantidad de Abejas
68+
4. Producción de Miel
69+
""", 50);
70+
String opcion = Utilidades.getValidInput("Selecciona una opción: ", "[1-4]");
71+
switch (opcion) {
72+
case "1" -> {
73+
colmena.ubicacion = Utilidades.getValidInput("📍 Nueva ubicación: ", ".+");
74+
printWithDelay("✅ Ubicación actualizada.\n", 50);
75+
}
76+
case "2" -> {
77+
colmena.estadoSalud = Utilidades.getValidInput("❤️ Nuevo estado de salud (Buena/Regular/Mala): ", "Buena|Regular|Mala");
78+
printWithDelay("✅ Estado de salud actualizado.\n", 50);
79+
}
80+
case "3" -> {
81+
colmena.cantidadAbejas = Integer.parseInt(Utilidades.getValidInput("🐝 Nueva cantidad de abejas: ", "[1-9]\\d*"));
82+
printWithDelay("✅ Cantidad de abejas actualizada.\n", 50);
83+
}
84+
case "4" -> {
85+
colmena.produccionMiel = Double.parseDouble(Utilidades.getValidInput("🍯 Nueva producción de miel (kg): ", "^(?!0(\\.0+)?$)(\\d+(\\.\\d+)?|\\.\\d+)$"));
86+
printWithDelay("✅ Producción de miel actualizada.\n", 50);
87+
}
88+
default -> printWithDelay("⚠️ Opción no válida. No se realizaron cambios.\n", 50);
89+
}
3790
}
38-
}
39-
40-
/**
41-
* Genera un reporte de las abejas en la colmena.
42-
*/
43-
public void generarReporte() {
44-
System.out.println("\nReporte de la colmena:");
45-
System.out.println("Total de abejas: " + abejas.size());
46-
for (Abeja abeja : abejas) {
47-
System.out.println("- " + abeja.getNombre() + " (" + abeja.getTipo() + ")");
91+
92+
public void mostrarInfo(int numeroColmena, Map<String, Apicultor> asignaciones) {
93+
StringBuilder colmenaInfo = new StringBuilder();
94+
colmenaInfo.append(String.format("""
95+
\r===============================
96+
# Colmena %d
97+
===============================
98+
🐝 ID: %s
99+
📍 Ubicación: %s
100+
❤️ Estado de Salud: %s
101+
🐝 Cantidad de Abejas: %d
102+
🍯 Producción de Miel: %.2f kg
103+
""", numeroColmena, id, ubicacion, estadoSalud, cantidadAbejas, produccionMiel)).append("\n");
104+
105+
if (abejaReina != null) {
106+
colmenaInfo.append("👑 Información de la Abeja Reina:").append("\n");
107+
colmenaInfo.append(abejaReina.getInfo()).append("\n");
108+
}
109+
110+
if (asignaciones.containsKey(id)) {
111+
Apicultor apicultor = asignaciones.get(id);
112+
colmenaInfo.append(String.format("🧑‍🌾 Apicultor Asignado: %s (Tel: %s)\n", apicultor.nombre, apicultor.telefono)).append("\n");
113+
}
114+
115+
if (!inspecciones.isEmpty()) {
116+
colmenaInfo.append("📜 Historial de Inspecciones:").append("\n");
117+
colmenaInfo.append(Inspeccion.getInfo(inspecciones, 1)).append("\n");
118+
} else {
119+
colmenaInfo.append("⚠️ No hay inspecciones registradas para esta colmena.\n");
120+
}
121+
System.out.println(colmenaInfo);
48122
}
49-
}
50-
51-
/**
52-
* Simula un día en la vida de la colmena.
53-
* Incluye trabajo y un reporte de estado.
54-
*/
55-
public void simularDia() {
56-
iniciarTrabajo();
57-
generarReporte();
58-
}
59123
}

0 commit comments

Comments
 (0)