From 2bfed5959116b43e7a7a6daca4d3e8fb213d49e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Antonio=20Ram=C3=ADrez=20Galv=C3=A1n?= Date: Wed, 12 Jun 2024 16:00:22 -0600 Subject: [PATCH] En esta version se hicieron algunos cambios y ajustes en las clases MisTicketsView y RedmineClient para mostrar mas informacion de los tickets por consola, etc --- .../application/api/RedmineClient.java | 33 +++++++++++++------ .../views/tickets/MisTicketsView.java | 28 ++++++++-------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/example/application/api/RedmineClient.java b/src/main/java/com/example/application/api/RedmineClient.java index 19a4e63..1eb2565 100644 --- a/src/main/java/com/example/application/api/RedmineClient.java +++ b/src/main/java/com/example/application/api/RedmineClient.java @@ -19,18 +19,14 @@ para poder mostrarlo en la vista de visualizacion de tickets*/ public class RedmineClient { - //private static final String REDMINE_URL = "http://localhost:3000"; - //private static final String API_KEY = "cf3be6168e66c99892c6212ea0bc64e8ab1c6848"; private static final int PAGE_SIZE = 25; static String REDMINE_URL; static String API_KEY; - //private final RestTemplate restTemplate; public RedmineClient(String redmineUrl, String apiKey) { REDMINE_URL = redmineUrl; API_KEY = apiKey; - //this.restTemplate = new RestTemplate(); } public List getTickets() { @@ -40,9 +36,8 @@ public class RedmineClient { while (true) { HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(REDMINE_URL + "/issues.json?key=" + PAGE_SIZE + "&offset=" + offset)) + .uri(URI.create(REDMINE_URL + "/issues.json?key=" + API_KEY + "&offset=" + offset)) .header("Content-Type", "application/json") - .header("X-Redmine-API-Key", API_KEY) .build(); try { @@ -74,16 +69,27 @@ public class RedmineClient { JsonArray issues = jsonObject.getAsJsonArray("issues"); for (JsonElement issueElement : issues) { JsonObject issue = issueElement.getAsJsonObject(); + System.out.println(issue); int id = issue.get("id").getAsInt(); String subject = issue.get("subject").getAsString(); String description = issue.has("description") ? issue.get("description").getAsString() : ""; String status = issue.getAsJsonObject("status").get("name").getAsString(); + //Aqui se obtiene el nombre del autor quien crea el ticket JsonObject authorJson = issue.getAsJsonObject("author"); Ticket.User author = null; if (authorJson != null) { - String username = authorJson.get("name").getAsString(); - author = new Ticket.User(username); + System.out.println("Author JSON: " + authorJson); + JsonElement nameElement = authorJson.get("name"); + if (nameElement != null) { + String username = nameElement.getAsString(); + System.out.println("Autor del ticket: " + username); + author = new Ticket.User(username); + } else { + System.out.println("Campo name no encontrado en el autor: " + authorJson); + } + }else { + System.out.println("Autor es NULL para el ticket id: " + id); } tickets.add(new Ticket(id, subject, description, status, author)); } @@ -93,8 +99,15 @@ public class RedmineClient { public List getTicketsCreatedBy(String username) { List allTickets = getTickets(); List filteredTickets = allTickets.stream() - .filter(ticket -> ticket.getAuthor() != null && username.equals(ticket.getAuthor().getUsername())) - .collect(Collectors.toList()); + .filter( ticket -> { + if (ticket.getAuthor() != null) { + String ticketUsername = ticket.getAuthor().getUsername(); + System.out.println("Comparando: " + username + " con " + ticketUsername); + return username.equals(ticketUsername); + } + return false; + }) + .collect(Collectors.toList()); System.out.println("Total de tickets creados por " + username + ": " + filteredTickets.size()); return filteredTickets; } diff --git a/src/main/java/com/example/application/views/tickets/MisTicketsView.java b/src/main/java/com/example/application/views/tickets/MisTicketsView.java index a770b8d..a68caa8 100644 --- a/src/main/java/com/example/application/views/tickets/MisTicketsView.java +++ b/src/main/java/com/example/application/views/tickets/MisTicketsView.java @@ -25,8 +25,6 @@ public class MisTicketsView extends VerticalLayout { private final Grid grid; private final SecurityService securityService; - - @Autowired public MisTicketsView(ServerPrpperties prpperties, SecurityService securityService) { this.redmineClient = new RedmineClient(prpperties.REDMINE_URL, prpperties.API_KEY); @@ -35,15 +33,14 @@ public class MisTicketsView extends VerticalLayout { // Definir columnas en el orden deseado grid.addColumn(Ticket::getId).setHeader("No.") - .setWidth("4em").setFlexGrow(0); + .setWidth("4em").setFlexGrow(0); grid.addColumn(Ticket::getSubject).setHeader("Asunto") - .setAutoWidth(true).setFlexGrow(1); + .setAutoWidth(true).setFlexGrow(1); grid.addColumn(createStatusRender()).setHeader("Estado") - .setWidth("7em").setFlexGrow(1); + .setWidth("7em").setFlexGrow(1); grid.addColumn(Ticket::getDescription).setHeader("Descripción") .setAutoWidth(true).setFlexGrow(1); - // Ajustar tamaño del Grid y Layout grid.setSizeFull(); setSizeFull(); @@ -58,13 +55,14 @@ public class MisTicketsView extends VerticalLayout { } private void loadTickets(String authenticatedUsername) { - List tickets = redmineClient.getTicketsCreatedBy(authenticatedUsername ); + List tickets = redmineClient.getTickets(); + tickets.removeIf(ticket -> !ticket.getAuthor().getUsername().equals(authenticatedUsername)); System.out.println("Tickets para mostrar: " + tickets.size()); grid.setItems(tickets); } private String getAuthenticatedUsername() { - String username = securityService.getAuthenticatedUser().getUsername(); + String username = securityService.getAuthenticatedUser().getUsername(); System.out.println("Usuario autenticado: " + username); return username; } @@ -74,16 +72,18 @@ public class MisTicketsView extends VerticalLayout { Span span = new Span(ticket.getStatus()); switch (ticket.getStatus().toLowerCase()) { case "open": - span.getElement().getStyle().set("color","green"); + span.getElement().getStyle().set("color", "white"); + break; + case "closed": + span.getElement().getStyle().set("color", "white"); break; - case "closed": - span.getElement().getStyle().set("color","red"); - break; case "in progress": - span.getElement().getStyle().set("color","orange"); + span.getElement().getStyle().set("background-color", "orange"); + span.getElement().getStyle().set("color", "black"); break; default: - span.getElement().getStyle().set("color","green"); + span.getElement().getStyle().set("background-color", "blue"); + span.getElement().getStyle().set("color", "white"); break; } return span;