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 {
//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<Ticket> 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<Ticket> getTicketsCreatedBy(String username) {
List<Ticket> allTickets = getTickets();
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());
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 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<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());
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;


Loading…
Cancel
Save