Skip to content

Commit a72d97f

Browse files
authored
Merge pull request mouredev#6347 from martinbohorquez/java#25
#25 java
2 parents 106ff53 + 6a64919 commit a72d97f

File tree

1 file changed

+124
-0
lines changed

1 file changed

+124
-0
lines changed
+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
import java.time.Duration;
2+
import java.time.LocalTime;
3+
import java.util.LinkedList;
4+
import java.util.List;
5+
import java.util.logging.*;
6+
7+
public class martinbohorquez {
8+
private static final Logger logger = Logger.getLogger(martinbohorquez.class.getName());
9+
10+
public static void main(String[] args) {
11+
loggerLevel();
12+
/*
13+
* DIFICULTAD EXTRA
14+
*/
15+
Task task1 = new Task("tarea 1", "Diseño de BBDD");
16+
Task task2 = new Task("tarea 2", "Desarrollo de API");
17+
Task task4 = new Task("tarea 2", "Conexión a la BBDD");
18+
Task task3 = new Task("tarea 3", "Despliegue en AWS");
19+
20+
TaskManager tm = new TaskManager();
21+
tm.listTask();
22+
tm.addTask(task1)
23+
.addTask(task2)
24+
.addTask(task4)
25+
.addTask(task3);
26+
tm.listTask();
27+
tm.deleteTask("tarea 2");
28+
tm.listTask();
29+
tm.deleteTask("tarea 2");
30+
tm.listTask();
31+
32+
33+
}
34+
35+
private static void loggerLevel() {
36+
// Eliminar manejadores predeterminados
37+
for (Handler handler : logger.getHandlers()) {
38+
logger.removeHandler(handler);
39+
}
40+
// Configuración del logger
41+
ConsoleHandler consoleHandler = new ConsoleHandler();
42+
consoleHandler.setLevel(Level.ALL);
43+
consoleHandler.setFormatter(new SimpleFormatter() {
44+
@Override
45+
public synchronized String format(LogRecord lr) {
46+
return String.format("%1$tF %1$tT - %2$s - %3$s%n", lr.getMillis(), lr.getLevel(), lr.getMessage());
47+
}
48+
});
49+
logger.addHandler(consoleHandler);
50+
logger.setLevel(Level.ALL);
51+
52+
// Eliminar manejadores de loggers padres
53+
Logger parentLogger = logger.getParent();
54+
for (Handler handler : parentLogger.getHandlers()) {
55+
parentLogger.removeHandler(handler);
56+
}
57+
58+
// Mensajes de log
59+
logger.fine("Esto es un mensaje de FINE");
60+
logger.finer("Esto es un mensaje de FINER");
61+
logger.finest("Esto es un mensaje de FINEST");
62+
logger.config("Esto es un mensaje de CONFIG");
63+
logger.info("Esto es un mensaje de INFO");
64+
logger.warning("Esto es un mensaje de WARNING");
65+
logger.severe("Esto es un mensaje de SEVERE");
66+
logger.log(Level.OFF, "Esto es un mensaje de OFF");
67+
}
68+
69+
private record Task(String name, String description) {
70+
71+
@Override
72+
public String toString() {
73+
return "Task{name='" + name + "', description='" + description + "'}";
74+
}
75+
}
76+
77+
private static class TaskManager {
78+
private final List<Task> taskSet;
79+
80+
public TaskManager() {
81+
this.taskSet = new LinkedList<>();
82+
}
83+
84+
private TaskManager addTask(Task task) {
85+
List<String> taskNames = taskSet.stream().map(Task::name).toList();
86+
LocalTime startTime = LocalTime.now();
87+
if (!taskNames.contains(task.name())) {
88+
taskSet.add(task);
89+
logger.info("Tarea añadida: " + task);
90+
} else logger.warning("Se ha intentado añadir una tarea que ya existe!");
91+
logger.fine("Número de tareas: " + taskSet.size());
92+
LocalTime endtTime = LocalTime.now();
93+
printExecutionTime(startTime, endtTime);
94+
return this;
95+
}
96+
97+
private void deleteTask(String name) {
98+
List<String> taskNames = taskSet.stream().map(Task::name).toList();
99+
LocalTime startTime = LocalTime.now();
100+
if (taskNames.contains(name)) {
101+
this.taskSet.removeIf(t -> t.name().equals(name));
102+
logger.info("Tarea eliminada: " + name);
103+
} else logger.severe("Se ha intentado eliminar una tarea que no existe: " + name);
104+
logger.fine("Número de tareas: " + taskSet.size());
105+
LocalTime endtTime = LocalTime.now();
106+
printExecutionTime(startTime, endtTime);
107+
}
108+
109+
private void listTask() {
110+
LocalTime startTime = LocalTime.now();
111+
if (!taskSet.isEmpty()) {
112+
logger.info("Se va imprimir la lista de tareas.");
113+
this.taskSet.forEach(System.out::println);
114+
} else logger.warning("No hay tareas para mostrar!");
115+
LocalTime endtTime = LocalTime.now();
116+
printExecutionTime(startTime, endtTime);
117+
}
118+
119+
private void printExecutionTime(LocalTime startTime, LocalTime endtTime) {
120+
float time = (float) Duration.between(startTime, endtTime).toNanos() / (1000 * 1000);
121+
System.out.printf("El tiempo de ejecución es: %.3f%n", time);
122+
}
123+
}
124+
}

0 commit comments

Comments
 (0)