diff --git a/src/main/java/fr/la_banquise/backend/data/model/Instance.java b/src/main/java/fr/la_banquise/backend/data/model/Instance.java index aab3b06..bf5b135 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/Instance.java +++ b/src/main/java/fr/la_banquise/backend/data/model/Instance.java @@ -1,7 +1,6 @@ package fr.la_banquise.backend.data.model; import com.fasterxml.jackson.annotation.JsonBackReference; - import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -21,7 +20,8 @@ import lombok.NoArgsConstructor; public class Instance { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @SequenceGenerator(name = "InstanceSeq", sequenceName = "instance_id_seq", allocationSize = 1, initialValue = 1) + @SequenceGenerator(name = "InstanceSeq", sequenceName = "instance_id_seq", + allocationSize = 1, initialValue = 1) public Long id; public String name; public String ssh; @@ -37,7 +37,8 @@ public class Instance { @JoinColumn(name = "practical_id", nullable = false) public Tp tp; - public Instance(String name, String ssh, String pwd, Long port, User user, Tp tp) { + public Instance(String name, String ssh, String pwd, Long port, User user, + Tp tp) { this.name = name; this.ssh = ssh; this.pwd = pwd; diff --git a/src/main/java/fr/la_banquise/backend/data/model/Ji.java b/src/main/java/fr/la_banquise/backend/data/model/Ji.java index 987761b..ac075d8 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/Ji.java +++ b/src/main/java/fr/la_banquise/backend/data/model/Ji.java @@ -5,13 +5,13 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; +import java.util.List; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; -import java.util.List; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.JoinColumn; @Entity @NoArgsConstructor @@ -20,18 +20,18 @@ import jakarta.persistence.JoinColumn; public class Ji { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @SequenceGenerator(name = "JiSeq", sequenceName = "ji_id_seq", allocationSize = 1, initialValue = 1) + @SequenceGenerator(name = "JiSeq", sequenceName = "ji_id_seq", + allocationSize = 1, initialValue = 1) public Long id; public String name; public String description; public String respo; public String date; - @ManyToOne - @JoinColumn(name = "site_id") - public Site site; + @ManyToOne @JoinColumn(name = "site_id") public Site site; - public Ji(String name, String description, String respo, String date, Site site) { + public Ji(String name, String description, String respo, String date, + Site site) { this.name = name; this.description = description; this.respo = respo; diff --git a/src/main/java/fr/la_banquise/backend/data/model/Site.java b/src/main/java/fr/la_banquise/backend/data/model/Site.java index d832eef..f7e5543 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/Site.java +++ b/src/main/java/fr/la_banquise/backend/data/model/Site.java @@ -1,42 +1,36 @@ package fr.la_banquise.backend.data.model; -import io.quarkus.hibernate.orm.panache.PanacheEntity; - import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; +import java.util.ArrayList; +import java.util.List; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; -import java.util.Set; -import java.util.HashSet; -import jakarta.persistence.OneToMany; -import java.util.List; -import java.util.ArrayList; @Entity @NoArgsConstructor @AllArgsConstructor -@Table(name = "site", uniqueConstraints = { - @UniqueConstraint(columnNames = "name") -}) +@Table(name = "site", + uniqueConstraints = { @UniqueConstraint(columnNames = "name") }) public class Site { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @SequenceGenerator(name = "SiteSeq", sequenceName = "site_id_seq", allocationSize = 1, initialValue = 1) + @SequenceGenerator(name = "SiteSeq", sequenceName = "site_id_seq", + allocationSize = 1, initialValue = 1) public Long id; - @Column(unique = true, nullable = false) - public String name; + @Column(unique = true, nullable = false) public String name; public String description; public String address; - @OneToMany(mappedBy = "site") - public List jiInSite; + @OneToMany(mappedBy = "site") public List jiInSite; public Site(String name, String description, String address) { this.name = name; @@ -45,9 +39,9 @@ public class Site { this.jiInSite = new ArrayList(); } - @Override public String toString() { - return "Site{id=" + id + ", name='" + name + "', description='" + description + "', address='" + address + "'}"; + return "Site{id=" + id + ", name='" + name + "', description='" + + description + "', address='" + address + "'}"; } } diff --git a/src/main/java/fr/la_banquise/backend/data/model/Tp.java b/src/main/java/fr/la_banquise/backend/data/model/Tp.java index 8eeb3b6..370a23c 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/Tp.java +++ b/src/main/java/fr/la_banquise/backend/data/model/Tp.java @@ -1,6 +1,5 @@ package fr.la_banquise.backend.data.model; -import io.quarkus.hibernate.orm.panache.PanacheEntity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -20,7 +19,8 @@ import lombok.NoArgsConstructor; public class Tp { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @SequenceGenerator(name = "TpSeq", sequenceName = "tp_id_seq", allocationSize = 1, initialValue = 1) + @SequenceGenerator(name = "TpSeq", sequenceName = "tp_id_seq", + allocationSize = 1, initialValue = 1) public Long id; public String name; public String description; @@ -28,7 +28,8 @@ public class Tp { public String respo; public String date; - public Tp(String name, String description, String pdfLink, String respo, String date) { + public Tp(String name, String description, String pdfLink, String respo, + String date) { this.name = name; this.description = description; this.pdfLink = pdfLink; diff --git a/src/main/java/fr/la_banquise/backend/data/model/User.java b/src/main/java/fr/la_banquise/backend/data/model/User.java index 325e749..7c7caa1 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/User.java +++ b/src/main/java/fr/la_banquise/backend/data/model/User.java @@ -1,9 +1,6 @@ package fr.la_banquise.backend.data.model; -import java.util.List; - import com.fasterxml.jackson.annotation.JsonManagedReference; - import io.quarkus.security.jpa.Password; import io.quarkus.security.jpa.Roles; import io.quarkus.security.jpa.UserDefinition; @@ -16,6 +13,7 @@ import jakarta.persistence.Id; import jakarta.persistence.OneToMany; import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; +import java.util.List; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -34,24 +32,22 @@ import lombok.Setter; public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @SequenceGenerator(name = "UserSeq", sequenceName = "user_id_seq", allocationSize = 1, initialValue = 1) + @SequenceGenerator(name = "UserSeq", sequenceName = "user_id_seq", + allocationSize = 1, initialValue = 1) public Long id; - @Username - public String name; - @Password - public String password; - @Roles - public String role; + @Username public String name; + @Password public String password; + @Roles public String role; @JsonManagedReference @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) public List instances; - public User(String name, String password, String role, List instances) { + public User(String name, String password, String role, + List instances) { this.name = name; this.password = password; this.role = role; this.instances = instances; } - } diff --git a/src/main/java/fr/la_banquise/backend/data/repository/SiteRepository.java b/src/main/java/fr/la_banquise/backend/data/repository/SiteRepository.java index 18e5aa0..0dc3a52 100644 --- a/src/main/java/fr/la_banquise/backend/data/repository/SiteRepository.java +++ b/src/main/java/fr/la_banquise/backend/data/repository/SiteRepository.java @@ -5,5 +5,4 @@ import io.quarkus.hibernate.orm.panache.PanacheRepository; import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped -public class SiteRepository implements PanacheRepository { -} +public class SiteRepository implements PanacheRepository {} diff --git a/src/main/java/fr/la_banquise/backend/data/repository/TpRepository.java b/src/main/java/fr/la_banquise/backend/data/repository/TpRepository.java index c395dfc..8751766 100644 --- a/src/main/java/fr/la_banquise/backend/data/repository/TpRepository.java +++ b/src/main/java/fr/la_banquise/backend/data/repository/TpRepository.java @@ -8,5 +8,4 @@ import jakarta.enterprise.context.ApplicationScoped; * TpRepository */ @ApplicationScoped -public class TpRepository implements PanacheRepository { -} +public class TpRepository implements PanacheRepository {} diff --git a/src/main/java/fr/la_banquise/backend/rest/ContainerResource.java b/src/main/java/fr/la_banquise/backend/rest/ContainerResource.java index 3f90be4..0a5bd48 100644 --- a/src/main/java/fr/la_banquise/backend/rest/ContainerResource.java +++ b/src/main/java/fr/la_banquise/backend/rest/ContainerResource.java @@ -5,7 +5,6 @@ import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; - import java.util.Map; @Path("/containers") @@ -13,28 +12,33 @@ import java.util.Map; @Consumes(MediaType.APPLICATION_JSON) public class ContainerResource { - @Inject - DockerService dockerService; + @Inject DockerService dockerService; @POST @Path("/nginx") public Response launchNginx() { try { String id = dockerService.createAndStartNginx(); - return Response.ok(Map.of("containerId", id, "status", "running")).build(); + return Response.ok(Map.of("containerId", id, "status", "running")) + .build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @POST @Path("/create") - public Response createContainer(@QueryParam("name") String name, @QueryParam("port") int port) { + public Response createContainer(@QueryParam("name") String name, + @QueryParam("port") int port) { try { String id = dockerService.createContainer(name, port); return Response.ok(Map.of("containerId", id)).build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @@ -45,7 +49,9 @@ public class ContainerResource { String id = dockerService.listAllContainers(); return Response.ok(id).build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @@ -54,9 +60,12 @@ public class ContainerResource { public Response start(@QueryParam("id") String id) { try { dockerService.start(id); - return Response.ok(Map.of("containerId", id, "status", "Running")).build(); + return Response.ok(Map.of("containerId", id, "status", "Running")) + .build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @@ -65,9 +74,12 @@ public class ContainerResource { public Response stop(@QueryParam("id") String id) { try { dockerService.stop(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); + return Response.ok(Map.of("containerId", id, "status", "removed")) + .build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @DELETE @@ -75,9 +87,12 @@ public class ContainerResource { public Response remove(@QueryParam("id") String id) { try { dockerService.remove(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); + return Response.ok(Map.of("containerId", id, "status", "removed")) + .build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } } diff --git a/src/main/java/fr/la_banquise/backend/rest/JiResource.java b/src/main/java/fr/la_banquise/backend/rest/JiResource.java index 9c81679..b0357d8 100644 --- a/src/main/java/fr/la_banquise/backend/rest/JiResource.java +++ b/src/main/java/fr/la_banquise/backend/rest/JiResource.java @@ -2,31 +2,25 @@ package fr.la_banquise.backend.rest; import fr.la_banquise.backend.data.model.Ji; import fr.la_banquise.backend.services.JiService; +import io.quarkus.security.identity.SecurityIdentity; +import jakarta.annotation.security.RolesAllowed; import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import java.util.List; -import java.util.stream.Collectors; -import io.quarkus.security.identity.SecurityIdentity; -import jakarta.annotation.security.RolesAllowed; - -import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; -import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; - import java.util.Map; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; @Path("/ji") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class JiResource { - @Inject - SecurityIdentity identity; + @Inject SecurityIdentity identity; - @Inject - JiService jiService; - + @Inject JiService jiService; @GET @Path("/listall") @@ -36,19 +30,27 @@ public class JiResource { List ji = jiService.getAllJi(); return Response.ok(ji).build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @POST @Path("/create") @RolesAllowed("root") - public Response createJi(@QueryParam("name") String name, @QueryParam("desc") String desc, @QueryParam("address") String address, @QueryParam("respo") String respo, @QueryParam("site") String name_site) { + public Response createJi(@QueryParam("name") String name, + @QueryParam("desc") String desc, + @QueryParam("address") String address, + @QueryParam("respo") String respo, + @QueryParam("site") String name_site) { try { Ji jsp = jiService.createJi(name, desc, address, respo, name_site); return Response.ok(Map.of("created", jsp)).build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @@ -60,7 +62,9 @@ public class JiResource { Ji ji = jiService.getJiByName(name); return Response.ok(ji.toString()).build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @@ -68,58 +72,64 @@ public class JiResource { @Path("/del") @RolesAllowed("root") @APIResponses({ - @APIResponse(responseCode = "200", description = "Successfully deleted"), - @APIResponse(responseCode = "500", description = "Internal server error, usually site not found") -}) - public Response deleteJiByName(@QueryParam("name") String name) { + @APIResponse(responseCode = "200", description = "Successfully deleted") + , @APIResponse(responseCode = "500", + description = + "Internal server error, usually site not found") + }) + public Response + deleteJiByName(@QueryParam("name") String name) { try { jiService.deleteJi(name); return Response.ok().build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } -/* - @GET - @Path("/all") - public Response listContainers() { - try { - String id = dockerService.listAllContainers(); - return Response.ok(id).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + /* + @GET + @Path("/all") + public Response listContainers() { + try { + String id = dockerService.listAllContainers(); + return Response.ok(id).build(); + } catch (Exception e) { + return Response.status(500).entity(Map.of("error", + e.getMessage())).build(); + } } - } - @POST - @Path("/start") - public Response start(@QueryParam("id") String id) { - try { - dockerService.start(id); - return Response.ok(Map.of("containerId", id, "status", "Running")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + @POST + @Path("/start") + public Response start(@QueryParam("id") String id) { + try { + dockerService.start(id); + return Response.ok(Map.of("containerId", id, "status", + "Running")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } } - } - @POST - @Path("/stop") - public Response stop(@QueryParam("id") String id) { - try { - dockerService.stop(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + @POST + @Path("/stop") + public Response stop(@QueryParam("id") String id) { + try { + dockerService.stop(id); + return Response.ok(Map.of("containerId", id, "status", + "removed")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } } - } - @DELETE - @Path("/remove") - public Response remove(@QueryParam("id") String id) { - try { - dockerService.remove(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); - } - }*/ + @DELETE + @Path("/remove") + public Response remove(@QueryParam("id") String id) { + try { + dockerService.remove(id); + return Response.ok(Map.of("containerId", id, "status", + "removed")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } + }*/ } diff --git a/src/main/java/fr/la_banquise/backend/rest/SiteEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/SiteEndpoints.java index 551b7a6..6995685 100644 --- a/src/main/java/fr/la_banquise/backend/rest/SiteEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/SiteEndpoints.java @@ -2,32 +2,28 @@ package fr.la_banquise.backend.rest; import fr.la_banquise.backend.data.model.Site; import fr.la_banquise.backend.services.SiteService; +import io.quarkus.security.identity.SecurityIdentity; +import jakarta.annotation.security.RolesAllowed; import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; -import io.quarkus.security.identity.SecurityIdentity; -import jakarta.annotation.security.RolesAllowed; - -import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; -import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; - -import java.util.Map; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; @Path("/sites") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class SiteEndpoints { - @Inject - SecurityIdentity identity; + @Inject SecurityIdentity identity; - @Inject - SiteService siteService; + @Inject SiteService siteService; @GET @Path("/listall") @@ -36,27 +32,29 @@ public class SiteEndpoints { try { List sites = siteService.getAllSites(); return Response.ok(sites).build(); - } - catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } catch (Exception e) { + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } @POST @Path("/create") @RolesAllowed("root") - public Response createSite(@QueryParam("name") String name, @QueryParam("desc") String desc, @QueryParam("address") String address) { + public Response createSite(@QueryParam("name") String name, + @QueryParam("desc") String desc, + @QueryParam("address") String address) { try { String jsp = siteService.createSite(name, desc, address).toString(); return Response.ok(Map.of("created", jsp)).build(); - } - catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } catch (Exception e) { + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } - - @GET @Path("/getbyname") @Produces(MediaType.APPLICATION_JSON) @@ -64,73 +62,89 @@ public class SiteEndpoints { try { Site site = siteService.getSiteByName(name); return Response.ok(site.toString()).build(); - } - catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } catch (Exception e) { + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } - - @DELETE @Path("/del") @RolesAllowed("root") - @Operation(summary = "Deletes a site", description = "Permanently removes a site if no Ji are associated to it.") + @Operation(summary = "Deletes a site", + description = + "Permanently removes a site if no Ji are associated to it.") @APIResponses({ - @APIResponse(responseCode = "200", description = "Successfully deleted"), - @APIResponse(responseCode = "409", description = "Cannot delete site, it has associated JI records"), - @APIResponse(responseCode = "500", description = "Internal server error, usually site not found")}) - public Response deleteSiteByName(@QueryParam("name") String name) { + @APIResponse(responseCode = "200", description = "Successfully deleted") + , + @APIResponse(responseCode = "409", + description = + "Cannot delete site, it has associated JI records") + , + @APIResponse(responseCode = "500", + description = + "Internal server error, usually site not found") + }) + public Response + deleteSiteByName(@QueryParam("name") String name) { try { boolean retour = siteService.deleteSiteByName(name); - if (retour) { return Response.ok().build(); } - return Response.status(409).entity(Map.of("Cannot delete site", "it has associated JI records")).build(); - } - catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); - } - } -/* - @GET - @Path("/all") - public Response listContainers() { - try { - String id = dockerService.listAllContainers(); - return Response.ok(id).build(); + if (retour) { + return Response.ok().build(); + } + return Response.status(409) + .entity(Map.of("Cannot delete site", + "it has associated JI records")) + .build(); } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + return Response.status(500) + .entity(Map.of("error", e.getMessage())) + .build(); } } + /* + @GET + @Path("/all") + public Response listContainers() { + try { + String id = dockerService.listAllContainers(); + return Response.ok(id).build(); + } catch (Exception e) { + return Response.status(500).entity(Map.of("error", + e.getMessage())).build(); + } + } - @POST - @Path("/start") - public Response start(@QueryParam("id") String id) { - try { - dockerService.start(id); - return Response.ok(Map.of("containerId", id, "status", "Running")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + @POST + @Path("/start") + public Response start(@QueryParam("id") String id) { + try { + dockerService.start(id); + return Response.ok(Map.of("containerId", id, "status", + "Running")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } } - } - @POST - @Path("/stop") - public Response stop(@QueryParam("id") String id) { - try { - dockerService.stop(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); + @POST + @Path("/stop") + public Response stop(@QueryParam("id") String id) { + try { + dockerService.stop(id); + return Response.ok(Map.of("containerId", id, "status", + "removed")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } } - } - @DELETE - @Path("/remove") - public Response remove(@QueryParam("id") String id) { - try { - dockerService.remove(id); - return Response.ok(Map.of("containerId", id, "status", "removed")).build(); - } catch (Exception e) { - return Response.status(500).entity(Map.of("error", e.getMessage())).build(); - } - }*/ + @DELETE + @Path("/remove") + public Response remove(@QueryParam("id") String id) { + try { + dockerService.remove(id); + return Response.ok(Map.of("containerId", id, "status", + "removed")).build(); } catch (Exception e) { return + Response.status(500).entity(Map.of("error", e.getMessage())).build(); + } + }*/ } diff --git a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java index f8cd258..076d591 100644 --- a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java @@ -23,16 +23,15 @@ import jakarta.ws.rs.core.Response; @Produces(MediaType.APPLICATION_JSON) public class UserEndpoints { - @Inject - SecurityIdentity identity; + @Inject SecurityIdentity identity; - @Inject - UserService userService; + @Inject UserService userService; @GET @Path("/me") public Response getCurrentUser() { - LoggedUserResponse user = new LoggedUserResponse(identity.getPrincipal().getName(), identity.getRoles()); + LoggedUserResponse user = new LoggedUserResponse( + identity.getPrincipal().getName(), identity.getRoles()); return Response.ok(user).build(); } diff --git a/src/main/java/fr/la_banquise/backend/services/DockerService.java b/src/main/java/fr/la_banquise/backend/services/DockerService.java index 426f5ed..7456d54 100644 --- a/src/main/java/fr/la_banquise/backend/services/DockerService.java +++ b/src/main/java/fr/la_banquise/backend/services/DockerService.java @@ -2,24 +2,23 @@ package fr.la_banquise.backend.services; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.CreateContainerResponse; +import com.github.dockerjava.api.command.InspectContainerResponse; +import com.github.dockerjava.api.model.Container; +import com.github.dockerjava.api.model.ContainerPort; import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.PortBinding; import com.github.dockerjava.api.model.Ports; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.HashMap; -import com.github.dockerjava.api.model.Container; -import com.github.dockerjava.api.model.ContainerPort; -import com.github.dockerjava.api.command.InspectContainerResponse; @ApplicationScoped public class DockerService { - @Inject - DockerClient dockerClient; + @Inject DockerClient dockerClient; public String createAndStartNginx() { ExposedPort tcp80 = ExposedPort.tcp(80); @@ -27,15 +26,16 @@ public class DockerService { Ports portBindings = new Ports(); portBindings.bind(tcp80, Ports.Binding.bindPort(8081)); - HostConfig hostConfig = HostConfig.newHostConfig() - .withPortBindings(portBindings); + HostConfig hostConfig = + HostConfig.newHostConfig().withPortBindings(portBindings); Map labels = new HashMap<>(); - labels.put("test", "banquise"); - labels.put("environment", "development"); - labels.put("version", "1.0"); - labels.put("created-by", "java-docker-api"); + labels.put("test", "banquise"); + labels.put("environment", "development"); + labels.put("version", "1.0"); + labels.put("created-by", "java-docker-api"); - CreateContainerResponse container = dockerClient.createContainerCmd("nginx:latest") + CreateContainerResponse container = + dockerClient.createContainerCmd("nginx:latest") .withName("my-nginx") .withLabels(labels) .withExposedPorts(tcp80) @@ -47,139 +47,141 @@ public class DockerService { } public String createContainer(String containerName, int port) { - StringBuilder result = new StringBuilder(); + StringBuilder result = new StringBuilder(); ExposedPort tcpSsh = ExposedPort.tcp(80); Ports portBindings = new Ports(); portBindings.bind(tcpSsh, Ports.Binding.bindPort(port)); - HostConfig hostConfig = HostConfig.newHostConfig() - .withPortBindings(portBindings); + HostConfig hostConfig = + HostConfig.newHostConfig().withPortBindings(portBindings); - CreateContainerResponse container = dockerClient.createContainerCmd("nginx:latest") + CreateContainerResponse container = + dockerClient.createContainerCmd("nginx:latest") .withName(containerName) .withExposedPorts(tcpSsh) .withHostConfig(hostConfig) .exec(); - //dockerClient.startContainerCmd(container.getId()).exec(); + // dockerClient.startContainerCmd(container.getId()).exec(); return container.getId(); } -/* - public String listAllContainers() { - StringBuilder json = new StringBuilder(); - List containers = dockerClient.listContainersCmd() - .withShowAll(true) - .exec(); - - json.append("["); - - for (int i = 0; i < containers.size(); i++) { - Container container = containers.get(i); - - json.append("{"); - json.append("\"name\":\"").append(container.getNames()[0].substring(1)).append("\","); - json.append("\"id\":\"").append(container.getId()).append("\","); - json.append("\"image\":\"").append(container.getImage()).append("\","); - json.append("\"status\":\"").append(container.getStatus()).append("\","); - - // Ports - InspectContainerResponse inspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - json.append("\"ports\":["); -if (container.getPorts() != null && container.getPorts().length > 0) { - for (int j = 0; j < .length; j+=2) { - ContainerPort port = container.getPorts()[j]; - json.append("[\""); - json.append(port.getPrivatePort()).append("->").append(port.getPublicPort()).append("/"+port.getType()+"\",\""); -json.append(port.getIp()).append(",").append((container.getPorts()[j+1]).getIp()); -if (port.getType() != null) { - json.append("/").append(port.getType()); + /* + public String listAllContainers() { + StringBuilder json = new StringBuilder(); + List containers = dockerClient.listContainersCmd() + .withShowAll(true) + .exec(); + + json.append("["); + + for (int i = 0; i < containers.size(); i++) { + Container container = containers.get(i); + + json.append("{"); + json.append("\"name\":\"").append(container.getNames()[0].substring(1)).append("\","); + json.append("\"id\":\"").append(container.getId()).append("\","); + json.append("\"image\":\"").append(container.getImage()).append("\","); + json.append("\"status\":\"").append(container.getStatus()).append("\","); + + // Ports + InspectContainerResponse inspectResponse = + dockerClient.inspectContainerCmd(container.getId()).exec(); + json.append("\"ports\":["); + if (container.getPorts() != null && container.getPorts().length > 0) { + for (int j = 0; j < .length; j+=2) { + ContainerPort port = container.getPorts()[j]; + json.append("[\""); + json.append(port.getPrivatePort()).append("->").append(port.getPublicPort()).append("/"+port.getType()+"\",\""); + json.append(port.getIp()).append(",").append((container.getPorts()[j+1]).getIp()); + if (port.getType() != null) { + json.append("/").append(port.getType()); + } + if (port.getPublicPort() != null) { + json.append("->").append(port.getPublicPort()); + }* + json.append("\"]"); + if (j < container.getPorts().length - 2) { + json.append(","); + } } - if (port.getPublicPort() != null) { - json.append("->").append(port.getPublicPort()); - }* - json.append("\"]"); - if (j < container.getPorts().length - 2) { - json.append(","); + } + json.append("]"); + + // Ports + String ports = "[]"; + try { + InspectContainerResponse inspectResponse = + dockerClient.inspectContainerCmd(container.getId()).exec(); if + (inspectResponse.getConfig().getExposedPorts() != null) { ports = + inspectResponse.getConfig().getExposedPorts().toString(); } + } catch (Exception e) { + // Fallback vers les ports runtime si inspect échoue + if (container.getPorts() != null && container.getPorts().length + > 0) { ports = java.util.Arrays.toString(container.getPorts()); + } + } + json.append("\"ports\":\"").append(ports).append("\""); + json.append("}"); + if (i < containers.size() - 1) { + json.append(","); + } + + json.append("}"); + + if (i < containers.size() - 1) { + json.append(","); + } + } + + json.append("]"); + return json.toString(); + } + public String listAllContainers() { + StringBuilder json = new StringBuilder(); + List containers = dockerClient.listContainersCmd() + .withShowAll(true) + .exec(); + json.append("["); + for (int i = 0; i < containers.size(); i++) { + Container container = containers.get(i); + // Ports + List portsList = new ArrayList<>(); + try { + var inspectResponse = + dockerClient.inspectContainerCmd(container.getId()).exec(); if + (inspectResponse.getConfig().getExposedPorts() != null) { var exposedPorts = + inspectResponse.getConfig().getExposedPorts(); int count = 0; for (var port + : exposedPorts) { if (count > 0) portsList.append(","); + portsList.append(String.format("\"%s\"", + port.toString())); count = 1; + } + portsList.append("]"); + ports = portsList.toString(); + } + } catch (Exception e) { + // Fallback vers les ports runtime si inspect échoue + if (container.getPorts() != null && container.getPorts().length + > 0) { ports = java.util.Arrays.toString(container.getPorts()); + } + } + + //json.append(containerJson); + + if (i < containers.size() - 1) { + json.append(","); } } json.append("]"); - - // Ports - String ports = "[]"; - try { - InspectContainerResponse inspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - if (inspectResponse.getConfig().getExposedPorts() != null) { - ports = inspectResponse.getConfig().getExposedPorts().toString(); - } - } catch (Exception e) { - // Fallback vers les ports runtime si inspect échoue - if (container.getPorts() != null && container.getPorts().length > 0) { - ports = java.util.Arrays.toString(container.getPorts()); - } - } - json.append("\"ports\":\"").append(ports).append("\""); - json.append("}"); - if (i < containers.size() - 1) { - json.append(","); - } - - json.append("}"); - - if (i < containers.size() - 1) { - json.append(","); - } - } - - json.append("]"); - return json.toString(); -} - public String listAllContainers() { - StringBuilder json = new StringBuilder(); - List containers = dockerClient.listContainersCmd() - .withShowAll(true) - .exec(); - json.append("["); - for (int i = 0; i < containers.size(); i++) { - Container container = containers.get(i); - // Ports - List portsList = new ArrayList<>(); - try { - var inspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - if (inspectResponse.getConfig().getExposedPorts() != null) { - var exposedPorts = inspectResponse.getConfig().getExposedPorts(); - int count = 0; - for (var port : exposedPorts) { - if (count > 0) portsList.append(","); - portsList.append(String.format("\"%s\"", port.toString())); - count = 1; - } - portsList.append("]"); - ports = portsList.toString(); - } - } catch (Exception e) { - // Fallback vers les ports runtime si inspect échoue - if (container.getPorts() != null && container.getPorts().length > 0) { - ports = java.util.Arrays.toString(container.getPorts()); - } - } - - //json.append(containerJson); - - if (i < containers.size() - 1) { - json.append(","); - } - } - json.append("]"); - return json.toString(); -}*/ + return json.toString(); + }*/ public String listAllContainers() { return ""; } public void start(String containerId) { dockerClient.startContainerCmd(containerId).exec(); } - + public void stop(String containerId) { dockerClient.stopContainerCmd(containerId).exec(); } diff --git a/src/main/java/fr/la_banquise/backend/services/JiService.java b/src/main/java/fr/la_banquise/backend/services/JiService.java index a956d29..9186ca4 100644 --- a/src/main/java/fr/la_banquise/backend/services/JiService.java +++ b/src/main/java/fr/la_banquise/backend/services/JiService.java @@ -10,15 +10,14 @@ import java.util.List; @ApplicationScoped public class JiService { - - @Inject - JiRepository jiRepository; - @Inject - SiteService siteService; + @Inject JiRepository jiRepository; + + @Inject SiteService siteService; @Transactional - public Ji createJi(String name, String description, String address, String respo, String site_name) { + public Ji createJi(String name, String description, String address, + String respo, String site_name) { Site site = siteService.getSiteByName(site_name); Ji ji = new Ji(name, description, address, respo, site); jiRepository.persist(ji); @@ -26,23 +25,13 @@ public class JiService { return ji; } - /*@Transactional - public List saveAllSites(List sites) { - sites.forEach(site -> siteRepository.persist(site)); - return sites; - }*/ - - public List getAllJi() { - return jiRepository.listAll(); - } + public List getAllJi() { return jiRepository.listAll(); } public Ji getJiByName(String name) { return jiRepository.find("name", name).firstResult(); } - public Ji getJiById(Long id) { - return jiRepository.findById(id); - } + public Ji getJiById(Long id) { return jiRepository.findById(id); } @Transactional public void deleteJi(Long id) { diff --git a/src/main/java/fr/la_banquise/backend/services/SiteService.java b/src/main/java/fr/la_banquise/backend/services/SiteService.java index 0086770..816d277 100644 --- a/src/main/java/fr/la_banquise/backend/services/SiteService.java +++ b/src/main/java/fr/la_banquise/backend/services/SiteService.java @@ -1,7 +1,7 @@ package fr.la_banquise.backend.services; -import fr.la_banquise.backend.data.model.Site; import fr.la_banquise.backend.data.model.Ji; +import fr.la_banquise.backend.data.model.Site; import fr.la_banquise.backend.data.repository.SiteRepository; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @@ -10,9 +10,8 @@ import java.util.List; @ApplicationScoped public class SiteService { - - @Inject - SiteRepository siteRepository; + + @Inject SiteRepository siteRepository; @Transactional public Site createSite(String name, String description, String address) { @@ -27,44 +26,37 @@ public class SiteService { return sites; }*/ - public List getAllSites() { - return siteRepository.listAll(); - } + public List getAllSites() { return siteRepository.listAll(); } public Site getSiteByName(String name) { return siteRepository.find("name", name).firstResult(); } - public Site getSiteById(Long id) { - return siteRepository.findById(id); - } + public Site getSiteById(Long id) { return siteRepository.findById(id); } @Transactional - public void addJi(Site site, Ji ji){ + public void addJi(Site site, Ji ji) { site.jiInSite.add(ji); } @Transactional - public void removeJi(Site site, Ji ji){ + public void removeJi(Site site, Ji ji) { site.jiInSite.remove(ji); } @Transactional public boolean deleteSiteById(Long id) { - if (getSiteById(id).jiInSite.isEmpty()) - { + if (getSiteById(id).jiInSite.isEmpty()) { siteRepository.deleteById(id); return true; } return false; - } @Transactional public boolean deleteSiteByName(String name) { Site site = getSiteByName(name); - if (site.jiInSite.isEmpty()) - { + if (site.jiInSite.isEmpty()) { siteRepository.delete(site); return true; } diff --git a/src/main/java/fr/la_banquise/backend/services/UserService.java b/src/main/java/fr/la_banquise/backend/services/UserService.java index a71e013..10b1f86 100644 --- a/src/main/java/fr/la_banquise/backend/services/UserService.java +++ b/src/main/java/fr/la_banquise/backend/services/UserService.java @@ -1,10 +1,5 @@ package fr.la_banquise.backend.services; -import java.util.ArrayList; -import java.util.List; - -import org.hibernate.annotations.TypeRegistration; - import fr.la_banquise.backend.data.model.Instance; import fr.la_banquise.backend.data.model.User; import fr.la_banquise.backend.data.repository.UserRepository; @@ -14,6 +9,9 @@ import io.quarkus.elytron.security.common.BcryptUtil; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; +import java.util.ArrayList; +import java.util.List; +import org.hibernate.annotations.TypeRegistration; /** * UserService @@ -21,23 +19,19 @@ import jakarta.transaction.Transactional; @ApplicationScoped public class UserService { - @Inject - UserRepository userRepository; + @Inject UserRepository userRepository; - @Inject - InstanceService instanceService; + @Inject InstanceService instanceService; - public List getAllUsers() { - return userRepository.listAll(); - } + public List getAllUsers() { return userRepository.listAll(); } - public User getUser(Long id) { - return userRepository.findById(id); - } + public User getUser(Long id) { return userRepository.findById(id); } @Transactional public User createUser(UserRequest request) { - User user = new User(request.name, BcryptUtil.bcryptHash(request.password), "pingouin", new ArrayList<>()); + User user = + new User(request.name, BcryptUtil.bcryptHash(request.password), + "pingouin", new ArrayList<>()); userRepository.persist(user); return user; } @@ -74,11 +68,10 @@ public class UserService { for (UserRequest user : usersRequest.users) { User newUser = createUser(user); users.add(newUser); - instanceService.createInstance(user.instance_name, user.instance_ssh, user.instance_pwd, user.instance_port, - user.name, - usersRequest.tpId); + instanceService.createInstance( + user.instance_name, user.instance_ssh, user.instance_pwd, + user.instance_port, user.name, usersRequest.tpId); } return new ArrayList(); } - }