Browse Source

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

pull/1/head
parent
commit
2bfed59591
2 changed files with 37 additions and 24 deletions
  1. +23
    -10
      src/main/java/com/example/application/api/RedmineClient.java
  2. +14
    -14
      src/main/java/com/example/application/views/tickets/MisTicketsView.java

+ 23
- 10
src/main/java/com/example/application/api/RedmineClient.java View File

@ -19,18 +19,14 @@ para poder mostrarlo en la vista de visualizacion de tickets*/
public class RedmineClient { 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; private static final int PAGE_SIZE = 25;
static String REDMINE_URL; static String REDMINE_URL;
static String API_KEY; static String API_KEY;
//private final RestTemplate restTemplate;
public RedmineClient(String redmineUrl, String apiKey) { public RedmineClient(String redmineUrl, String apiKey) {
REDMINE_URL = redmineUrl; REDMINE_URL = redmineUrl;
API_KEY = apiKey; API_KEY = apiKey;
//this.restTemplate = new RestTemplate();
} }
public List<Ticket> getTickets() { public List<Ticket> getTickets() {
@ -40,9 +36,8 @@ public class RedmineClient {
while (true) { while (true) {
HttpRequest request = HttpRequest.newBuilder() 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("Content-Type", "application/json")
.header("X-Redmine-API-Key", API_KEY)
.build(); .build();
try { try {
@ -74,16 +69,27 @@ public class RedmineClient {
JsonArray issues = jsonObject.getAsJsonArray("issues"); JsonArray issues = jsonObject.getAsJsonArray("issues");
for (JsonElement issueElement : issues) { for (JsonElement issueElement : issues) {
JsonObject issue = issueElement.getAsJsonObject(); JsonObject issue = issueElement.getAsJsonObject();
System.out.println(issue);
int id = issue.get("id").getAsInt(); int id = issue.get("id").getAsInt();
String subject = issue.get("subject").getAsString(); String subject = issue.get("subject").getAsString();
String description = issue.has("description") ? issue.get("description").getAsString() : ""; String description = issue.has("description") ? issue.get("description").getAsString() : "";
String status = issue.getAsJsonObject("status").get("name").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"); JsonObject authorJson = issue.getAsJsonObject("author");
Ticket.User author = null; Ticket.User author = null;
if (authorJson != 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)); tickets.add(new Ticket(id, subject, description, status, author));
} }
@ -93,8 +99,15 @@ public class RedmineClient {
public List<Ticket> getTicketsCreatedBy(String username) { public List<Ticket> getTicketsCreatedBy(String username) {
List<Ticket> allTickets = getTickets(); List<Ticket> allTickets = getTickets();
List<Ticket> filteredTickets = allTickets.stream() List<Ticket> 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()); System.out.println("Total de tickets creados por " + username + ": " + filteredTickets.size());
return filteredTickets; return filteredTickets;
} }


+ 14
- 14
src/main/java/com/example/application/views/tickets/MisTicketsView.java View File

@ -25,8 +25,6 @@ public class MisTicketsView extends VerticalLayout {
private final Grid<Ticket> grid; private final Grid<Ticket> grid;
private final SecurityService securityService; private final SecurityService securityService;
@Autowired @Autowired
public MisTicketsView(ServerPrpperties prpperties, SecurityService securityService) { public MisTicketsView(ServerPrpperties prpperties, SecurityService securityService) {
this.redmineClient = new RedmineClient(prpperties.REDMINE_URL, prpperties.API_KEY); 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 // Definir columnas en el orden deseado
grid.addColumn(Ticket::getId).setHeader("No.") grid.addColumn(Ticket::getId).setHeader("No.")
.setWidth("4em").setFlexGrow(0);
.setWidth("4em").setFlexGrow(0);
grid.addColumn(Ticket::getSubject).setHeader("Asunto") grid.addColumn(Ticket::getSubject).setHeader("Asunto")
.setAutoWidth(true).setFlexGrow(1);
.setAutoWidth(true).setFlexGrow(1);
grid.addColumn(createStatusRender()).setHeader("Estado") grid.addColumn(createStatusRender()).setHeader("Estado")
.setWidth("7em").setFlexGrow(1);
.setWidth("7em").setFlexGrow(1);
grid.addColumn(Ticket::getDescription).setHeader("Descripción") grid.addColumn(Ticket::getDescription).setHeader("Descripción")
.setAutoWidth(true).setFlexGrow(1); .setAutoWidth(true).setFlexGrow(1);
// Ajustar tamaño del Grid y Layout // Ajustar tamaño del Grid y Layout
grid.setSizeFull(); grid.setSizeFull();
setSizeFull(); setSizeFull();
@ -58,13 +55,14 @@ public class MisTicketsView extends VerticalLayout {
} }
private void loadTickets(String authenticatedUsername) { private void loadTickets(String authenticatedUsername) {
List<Ticket> tickets = redmineClient.getTicketsCreatedBy(authenticatedUsername );
List<Ticket> tickets = redmineClient.getTickets();
tickets.removeIf(ticket -> !ticket.getAuthor().getUsername().equals(authenticatedUsername));
System.out.println("Tickets para mostrar: " + tickets.size()); System.out.println("Tickets para mostrar: " + tickets.size());
grid.setItems(tickets); grid.setItems(tickets);
} }
private String getAuthenticatedUsername() { private String getAuthenticatedUsername() {
String username = securityService.getAuthenticatedUser().getUsername();
String username = securityService.getAuthenticatedUser().getUsername();
System.out.println("Usuario autenticado: " + username); System.out.println("Usuario autenticado: " + username);
return username; return username;
} }
@ -74,16 +72,18 @@ public class MisTicketsView extends VerticalLayout {
Span span = new Span(ticket.getStatus()); Span span = new Span(ticket.getStatus());
switch (ticket.getStatus().toLowerCase()) { switch (ticket.getStatus().toLowerCase()) {
case "open": case "open":
span.getElement().getStyle().set("color","green");
span.getElement().getStyle().set("color", "white");
break;
case "closed":
span.getElement().getStyle().set("color", "white");
break; break;
case "closed":
span.getElement().getStyle().set("color","red");
break;
case "in progress": case "in progress":
span.getElement().getStyle().set("color","orange");
span.getElement().getStyle().set("background-color", "orange");
span.getElement().getStyle().set("color", "black");
break; break;
default: default:
span.getElement().getStyle().set("color","green");
span.getElement().getStyle().set("background-color", "blue");
span.getElement().getStyle().set("color", "white");
break; break;
} }
return span; return span;


Loading…
Cancel
Save