diff --git a/back/pom.xml b/back/pom.xml
index 6e4ea33..5cf9696 100644
--- a/back/pom.xml
+++ b/back/pom.xml
@@ -22,7 +22,7 @@
kangaroo-and-rabbit
archidata
- 0.3.7
+ 0.4.0
org.slf4j
diff --git a/back/src/org/kar/karusic/api/AlbumResource.java b/back/src/org/kar/karusic/api/AlbumResource.java
index c374e52..3aa5b06 100644
--- a/back/src/org/kar/karusic/api/AlbumResource.java
+++ b/back/src/org/kar/karusic/api/AlbumResource.java
@@ -1,96 +1,99 @@
package org.kar.karusic.api;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-import org.kar.archidata.SqlWrapper;
-import org.kar.archidata.util.DataTools;
-import org.kar.karusic.model.Album;
-import org.kar.karusic.model.Track;
-
-import org.kar.archidata.annotation.security.RolesAllowed;
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
import java.io.InputStream;
import java.util.List;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.kar.archidata.annotation.security.RolesAllowed;
+import org.kar.archidata.sqlWrapper.SqlWrapper;
+import org.kar.archidata.sqlWrapper.addOn.AddOnManyToMany;
+import org.kar.archidata.util.DataTools;
+import org.kar.karusic.model.Album;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
@Path("/album")
-@Produces({MediaType.APPLICATION_JSON})
+@Produces({ MediaType.APPLICATION_JSON })
public class AlbumResource {
-
- @GET
- @Path("{id}")
- @RolesAllowed("USER")
- public static Album getWithId(@PathParam("id") Long id) throws Exception {
- return SqlWrapper.get(Album.class, id);
- }
-
- @GET
- @RolesAllowed("USER")
- public List get() throws Exception {
- return SqlWrapper.gets(Album.class, false);
- }
-
- @POST
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Album post(String jsonRequest) throws Exception {
- return SqlWrapper.insertWithJson(Album.class, jsonRequest);
- }
-
- @PUT
- @Path("{id}")
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Album put(@PathParam("id") Long id, String jsonRequest) throws Exception {
- SqlWrapper.update(Album.class, id, jsonRequest);
- return SqlWrapper.get(Album.class, id);
- }
-
- @DELETE
- @Path("{id}")
- @RolesAllowed("ADMIN")
- public Response delete(@PathParam("id") Long id) throws Exception {
- SqlWrapper.setDelete(Album.class, id);
- return Response.ok().build();
- }
-
- @POST
- @Path("{id}/add_track/{trackId}")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Album addTrack(@PathParam("id") Long id,@PathParam("trackId") Long trackId) throws Exception {
- SqlWrapper.removeLink(Album.class, id, "track", trackId);
- return SqlWrapper.get(Album.class, id);
- }
-
- @GET
- @Path("{id}/rm_track/{trackId}")
- @RolesAllowed("ADMIN")
- public Album removeTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
- SqlWrapper.removeLink(Album.class, id, "track", trackId);
- return SqlWrapper.get(Album.class, id);
- }
-
- @POST
- @Path("{id}/add_cover")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Response uploadCover(@PathParam("id") Long id,
- @FormDataParam("fileName") String fileName,
- @FormDataParam("file") InputStream fileInputStream,
- @FormDataParam("file") FormDataContentDisposition fileMetaData
- ) {
- return DataTools.uploadCover(Album.class, id, fileName, fileInputStream, fileMetaData);
- }
-
- @GET
- @Path("{id}/rm_cover/{coverId}")
- @RolesAllowed("ADMIN")
- public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
- SqlWrapper.removeLink(Album.class, id, "cover", coverId);
- return Response.ok(SqlWrapper.get(Album.class, id)).build();
- }
+
+ @GET
+ @Path("{id}")
+ @RolesAllowed("USER")
+ public static Album getWithId(@PathParam("id") Long id) throws Exception {
+ return SqlWrapper.get(Album.class, id);
+ }
+
+ @GET
+ @RolesAllowed("USER")
+ public List get() throws Exception {
+ return SqlWrapper.gets(Album.class);
+ }
+
+ @POST
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Album post(String jsonRequest) throws Exception {
+ return SqlWrapper.insertWithJson(Album.class, jsonRequest);
+ }
+
+ @PUT
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Album put(@PathParam("id") Long id, String jsonRequest) throws Exception {
+ SqlWrapper.update(Album.class, id, jsonRequest);
+ return SqlWrapper.get(Album.class, id);
+ }
+
+ @DELETE
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ public Response delete(@PathParam("id") Long id) throws Exception {
+ SqlWrapper.delete(Album.class, id);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Path("{id}/add_track/{trackId}")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Album addTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
+ AddOnManyToMany.removeLink(Album.class, id, "track", trackId);
+ return SqlWrapper.get(Album.class, id);
+ }
+
+ @GET
+ @Path("{id}/rm_track/{trackId}")
+ @RolesAllowed("ADMIN")
+ public Album removeTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
+ AddOnManyToMany.removeLink(Album.class, id, "track", trackId);
+ return SqlWrapper.get(Album.class, id);
+ }
+
+ @POST
+ @Path("{id}/add_cover")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Response uploadCover(@PathParam("id") Long id, @FormDataParam("fileName") String fileName, @FormDataParam("file") InputStream fileInputStream,
+ @FormDataParam("file") FormDataContentDisposition fileMetaData) {
+ return DataTools.uploadCover(Album.class, id, fileName, fileInputStream, fileMetaData);
+ }
+
+ @GET
+ @Path("{id}/rm_cover/{coverId}")
+ @RolesAllowed("ADMIN")
+ public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
+ AddOnManyToMany.removeLink(Album.class, id, "cover", coverId);
+ return Response.ok(SqlWrapper.get(Album.class, id)).build();
+ }
}
-
diff --git a/back/src/org/kar/karusic/api/ArtistResource.java b/back/src/org/kar/karusic/api/ArtistResource.java
index bd142c5..2e9dc4f 100644
--- a/back/src/org/kar/karusic/api/ArtistResource.java
+++ b/back/src/org/kar/karusic/api/ArtistResource.java
@@ -1,78 +1,82 @@
package org.kar.karusic.api;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-import org.kar.karusic.model.Artist;
-import org.kar.archidata.SqlWrapper;
-import org.kar.archidata.util.DataTools;
-
-import org.kar.archidata.annotation.security.RolesAllowed;
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
import java.io.InputStream;
import java.util.List;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.kar.archidata.annotation.security.RolesAllowed;
+import org.kar.archidata.sqlWrapper.SqlWrapper;
+import org.kar.archidata.sqlWrapper.addOn.AddOnManyToMany;
+import org.kar.archidata.util.DataTools;
+import org.kar.karusic.model.Artist;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
@Path("/artist")
-@Produces({MediaType.APPLICATION_JSON})
+@Produces({ MediaType.APPLICATION_JSON })
public class ArtistResource {
-
- @GET
- @Path("{id}")
- @RolesAllowed("USER")
- public static Artist getWithId(@PathParam("id") Long id) throws Exception {
- return SqlWrapper.get(Artist.class, id);
- }
-
- @GET
- @RolesAllowed("USER")
- public List get() throws Exception {
- return SqlWrapper.gets(Artist.class, false);
- }
-
- @POST
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Artist put(String jsonRequest) throws Exception {
- return SqlWrapper.insertWithJson(Artist.class, jsonRequest);
- }
-
- @PUT
- @Path("{id}")
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Artist put(@PathParam("id") Long id, String jsonRequest) throws Exception {
- SqlWrapper.update(Artist.class, id, jsonRequest);
- return SqlWrapper.get(Artist.class, id);
- }
-
- @DELETE
- @Path("{id}")
- @RolesAllowed("ADMIN")
- public Response delete(@PathParam("id") Long id) throws Exception {
- SqlWrapper.setDelete(Artist.class, id);
- return Response.ok().build();
- }
- @POST
- @Path("{id}/add_cover")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Response uploadCover(@PathParam("id") Long id,
- @FormDataParam("fileName") String fileName,
- @FormDataParam("file") InputStream fileInputStream,
- @FormDataParam("file") FormDataContentDisposition fileMetaData
- ) {
- return DataTools.uploadCover(Artist.class, id, fileName, fileInputStream, fileMetaData);
- }
-
-
- @GET
- @Path("{id}/rm_cover/{coverId}")
- @RolesAllowed("ADMIN")
- public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
- SqlWrapper.removeLink(Artist.class, id, "cover", coverId);
- return Response.ok(SqlWrapper.get(Artist.class, id)).build();
- }
+
+ @GET
+ @Path("{id}")
+ @RolesAllowed("USER")
+ public static Artist getWithId(@PathParam("id") Long id) throws Exception {
+ return SqlWrapper.get(Artist.class, id);
+ }
+
+ @GET
+ @RolesAllowed("USER")
+ public List get() throws Exception {
+ return SqlWrapper.gets(Artist.class);
+ }
+
+ @POST
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Artist put(String jsonRequest) throws Exception {
+ return SqlWrapper.insertWithJson(Artist.class, jsonRequest);
+ }
+
+ @PUT
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Artist put(@PathParam("id") Long id, String jsonRequest) throws Exception {
+ SqlWrapper.update(Artist.class, id, jsonRequest);
+ return SqlWrapper.get(Artist.class, id);
+ }
+
+ @DELETE
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ public Response delete(@PathParam("id") Long id) throws Exception {
+ SqlWrapper.delete(Artist.class, id);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Path("{id}/add_cover")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Response uploadCover(@PathParam("id") Long id, @FormDataParam("fileName") String fileName, @FormDataParam("file") InputStream fileInputStream,
+ @FormDataParam("file") FormDataContentDisposition fileMetaData) {
+ return DataTools.uploadCover(Artist.class, id, fileName, fileInputStream, fileMetaData);
+ }
+
+ @GET
+ @Path("{id}/rm_cover/{coverId}")
+ @RolesAllowed("ADMIN")
+ public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
+ AddOnManyToMany.removeLink(Artist.class, id, "cover", coverId);
+ return Response.ok(SqlWrapper.get(Artist.class, id)).build();
+ }
}
-
diff --git a/back/src/org/kar/karusic/api/GenderResource.java b/back/src/org/kar/karusic/api/GenderResource.java
index 0c7ff0e..6255804 100644
--- a/back/src/org/kar/karusic/api/GenderResource.java
+++ b/back/src/org/kar/karusic/api/GenderResource.java
@@ -1,79 +1,82 @@
package org.kar.karusic.api;
-
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-import org.kar.karusic.model.Gender;
-import org.kar.archidata.SqlWrapper;
-import org.kar.archidata.util.DataTools;
-
-import org.kar.archidata.annotation.security.RolesAllowed;
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
import java.io.InputStream;
import java.util.List;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.kar.archidata.annotation.security.RolesAllowed;
+import org.kar.archidata.sqlWrapper.SqlWrapper;
+import org.kar.archidata.sqlWrapper.addOn.AddOnManyToMany;
+import org.kar.archidata.util.DataTools;
+import org.kar.karusic.model.Gender;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
@Path("/gender")
-@Produces({MediaType.APPLICATION_JSON})
+@Produces({ MediaType.APPLICATION_JSON })
public class GenderResource {
-
- @GET
- @Path("{id}")
- @RolesAllowed("USER")
- public static Gender getWithId(@PathParam("id") Long id) throws Exception {
- return SqlWrapper.get(Gender.class, id);
- }
-
- @GET
- @RolesAllowed("USER")
- public List get() throws Exception {
- return SqlWrapper.gets(Gender.class, false);
- }
-
- @POST
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Gender put(String jsonRequest) throws Exception {
- return SqlWrapper.insertWithJson(Gender.class, jsonRequest);
- }
-
- @PUT
- @Path("{id}")
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Gender put(@PathParam("id") Long id, String jsonRequest) throws Exception {
- SqlWrapper.update(Gender.class, id, jsonRequest);
- return SqlWrapper.get(Gender.class, id);
- }
-
- @DELETE
- @Path("{id}")
- @RolesAllowed("ADMIN")
- public Response delete(@PathParam("id") Long id) throws Exception {
- SqlWrapper.setDelete(Gender.class, id);
- return Response.ok().build();
- }
- @POST
- @Path("{id}/add_cover")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Response uploadCover(@PathParam("id") Long id,
- @FormDataParam("fileName") String fileName,
- @FormDataParam("file") InputStream fileInputStream,
- @FormDataParam("file") FormDataContentDisposition fileMetaData
- ) {
- return DataTools.uploadCover(Gender.class, id, fileName, fileInputStream, fileMetaData);
- }
-
-
- @GET
- @Path("{id}/rm_cover/{coverId}")
- @RolesAllowed("ADMIN")
- public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
- SqlWrapper.removeLink(Gender.class, id, "cover", coverId);
- return Response.ok(SqlWrapper.get(Gender.class, id)).build();
- }
+
+ @GET
+ @Path("{id}")
+ @RolesAllowed("USER")
+ public static Gender getWithId(@PathParam("id") Long id) throws Exception {
+ return SqlWrapper.get(Gender.class, id);
+ }
+
+ @GET
+ @RolesAllowed("USER")
+ public List get() throws Exception {
+ return SqlWrapper.gets(Gender.class);
+ }
+
+ @POST
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Gender put(String jsonRequest) throws Exception {
+ return SqlWrapper.insertWithJson(Gender.class, jsonRequest);
+ }
+
+ @PUT
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Gender put(@PathParam("id") Long id, String jsonRequest) throws Exception {
+ SqlWrapper.update(Gender.class, id, jsonRequest);
+ return SqlWrapper.get(Gender.class, id);
+ }
+
+ @DELETE
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ public Response delete(@PathParam("id") Long id) throws Exception {
+ SqlWrapper.delete(Gender.class, id);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Path("{id}/add_cover")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Response uploadCover(@PathParam("id") Long id, @FormDataParam("fileName") String fileName, @FormDataParam("file") InputStream fileInputStream,
+ @FormDataParam("file") FormDataContentDisposition fileMetaData) {
+ return DataTools.uploadCover(Gender.class, id, fileName, fileInputStream, fileMetaData);
+ }
+
+ @GET
+ @Path("{id}/rm_cover/{coverId}")
+ @RolesAllowed("ADMIN")
+ public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
+ AddOnManyToMany.removeLink(Gender.class, id, "cover", coverId);
+ return Response.ok(SqlWrapper.get(Gender.class, id)).build();
+ }
}
-
diff --git a/back/src/org/kar/karusic/api/PlaylistResource.java b/back/src/org/kar/karusic/api/PlaylistResource.java
index 9cf5dd5..afdf32f 100644
--- a/back/src/org/kar/karusic/api/PlaylistResource.java
+++ b/back/src/org/kar/karusic/api/PlaylistResource.java
@@ -1,98 +1,99 @@
package org.kar.karusic.api;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-import org.kar.karusic.model.Playlist;
-import org.kar.archidata.SqlWrapper;
-import org.kar.archidata.util.DataTools;
-
-import org.kar.archidata.annotation.security.RolesAllowed;
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
import java.io.InputStream;
import java.util.List;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.kar.archidata.annotation.security.RolesAllowed;
+import org.kar.archidata.sqlWrapper.SqlWrapper;
+import org.kar.archidata.sqlWrapper.addOn.AddOnManyToMany;
+import org.kar.archidata.util.DataTools;
+import org.kar.karusic.model.Playlist;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
@Path("/playlist")
-@Produces({MediaType.APPLICATION_JSON})
+@Produces({ MediaType.APPLICATION_JSON })
public class PlaylistResource {
-
- @GET
- @Path("{id}")
- @RolesAllowed("USER")
- public static Playlist getWithId(@PathParam("id") Long id) throws Exception {
- return SqlWrapper.get(Playlist.class, id);
- }
-
- @GET
- @RolesAllowed("USER")
- public List get() throws Exception {
- return SqlWrapper.gets(Playlist.class, false);
- }
-
- @POST
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Playlist put(String jsonRequest) throws Exception {
- return SqlWrapper.insertWithJson(Playlist.class, jsonRequest);
- }
-
- @PUT
- @Path("{id}")
- @RolesAllowed("ADMIN")
- @Consumes(MediaType.APPLICATION_JSON)
- public Playlist put(@PathParam("id") Long id, String jsonRequest) throws Exception {
- SqlWrapper.update(Playlist.class, id, jsonRequest);
- return SqlWrapper.get(Playlist.class, id);
- }
-
- @DELETE
- @Path("{id}")
- @RolesAllowed("ADMIN")
- public Response delete(@PathParam("id") Long id) throws Exception {
- SqlWrapper.setDelete(Playlist.class, id);
- return Response.ok().build();
- }
-
- @POST
- @Path("{id}/add_track/{trackId}")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Playlist addTrack(@PathParam("id") Long id,@PathParam("trackId") Long trackId) throws Exception {
- SqlWrapper.removeLink(Playlist.class, id, "track", trackId);
- return SqlWrapper.get(Playlist.class, id);
- }
-
-
- @GET
- @Path("{id}/rm_track/{trackId}")
- @RolesAllowed("ADMIN")
- public Playlist removeTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
- SqlWrapper.removeLink(Playlist.class, id, "track", trackId);
- return SqlWrapper.get(Playlist.class, id);
- }
-
-
- @POST
- @Path("{id}/add_cover")
- @RolesAllowed("ADMIN")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- public Response uploadCover(@PathParam("id") Long id,
- @FormDataParam("fileName") String fileName,
- @FormDataParam("file") InputStream fileInputStream,
- @FormDataParam("file") FormDataContentDisposition fileMetaData
- ) {
- return DataTools.uploadCover(Playlist.class, id, fileName, fileInputStream, fileMetaData);
- }
-
-
- @GET
- @Path("{id}/rm_cover/{coverId}")
- @RolesAllowed("ADMIN")
- public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
- SqlWrapper.removeLink(Playlist.class, id, "cover", coverId);
- return Response.ok(SqlWrapper.get(Playlist.class, id)).build();
- }
+
+ @GET
+ @Path("{id}")
+ @RolesAllowed("USER")
+ public static Playlist getWithId(@PathParam("id") Long id) throws Exception {
+ return SqlWrapper.get(Playlist.class, id);
+ }
+
+ @GET
+ @RolesAllowed("USER")
+ public List get() throws Exception {
+ return SqlWrapper.gets(Playlist.class);
+ }
+
+ @POST
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Playlist put(String jsonRequest) throws Exception {
+ return SqlWrapper.insertWithJson(Playlist.class, jsonRequest);
+ }
+
+ @PUT
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Playlist put(@PathParam("id") Long id, String jsonRequest) throws Exception {
+ SqlWrapper.update(Playlist.class, id, jsonRequest);
+ return SqlWrapper.get(Playlist.class, id);
+ }
+
+ @DELETE
+ @Path("{id}")
+ @RolesAllowed("ADMIN")
+ public Response delete(@PathParam("id") Long id) throws Exception {
+ SqlWrapper.delete(Playlist.class, id);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Path("{id}/add_track/{trackId}")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Playlist addTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
+ AddOnManyToMany.removeLink(Playlist.class, id, "track", trackId);
+ return SqlWrapper.get(Playlist.class, id);
+ }
+
+ @GET
+ @Path("{id}/rm_track/{trackId}")
+ @RolesAllowed("ADMIN")
+ public Playlist removeTrack(@PathParam("id") Long id, @PathParam("trackId") Long trackId) throws Exception {
+ AddOnManyToMany.removeLink(Playlist.class, id, "track", trackId);
+ return SqlWrapper.get(Playlist.class, id);
+ }
+
+ @POST
+ @Path("{id}/add_cover")
+ @RolesAllowed("ADMIN")
+ @Consumes({ MediaType.MULTIPART_FORM_DATA })
+ public Response uploadCover(@PathParam("id") Long id, @FormDataParam("fileName") String fileName, @FormDataParam("file") InputStream fileInputStream,
+ @FormDataParam("file") FormDataContentDisposition fileMetaData) {
+ return DataTools.uploadCover(Playlist.class, id, fileName, fileInputStream, fileMetaData);
+ }
+
+ @GET
+ @Path("{id}/rm_cover/{coverId}")
+ @RolesAllowed("ADMIN")
+ public Response removeCover(@PathParam("id") Long id, @PathParam("coverId") Long coverId) throws Exception {
+ AddOnManyToMany.removeLink(Playlist.class, id, "cover", coverId);
+ return Response.ok(SqlWrapper.get(Playlist.class, id)).build();
+ }
}
-
diff --git a/back/src/org/kar/karusic/api/TrackResource.java b/back/src/org/kar/karusic/api/TrackResource.java
index 371be7b..5444ace 100644
--- a/back/src/org/kar/karusic/api/TrackResource.java
+++ b/back/src/org/kar/karusic/api/TrackResource.java
@@ -1,249 +1,239 @@
package org.kar.karusic.api;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
-import org.kar.karusic.model.Album;
-import org.kar.karusic.model.Artist;
-import org.kar.archidata.model.Data;
-import org.kar.karusic.model.Gender;
-import org.kar.karusic.model.Track;
-import org.kar.archidata.SqlWrapper;
-import org.kar.archidata.util.DataTools;
-
-import org.kar.archidata.annotation.security.RolesAllowed;
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+import org.kar.archidata.annotation.security.RolesAllowed;
+import org.kar.archidata.model.Data;
+import org.kar.archidata.sqlWrapper.QuerryCondition;
+import org.kar.archidata.sqlWrapper.SqlWrapper;
+import org.kar.archidata.sqlWrapper.addOn.AddOnManyToMany;
+import org.kar.archidata.util.DataTools;
+import org.kar.karusic.model.Album;
+import org.kar.karusic.model.Artist;
+import org.kar.karusic.model.Gender;
+import org.kar.karusic.model.Track;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
@Path("/track")
-@Produces({MediaType.APPLICATION_JSON})
+@Produces({ MediaType.APPLICATION_JSON })
public class TrackResource {
-
- @GET
- @Path("{id}")
- @RolesAllowed("USER")
- public static Track getWithId(@PathParam("id") Long id) throws Exception {
- return SqlWrapper.get(Track.class, id);
- }
-
- @GET
- @RolesAllowed("USER")
- public List