Compare commits

..
Author SHA1 Message Date
Gustavo Henrique Miranda 1dd2542656 Merge pull request #19 from gmbrax/fix/Fix-artist-proto-mismatch
Feature/Implement-BitRate-Management
2025-12-05 21:55:31 -03:00
Gustavo Henrique Santos Souza de MirandaandClaude Sonnet 4.5 c787eba20e Fix field name casing in UpdateArtistResponse proto message
Change field name from 'Artist' to 'artist' to follow protobuf naming conventions, which require lowercase field names with underscores for word separation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-05 21:48:46 -03:00
Gustavo Henrique Santos Souza de Miranda 2294a57ffd Implement bit-rate management feature
Add complete CRUD functionality for bit-rate management following the same pattern as bit-depth:
  - Create BitRate entity model with JPA annotations
  - Implement BitRateRepository with full CRUD operations
  - Add BitRateService with validation and business logic
  - Create BitRateMapper for protobuf/entity conversion
  - Implement action handlers: Create, GetAll, GetById, Update, Delete
  - Define bitrate.proto protobuf message definitions
  - Register BitRateService in DelegateActionManager

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

  Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 20:43:04 -03:00
Gustavo Henrique Miranda 8c8b8ec765 Merge pull request #17 from gmbrax/fix/Fix-Repeated-return-on-CreateBitDepthHandler
Remove duplicate `newBuilder` call in `CreateBitDepthHandler`
2025-12-05 18:12:32 -03:00
Gustavo Henrique Santos Souza de Miranda 92b4b21e60 Remove duplicate TransportProtocol.Response.newBuilder() call in CreateBitDepthHandler. 2025-12-05 17:02:02 -03:00
Gustavo Henrique Miranda 026a3aefa4 Merge pull request #15 from gmbrax/feature/implement-bitdepth-management
Implement BitDepth Management with CRUD Operations
2025-12-05 04:55:14 -03:00
Gustavo Henrique Mirandaandcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> 93c458d856 Update src/main/java/com/mediamanager/service/delegate/handler/bitdepth/UpdateBitDepthHandler.java
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-05 04:54:40 -03:00
Gustavo Henrique Mirandaandcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> cd4b35f3c9 Update src/main/java/com/mediamanager/service/delegate/handler/bitdepth/CreateBitDepthHandler.java
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-05 04:54:29 -03:00
Gustavo Henrique Santos Souza de Miranda 2d77358d50 Implement BitDepth Management with CRUD Operations
- Add `BitDepth` entity with JPA annotations and database mapping.
- Create repository, service, and delegate handlers for BitDepth CRUD operations: `bitdepth.create`, `bitdepth.getAll`, `bitdepth.getById`, `bitdepth.update`, `bitdepth.delete`.
- Introduce Protobuf definitions for BitDepth messages.
- Register BitDepth service and handlers in `DelegateActionManager`.
- Create `BitDepthMapper` to map between Protobuf and entity models.
- Enhance error handling and logging for BitDepth operations.
2025-12-03 03:15:39 -03:00
Gustavo Henrique Miranda 9aadb7283c Merge pull request #14 from gmbrax/feature/Implement-composer-management
Implement Composer Management with CRUD Operations
2025-12-01 00:46:57 -03:00
Gustavo Henrique Miranda 371a2dd85c Merge branch 'develop' into feature/Implement-composer-management 2025-12-01 00:46:31 -03:00
Gustavo Henrique Miranda 4ac7ca4557 Merge pull request #13 from gmbrax/feature/Implement-artist-management
Implement Artist Management with CRUD Operations
2025-12-01 00:44:19 -03:00
Gustavo Henrique Santos Souza de Miranda db4217bec4 Implement Composer Management with CRUD Operations
- Add `Composer` entity with JPA annotations and database mapping.
- Create repository, service, and delegate handlers for Composer CRUD operations: `create_composer`, `get_composers`, `get_composer_by_id`, `update_composer`, `delete_composer`.
- Introduce Protobuf definitions for Composer messages.
- Register Composer service and handlers in `DelegateActionManager`.
- Add `ComposerMapper` to map between Protobuf and entity models.
- Enhance error handling and logging for Composer operations.
2025-12-01 00:16:57 -03:00
32 changed files with 1713 additions and 2 deletions
@@ -0,0 +1,39 @@
package com.mediamanager.mapper;
import com.mediamanager.model.BitDepth;
import com.mediamanager.protocol.messages.BitDepthMessages;
public class BitDepthMapper {
public static BitDepthMessages.BitDepth toProtobuf(BitDepth entity) {
if (entity == null){
return null;
}
String value = entity.getValue();
if (value == null) {
throw new IllegalArgumentException("Bit depth value cannot be null");
}
BitDepthMessages.BitDepth.Builder builder = BitDepthMessages.BitDepth.newBuilder()
.setValue(value);
Integer id = entity.getId();
if (id != null && id > 0) {
builder.setId(id);
}
return builder.build();
}
public static BitDepth toEntity(BitDepthMessages.BitDepth protobuf) {
if (protobuf == null) {
return null;
}
BitDepth entity = new BitDepth();
if (protobuf.getId() > 0) {
entity.setId(protobuf.getId());
}
entity.setValue(protobuf.getValue());
return entity;
}
}
@@ -0,0 +1,39 @@
package com.mediamanager.mapper;
import com.mediamanager.model.BitRate;
import com.mediamanager.protocol.messages.BitRateMessages;
public class BitRateMapper {
public static BitRateMessages.BitRate toProtobuf(BitRate entity) {
if (entity == null) {
return null;
}
String value = entity.getValue();
if (value == null) {
throw new IllegalArgumentException("Bit rate value cannot be null");
}
BitRateMessages.BitRate.Builder builder = BitRateMessages.BitRate.newBuilder()
.setValue(value);
Integer id = entity.getId();
if (id != null && id > 0) {
builder.setId(id);
}
return builder.build();
}
public static BitRate toEntity(BitRateMessages.BitRate protobuf) {
if (protobuf == null) {
return null;
}
BitRate entity = new BitRate();
if (protobuf.getId() > 0) {
entity.setId(protobuf.getId());
}
entity.setValue(protobuf.getValue());
return entity;
}
}
@@ -0,0 +1,38 @@
package com.mediamanager.mapper;
import com.mediamanager.model.Composer;
import com.mediamanager.protocol.messages.ComposerMessages;
public class ComposerMapper {
public static ComposerMessages.Composer toProtobuf(Composer entity) {
if (entity == null) {
return null;
}
ComposerMessages.Composer.Builder builder = ComposerMessages.Composer.newBuilder()
.setName(entity.getName());
Integer id = entity.getId();
if (id != null && id > 0) {
builder.setId(id);
}
return builder.build();
}
public static Composer toEntity(ComposerMessages.Composer protobuf) {
if (protobuf == null) {
return null;
}
Composer entity = new Composer();
if (protobuf.getId() > 0) {
entity.setId(protobuf.getId());
}
entity.setName(protobuf.getName());
return entity;
}
}
@@ -0,0 +1,32 @@
package com.mediamanager.model;
import jakarta.persistence.*;
@Entity
@Table(name = "bit_depth")
public class BitDepth {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false)
private String value;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -0,0 +1,31 @@
package com.mediamanager.model;
import jakarta.persistence.*;
@Entity
@Table(name = "bit_rate")
public class BitRate {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false)
private String value;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -0,0 +1,31 @@
package com.mediamanager.model;
import jakarta.persistence.*;
@Entity
@Table(name = "composer")
public class Composer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false)
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@@ -0,0 +1,100 @@
package com.mediamanager.repository;
import com.mediamanager.model.BitDepth;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class BitDepthRepository {
private static final Logger logger = LogManager.getLogger(BitDepthRepository.class);
private final EntityManagerFactory entityManagerFactory;
public BitDepthRepository(EntityManagerFactory entityManagerFactory) {
this.entityManagerFactory = entityManagerFactory;
}
public BitDepth save(BitDepth bitDepth) {
logger.debug("Saving BitDepth: {}", bitDepth.getValue());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try {
em.persist(bitDepth);
em.getTransaction().commit();
logger.debug("BitDepth saved with ID: {}", bitDepth.getId());
return bitDepth;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error saving BitDepth", e);
throw e;
} finally {
if (em.isOpen()) em.close();
}
}
public List<BitDepth> findAll(){
logger.debug("Finding all BitDepths");
EntityManager em = entityManagerFactory.createEntityManager();
try{
return em.createQuery("SELECT b FROM BitDepth b ORDER BY b.value", BitDepth.class).getResultList();
}finally {
if (em.isOpen()) em.close();
}
}
public Optional<BitDepth> findById(Integer id){
logger.debug("Finding BitDepth by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
try{
BitDepth bitDepth = em.find(BitDepth.class, id);
return Optional.ofNullable(bitDepth);
}finally {
if (em.isOpen()) em.close();
}
}
public BitDepth update(BitDepth bitDepth){
logger.debug("Updating BitDepth ID: {}", bitDepth.getId());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
BitDepth updated = em.merge(bitDepth);
em.getTransaction().commit();
logger.debug("BitDepth updated successfully");
return updated;
}catch (Exception e){
em.getTransaction().rollback();
logger.error("Error updating BitDepth", e);
throw e;
}finally {
if (em.isOpen()) em.close();
}
}
public boolean deleteById(Integer id){
logger.debug("Deleting BitDepth by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
BitDepth bitDepth = em.find(BitDepth.class, id);
if (bitDepth == null) {
em.getTransaction().rollback();
return false;
}
em.remove(bitDepth);
em.getTransaction().commit();
logger.debug("BitDepth deleted successfully");
return true;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error deleting BitDepth", e);
throw e;
}finally {
if (em.isOpen()) em.close();
}
}
}
@@ -0,0 +1,101 @@
package com.mediamanager.repository;
import com.mediamanager.model.BitRate;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class BitRateRepository {
private static final Logger logger = LogManager.getLogger(BitRateRepository.class);
private final EntityManagerFactory entityManagerFactory;
public BitRateRepository(EntityManagerFactory entityManagerFactory) {
this.entityManagerFactory = entityManagerFactory;
}
public BitRate save(BitRate bitRate) {
logger.debug("Saving BitRate: {}", bitRate.getValue());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try {
em.persist(bitRate);
em.getTransaction().commit();
logger.debug("BitRate saved with ID: {}", bitRate.getId());
return bitRate;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error saving BitRate", e);
throw e;
} finally {
if (em.isOpen()) em.close();
}
}
public List<BitRate> findAll(){
logger.debug("Finding all BitRates");
EntityManager em = entityManagerFactory.createEntityManager();
try{
return em.createQuery("SELECT b FROM BitRate b ORDER BY b.value", BitRate.class).getResultList();
}finally {
if (em.isOpen()) em.close();
}
}
public Optional<BitRate> findById(Integer id){
logger.debug("Finding BitRate by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
try{
BitRate bitRate = em.find(BitRate.class, id);
return Optional.ofNullable(bitRate);
} finally {
if (em.isOpen()) em.close();
}
}
public BitRate update(BitRate bitRate){
logger.debug("Updating BitRate ID: {}", bitRate.getId());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
BitRate updated = em.merge(bitRate);
em.getTransaction().commit();
logger.debug("BitRate updated with ID: {}", bitRate.getId());
return updated;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error updating BitRate", e);
throw e;
} finally {
if (em.isOpen()) em.close();
}
}
public boolean deleteById(Integer id){
logger.debug("Deleting BitRate by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
BitRate bitRate = em.find(BitRate.class, id);
if (bitRate == null) {
em.getTransaction().rollback();
return false;
}
em.remove(bitRate);
em.getTransaction().commit();
logger.debug("BitRate deleted successfully");
return true;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error deleting BitRate", e);
throw e;
} finally {
if (em.isOpen()) em.close();
}
}
}
@@ -0,0 +1,102 @@
package com.mediamanager.repository;
import com.mediamanager.model.Composer;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class ComposerRepository {
private static final Logger logger = LogManager.getLogger(ComposerRepository.class);
private final EntityManagerFactory entityManagerFactory;
public ComposerRepository(EntityManagerFactory entityManagerFactory) {
this.entityManagerFactory = entityManagerFactory;
}
public Composer save(Composer composer) {
logger.debug("Saving composer: {}", composer.getName());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
//ToDo: Add Id Validation
//ToDo: Add to all Repositories
em.persist(composer);
em.getTransaction().commit();
logger.debug("Composer saved with IS: {}", composer.getId());
return composer;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error saving composer", e);
throw e;
}finally {
if (em.isOpen()) em.close();
}
}
public List<Composer> findAll(){
logger.debug("Finding all composers");
EntityManager em = entityManagerFactory.createEntityManager();
try{
return em.createQuery("SELECT c FROM Composer c ORDER BY c.name", Composer.class).getResultList();
} finally {
if (em.isOpen()) em.close();
}
}
public Optional<Composer> findById(Integer id){
logger.debug("Finding composer by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
try{
Composer composer = em.find(Composer.class, id);
return Optional.ofNullable(composer);
} finally {
if (em.isOpen()) em.close();
}
}
public Composer update(Composer composer){
logger.debug("Updating composer ID: {}", composer.getId());
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
Composer updated = em.merge(composer);
em.getTransaction().commit();
logger.debug("Composer updated successfully");
return updated;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error updating composer", e);
throw e;
} finally {
if (em.isOpen()) em.close();
}
}
public boolean deleteById(Integer id){
logger.debug("Deleting composer by ID: {}", id);
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
try{
Composer composer = em.find(Composer.class, id);
if (composer == null) {
em.getTransaction().rollback();
return false;
}
em.remove(composer);
em.getTransaction().commit();
logger.debug("Composer deleted successfully");
return true;
} catch (Exception e) {
em.getTransaction().rollback();
logger.error("Error deleting composer", e);
throw e;
}finally {
if (em.isOpen()) em.close();
}
}
}
@@ -0,0 +1,61 @@
package com.mediamanager.service.bitdepth;
import com.mediamanager.model.BitDepth;
import com.mediamanager.repository.BitDepthRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class BitDepthService {
private static final Logger logger = LogManager.getLogger(BitDepthService.class);
private final BitDepthRepository bitDepthRepository;
public BitDepthService(BitDepthRepository bitDepthRepository) {
this.bitDepthRepository = bitDepthRepository;
}
public BitDepth createBitDepth(String value){
logger.info("Creating bit-depth: {}", value);
if (value == null || value.trim().isEmpty()) {
throw new IllegalArgumentException("Bit-depth value cannot be empty");
}
BitDepth bitDepth = new BitDepth();
bitDepth.setValue(value.trim());
return bitDepthRepository.save(bitDepth);
}
public List<BitDepth> getAllBitDepths(){
logger.info("Getting all bit-depths");
return bitDepthRepository.findAll();
}
public Optional<BitDepth> getBitDepthById(Integer id){
logger.info("Getting bit-depth by ID: {}", id);
return bitDepthRepository.findById(id);
}
public Optional<BitDepth> updateBitDepth(Integer id, String value){
logger.info("Updating bit-depth ID {}: {}", id, value);
if (value == null || value.trim().isEmpty()) {
throw new IllegalArgumentException("Bit-depth value cannot be empty");
}
Optional<BitDepth> existingBitDepth = bitDepthRepository.findById(id);
if(existingBitDepth.isEmpty()){
logger.warn("Bit-depth not found with ID: {}", id);
return Optional.empty();
}
BitDepth bitDepth = existingBitDepth.get();
bitDepth.setValue(value.trim());
BitDepth updatedBitDepth = bitDepthRepository.update(bitDepth);
return Optional.of(updatedBitDepth);
}
public boolean deleteBitDepth(Integer id){
logger.info("Deleting bit-depth ID: {}", id);
return bitDepthRepository.deleteById(id);
}
}
@@ -0,0 +1,65 @@
package com.mediamanager.service.bitrate;
import com.mediamanager.model.BitRate;
import com.mediamanager.repository.BitRateRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class BitRateService {
private static final Logger logger = LogManager.getLogger(BitRateService.class);
private final BitRateRepository bitRateRepository;
public BitRateService(BitRateRepository bitRateRepository) {
this.bitRateRepository = bitRateRepository;
}
public BitRate createBitRate(String value){
logger.info("Creating bit-rate: {}",value);
if (value == null || value.trim().isEmpty()) {
throw new IllegalArgumentException("Bit-rate value cannot be empty");
}
BitRate bitRate = new BitRate();
bitRate.setValue(value.trim());
return bitRateRepository.save(bitRate);
}
public List<BitRate> getAllBitRates(){
logger.info("Getting all bit-rates");
return bitRateRepository.findAll();
}
public Optional<BitRate> getBitRateById(Integer id){
logger.info("Getting bit-rate by ID: {}", id);
return bitRateRepository.findById(id);
}
public Optional<BitRate> updateBitRate(Integer id, String value){
logger.info("Updating bit-rate ID {}: {}", id, value);
if (value == null || value.trim().isEmpty()) {
throw new IllegalArgumentException("Bit-rate value cannot be empty");
}
Optional<BitRate> existingBitRate = bitRateRepository.findById(id);
if(existingBitRate.isEmpty()) {
logger.warn("Bit-rate not found with ID: {}", id);
return Optional.empty();
}
BitRate bitRate = existingBitRate.get();
bitRate.setValue(value.trim());
BitRate updatedBitRate = bitRateRepository.update(bitRate);
return Optional.of(updatedBitRate);
}
public boolean deleteBitRate(Integer id){
logger.info("Deleting bit-rate ID: {}", id);
return bitRateRepository.deleteById(id);
}
}
@@ -0,0 +1,70 @@
package com.mediamanager.service.composer;
import com.mediamanager.model.Composer;
import com.mediamanager.repository.ComposerRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Optional;
public class ComposerService {
private static final Logger logger = LogManager.getLogger(ComposerService.class);
private final ComposerRepository composerRepository;
public ComposerService(ComposerRepository composerRepository) {
this.composerRepository = composerRepository;
}
public Composer createComposer(String name) {
logger.info("Creating composer: {}", name);
if(name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("Composer name cannot be empty");
}
Composer composer = new Composer();
composer.setName(name.trim());
return composerRepository.save(composer);
}
public List<Composer> getAllComposers() {
logger.info("Getting all composers");
return composerRepository.findAll();
}
public Optional<Composer> getComposerById(Integer id) {
logger.info("Getting composer by ID: {}", id);
return composerRepository.findById(id);
}
public Optional<Composer> updateComposer(Integer id, String name) {
logger.info("Updating composer ID {}: {}", id, name);
if(name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("Composer name cannot be empty");
}
Optional<Composer> existingComposer = composerRepository.findById(id);
if(existingComposer.isEmpty()) {
logger.warn("Composer not found with ID: {}", id);
return Optional.empty();
}
Composer composer = existingComposer.get();
composer.setName(name.trim());
Composer updated = composerRepository.update(composer);
return Optional.of(updated);
}
public boolean deleteComposer(Integer id) {
logger.info("Deleting composer ID: {}", id);
return composerRepository.deleteById(id);
}
}
@@ -2,7 +2,10 @@ package com.mediamanager.service.delegate;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import com.mediamanager.protocol.TransportProtocol; import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.repository.ArtistRepository; import com.mediamanager.repository.*;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.repository.GenreRepository; import com.mediamanager.repository.GenreRepository;
import com.mediamanager.service.artist.ArtistService; import com.mediamanager.service.artist.ArtistService;
import com.mediamanager.service.delegate.annotation.Action; import com.mediamanager.service.delegate.annotation.Action;
@@ -55,6 +58,18 @@ public class DelegateActionManager {
serviceLocator.register(ArtistService.class, artistService); serviceLocator.register(ArtistService.class, artistService);
ComposerRepository composerRepository = new ComposerRepository(entityManagerFactory);
ComposerService composerService = new ComposerService(composerRepository);
serviceLocator.register(ComposerService.class, composerService);
BitDepthRepository bitDepthRepository = new BitDepthRepository(entityManagerFactory);
BitDepthService bitDepthService = new BitDepthService(bitDepthRepository);
serviceLocator.register(BitDepthService.class, bitDepthService);
BitRateRepository bitRateRepository = new BitRateRepository(entityManagerFactory);
BitRateService bitRateService = new BitRateService(bitRateRepository);
serviceLocator.register(BitRateService.class, bitRateService);
serviceLocator.logRegisteredServices(); serviceLocator.logRegisteredServices();
logger.info("Services initialized successfully"); logger.info("Services initialized successfully");
@@ -0,0 +1,51 @@
package com.mediamanager.service.delegate.handler.bitdepth;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitDepthMapper;
import com.mediamanager.model.BitDepth;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ArtistMessages;
import com.mediamanager.protocol.messages.BitDepthMessages;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action("bitdepth.create")
public class CreateBitDepthHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(CreateBitDepthHandler.class);
private final BitDepthService bitDepthService;
public CreateBitDepthHandler(BitDepthService bitDepthService) {
this.bitDepthService = bitDepthService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
BitDepthMessages.CreateBitDepthRequest createRequest =
BitDepthMessages.CreateBitDepthRequest.parseFrom(requestPayload);
BitDepth bitDepth = bitDepthService.createBitDepth(createRequest.getValue());
BitDepthMessages.BitDepth BitDepthProto = BitDepthMapper.toProtobuf(bitDepth);
BitDepthMessages.CreateBitDepthResponse createBitDepthResponse = BitDepthMessages.CreateBitDepthResponse.newBuilder()
.setBitdepth(BitDepthProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(createBitDepthResponse.toByteString());
} catch (IllegalArgumentException e) {
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e) {
logger.error("Error creating bit-depth", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,62 @@
package com.mediamanager.service.delegate.handler.bitdepth;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitDepthMessages;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action("bitdepth.delete")
public class DeleteBitDepthHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(DeleteBitDepthHandler.class);
private final BitDepthService bitDepthService;
public DeleteBitDepthHandler(BitDepthService bitDepthService) {
this.bitDepthService = bitDepthService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try {
BitDepthMessages.DeleteBitDepthRequest deleteRequest =
BitDepthMessages.DeleteBitDepthRequest.parseFrom(requestPayload);
int id = deleteRequest.getId();
boolean success = bitDepthService.deleteBitDepth(id);
BitDepthMessages.DeleteBitDepthResponse deleteResponse;
if (success) {
deleteResponse = BitDepthMessages.DeleteBitDepthResponse.newBuilder()
.setSuccess(true)
.setMessage("Bit-Depth deleted successfully")
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(deleteResponse.toByteString());
} else {
deleteResponse = BitDepthMessages.DeleteBitDepthResponse.newBuilder()
.setSuccess(false)
.setMessage("Bit-Depth not found")
.build();
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(deleteResponse.toByteString());
}
} catch (Exception e) {
logger.error("Error deleting bit-depth", e);
BitDepthMessages.DeleteBitDepthResponse deleteResponse =
BitDepthMessages.DeleteBitDepthResponse.newBuilder()
.setSuccess(false)
.setMessage("Error: " + e.getMessage())
.build();
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(deleteResponse.toByteString());
}
}
}
@@ -0,0 +1,56 @@
package com.mediamanager.service.delegate.handler.bitdepth;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitDepthMapper;
import com.mediamanager.model.BitDepth;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitDepthMessages;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action(value = "bitdepth.getById")
public class GetBitDepthByIdHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetBitDepthByIdHandler.class);
private final BitDepthService bitDepthServicee;
public GetBitDepthByIdHandler(BitDepthService bitDepthServicee) {
this.bitDepthServicee = bitDepthServicee;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException{
try{
BitDepthMessages.GetBitDepthByIdRequest getByIdRequest =
BitDepthMessages.GetBitDepthByIdRequest.parseFrom(requestPayload);
int id = getByIdRequest.getId();
Optional<BitDepth> bitDepthOpt = bitDepthServicee.getBitDepthById(id);
if (bitDepthOpt.isEmpty()){
logger.warn("BitDepth not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("BitDepth not found"));
}
BitDepthMessages.BitDepth bitDepthProto = BitDepthMapper.toProtobuf(bitDepthOpt.get());
BitDepthMessages.GetBitDepthByIdResponse getByIdResponse = BitDepthMessages.GetBitDepthByIdResponse.newBuilder()
.setBitdepth(bitDepthProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(getByIdResponse.toByteString());
} catch (Exception e) {
logger.error("Error getting bit-depth by ID", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: "+ e.getMessage()));
}
}
}
@@ -0,0 +1,48 @@
package com.mediamanager.service.delegate.handler.bitdepth;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitDepthMapper;
import com.mediamanager.model.BitDepth;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitDepthMessages;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
@Action("bitdepth.getAll")
public class GetBitDepthHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetBitDepthHandler.class);
private final BitDepthService bitDepthService;
public GetBitDepthHandler(BitDepthService bitDepthService){this.bitDepthService = bitDepthService;}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
List<BitDepth> bitDepths = bitDepthService.getAllBitDepths();
BitDepthMessages.GetBitDepthsResponse.Builder responseBuilder = BitDepthMessages.GetBitDepthsResponse.newBuilder();
for (BitDepth bitDepth : bitDepths) {
BitDepthMessages.BitDepth bitDepthProto = BitDepthMapper.toProtobuf(bitDepth);
responseBuilder.addBitdepths(bitDepthProto);
}
BitDepthMessages.GetBitDepthsResponse getBitDepthsResponse = responseBuilder.build();
return TransportProtocol.Response.newBuilder()
.setPayload(getBitDepthsResponse.toByteString());
}catch (Exception e){
logger.error("Error getting bit-depths", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,65 @@
package com.mediamanager.service.delegate.handler.bitdepth;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitDepthMapper;
import com.mediamanager.model.BitDepth;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitDepthMessages;
import com.mediamanager.service.bitdepth.BitDepthService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action("bitdepth.update")
public class UpdateBitDepthHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(UpdateBitDepthHandler.class);
private final BitDepthService bitDepthService;
public UpdateBitDepthHandler(BitDepthService bitDepthService) {
this.bitDepthService = bitDepthService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
BitDepthMessages.UpdateBitDepthRequest updateRequest =
BitDepthMessages.UpdateBitDepthRequest.parseFrom(requestPayload);
int id = updateRequest.getId();
String newValue = updateRequest.getValue();
Optional<BitDepth> bitDepthOpt = bitDepthService.updateBitDepth(id, newValue);
if(bitDepthOpt.isEmpty()){
logger.warn("BitDepth not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("BitDepth not found"));
}
BitDepthMessages.BitDepth bitDepthProto = BitDepthMapper.toProtobuf(bitDepthOpt.get());
BitDepthMessages.UpdateBitDepthResponse updateResponse = BitDepthMessages.UpdateBitDepthResponse.newBuilder()
.setBitdepth(bitDepthProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(updateResponse.toByteString());
} catch (IllegalArgumentException e){
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e) {
logger.error("Error updating bit-depth", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,50 @@
package com.mediamanager.service.delegate.handler.bitrate;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitRateMapper;
import com.mediamanager.model.BitRate;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitRateMessages;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action("bitrate.create")
public class CreateBitRateHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(CreateBitRateHandler.class);
private final BitRateService bitRateService;
public CreateBitRateHandler(BitRateService bitRateService) {
this.bitRateService = bitRateService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
BitRateMessages.CreateBitRateRequest createRequest =
BitRateMessages.CreateBitRateRequest.parseFrom(requestPayload);
BitRate bitRate = bitRateService.createBitRate(createRequest.getValue());
BitRateMessages.BitRate BitRateProto = BitRateMapper.toProtobuf(bitRate);
BitRateMessages.CreateBitRateResponse createBitRateResponse = BitRateMessages.CreateBitRateResponse.newBuilder()
.setBitrate(BitRateProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(createBitRateResponse.toByteString());
} catch (IllegalArgumentException e) {
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e) {
logger.error("Error creating bit-rate", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,62 @@
package com.mediamanager.service.delegate.handler.bitrate;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitRateMessages;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action("bitrate.delete")
public class DeleteBitRateHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(DeleteBitRateHandler.class);
private final BitRateService bitRateService;
public DeleteBitRateHandler(BitRateService bitRateService) {
this.bitRateService = bitRateService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try {
BitRateMessages.DeleteBitRateRequest deleteRequest =
BitRateMessages.DeleteBitRateRequest.parseFrom(requestPayload);
int id = deleteRequest.getId();
boolean success = bitRateService.deleteBitRate(id);
BitRateMessages.DeleteBitRateResponse deleteResponse;
if (success) {
deleteResponse = BitRateMessages.DeleteBitRateResponse.newBuilder()
.setSuccess(true)
.setMessage("Bit-Rate deleted successfully")
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(deleteResponse.toByteString());
} else {
deleteResponse = BitRateMessages.DeleteBitRateResponse.newBuilder()
.setSuccess(false)
.setMessage("Bit-Rate not found")
.build();
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(deleteResponse.toByteString());
}
} catch (Exception e) {
logger.error("Error deleting bit-rate", e);
BitRateMessages.DeleteBitRateResponse deleteResponse =
BitRateMessages.DeleteBitRateResponse.newBuilder()
.setSuccess(false)
.setMessage("Error: " + e.getMessage())
.build();
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(deleteResponse.toByteString());
}
}
}
@@ -0,0 +1,56 @@
package com.mediamanager.service.delegate.handler.bitrate;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitRateMapper;
import com.mediamanager.model.BitRate;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitRateMessages;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action(value = "bitrate.getById")
public class GetBitRateByIdHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetBitRateByIdHandler.class);
private final BitRateService bitRateService;
public GetBitRateByIdHandler(BitRateService bitRateService) {
this.bitRateService = bitRateService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException{
try{
BitRateMessages.GetBitRateByIdRequest getByIdRequest =
BitRateMessages.GetBitRateByIdRequest.parseFrom(requestPayload);
int id = getByIdRequest.getId();
Optional<BitRate> bitRateOpt = bitRateService.getBitRateById(id);
if (bitRateOpt.isEmpty()){
logger.warn("BitRate not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("BitRate not found"));
}
BitRateMessages.BitRate bitRateProto = BitRateMapper.toProtobuf(bitRateOpt.get());
BitRateMessages.GetBitRateByIdResponse getByIdResponse = BitRateMessages.GetBitRateByIdResponse.newBuilder()
.setBitrate(bitRateProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(getByIdResponse.toByteString());
} catch (Exception e) {
logger.error("Error getting bit-rate by ID", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: "+ e.getMessage()));
}
}
}
@@ -0,0 +1,48 @@
package com.mediamanager.service.delegate.handler.bitrate;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitRateMapper;
import com.mediamanager.model.BitRate;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitRateMessages;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
@Action("bitrate.getAll")
public class GetBitRateHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetBitRateHandler.class);
private final BitRateService bitRateService;
public GetBitRateHandler(BitRateService bitRateService){this.bitRateService = bitRateService;}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
List<BitRate> bitRates = bitRateService.getAllBitRates();
BitRateMessages.GetBitRatesResponse.Builder responseBuilder = BitRateMessages.GetBitRatesResponse.newBuilder();
for (BitRate bitRate : bitRates) {
BitRateMessages.BitRate bitRateProto = BitRateMapper.toProtobuf(bitRate);
responseBuilder.addBitrates(bitRateProto);
}
BitRateMessages.GetBitRatesResponse getBitRatesResponse = responseBuilder.build();
return TransportProtocol.Response.newBuilder()
.setPayload(getBitRatesResponse.toByteString());
}catch (Exception e){
logger.error("Error getting bit-rates", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,65 @@
package com.mediamanager.service.delegate.handler.bitrate;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.BitRateMapper;
import com.mediamanager.model.BitRate;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.BitRateMessages;
import com.mediamanager.service.bitrate.BitRateService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action("bitrate.update")
public class UpdateBitRateHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(UpdateBitRateHandler.class);
private final BitRateService bitRateService;
public UpdateBitRateHandler(BitRateService bitRateService) {
this.bitRateService = bitRateService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload) throws InvalidProtocolBufferException {
try{
BitRateMessages.UpdateBitRateRequest updateRequest =
BitRateMessages.UpdateBitRateRequest.parseFrom(requestPayload);
int id = updateRequest.getId();
String newValue = updateRequest.getValue();
Optional<BitRate> bitRateOpt = bitRateService.updateBitRate(id, newValue);
if(bitRateOpt.isEmpty()){
logger.warn("BitRate not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("BitRate not found"));
}
BitRateMessages.BitRate bitRateProto = BitRateMapper.toProtobuf(bitRateOpt.get());
BitRateMessages.UpdateBitRateResponse updateResponse = BitRateMessages.UpdateBitRateResponse.newBuilder()
.setBitrate(bitRateProto)
.build();
return TransportProtocol.Response.newBuilder()
.setPayload(updateResponse.toByteString());
} catch (IllegalArgumentException e){
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e) {
logger.error("Error updating bit-rate", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,51 @@
package com.mediamanager.service.delegate.handler.composer;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.ComposerMapper;
import com.mediamanager.model.Composer;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ComposerMessages;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action("composer.create")
public class CreateComposerHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(CreateComposerHandler.class);
private final ComposerService composerService;
public CreateComposerHandler(ComposerService composerService) {
this.composerService = composerService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try{
ComposerMessages.CreateComposerRequest CreateRequest = ComposerMessages.CreateComposerRequest
.parseFrom(requestPayload);
Composer composer = composerService.createComposer(CreateRequest.getName());
ComposerMessages.Composer composerProto = ComposerMapper.toProtobuf(composer);
ComposerMessages.CreateComposerResponse createResponse = ComposerMessages.CreateComposerResponse
.newBuilder().setComposer(composerProto).build();
return TransportProtocol.Response.newBuilder().setPayload(createResponse.toByteString());
} catch (IllegalArgumentException e){
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e){
logger.error("Error creating composer", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,53 @@
package com.mediamanager.service.delegate.handler.composer;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ComposerMessages;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Action( "composer.delete")
public class DeleteComposerHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(DeleteComposerHandler.class);
private final ComposerService composerService;
public DeleteComposerHandler(ComposerService composerService){
this.composerService = composerService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try {
ComposerMessages.DeleteComposerRequest deleteRequest =
ComposerMessages.DeleteComposerRequest.parseFrom(requestPayload);
int id = deleteRequest.getId();
boolean success = composerService.deleteComposer(id);
ComposerMessages.DeleteComposerResponse deleteResponse;
if(success){
deleteResponse = ComposerMessages.DeleteComposerResponse.newBuilder().setSuccess(true)
.setMessage("Composer deleted successfully").build();
return TransportProtocol.Response.newBuilder()
.setPayload(deleteResponse.toByteString());
}else {
deleteResponse = ComposerMessages.DeleteComposerResponse.newBuilder().setSuccess(false)
.setMessage("Composer not found").build();
return TransportProtocol.Response.newBuilder().setStatusCode(404)
.setPayload(deleteResponse.toByteString());
}
} catch (Exception e) {
logger.error("Error deleting composer", e);
ComposerMessages.DeleteComposerResponse deleteResponse = ComposerMessages.DeleteComposerResponse
.newBuilder().setSuccess(false).setMessage("Error: " + e.getMessage()).build();
return TransportProtocol.Response.newBuilder()
.setStatusCode(500).setPayload(deleteResponse.toByteString());
}
}
}
@@ -0,0 +1,57 @@
package com.mediamanager.service.delegate.handler.composer;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.ComposerMapper;
import com.mediamanager.model.Composer;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ComposerMessages;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action( "composer.getById")
public class GetComposerByIdHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetComposerByIdHandler.class);
private final ComposerService composerService;
public GetComposerByIdHandler(ComposerService composerService){
this.composerService = composerService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try{
ComposerMessages.GetComposerByIdRequest getByIdRequest = ComposerMessages.GetComposerByIdRequest
.parseFrom(requestPayload);
int id = getByIdRequest.getId();
Optional<Composer> composerOpt = composerService.getComposerById(id);
if (composerOpt.isEmpty()) {
logger.warn("Composer not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("Composer not found"));
}
ComposerMessages.Composer composerProto = ComposerMapper.toProtobuf(composerOpt.get());
ComposerMessages.GetComposerByIdResponse getByIdResponse = ComposerMessages.GetComposerByIdResponse
.newBuilder().setComposer(composerProto).build();
return TransportProtocol.Response.newBuilder().setPayload(getByIdResponse.toByteString());
} catch (Exception e) {
logger.error("Error getting composer by ID", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,50 @@
package com.mediamanager.service.delegate.handler.composer;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.ComposerMapper;
import com.mediamanager.model.Composer;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ComposerMessages;
import com.mediamanager.protocol.messages.GenreMessages;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.List;
@Action( "composer.getAll")
public class GetComposerHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(GetComposerHandler.class);
private final ComposerService composerService;
public GetComposerHandler(ComposerService composerService){
this.composerService = composerService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try{
List<Composer> composers = composerService.getAllComposers();
ComposerMessages.GetComposersResponse.Builder responseBuilder = ComposerMessages.GetComposersResponse.newBuilder();
for(Composer composer : composers){
ComposerMessages.Composer composerProto = ComposerMapper.toProtobuf(composer);
responseBuilder.addComposers(composerProto);
}
ComposerMessages.GetComposersResponse getGenresResponse = responseBuilder.build();
return TransportProtocol.Response.newBuilder().setPayload(getGenresResponse.toByteString());
} catch (Exception e) {
logger.error("Error getting composers", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
@@ -0,0 +1,56 @@
package com.mediamanager.service.delegate.handler.composer;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mediamanager.mapper.ComposerMapper;
import com.mediamanager.model.Composer;
import com.mediamanager.protocol.TransportProtocol;
import com.mediamanager.protocol.messages.ComposerMessages;
import com.mediamanager.service.composer.ComposerService;
import com.mediamanager.service.delegate.ActionHandler;
import com.mediamanager.service.delegate.annotation.Action;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Optional;
@Action("composer.update")
public class UpdateComposerHandler implements ActionHandler {
private static final Logger logger = LogManager.getLogger(UpdateComposerHandler.class);
private final ComposerService composerService;
public UpdateComposerHandler(ComposerService composerService){
this.composerService = composerService;
}
@Override
public TransportProtocol.Response.Builder handle(ByteString requestPayload)
throws InvalidProtocolBufferException {
try{
ComposerMessages.UpdateComposerRequest updateRequest = ComposerMessages.UpdateComposerRequest
.parseFrom(requestPayload);
int id = updateRequest.getId();
String newName = updateRequest.getName();
Optional<Composer> composerOpt = composerService.updateComposer(id, newName);
if (composerOpt.isEmpty()) {
logger.warn("Composer not found with ID: {}", id);
return TransportProtocol.Response.newBuilder()
.setStatusCode(404)
.setPayload(ByteString.copyFromUtf8("Composer not found"));
}
ComposerMessages.Composer composerProto = ComposerMapper.toProtobuf(composerOpt.get());
ComposerMessages.UpdateComposerResponse updateResponse = ComposerMessages.UpdateComposerResponse
.newBuilder().setComposer(composerProto).build();
return TransportProtocol.Response.newBuilder().setPayload(updateResponse.toByteString());
}catch (IllegalArgumentException e){
logger.error("Validation error", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(400)
.setPayload(ByteString.copyFromUtf8("Validation error: " + e.getMessage()));
} catch (Exception e) {
logger.error("Error updating composer", e);
return TransportProtocol.Response.newBuilder()
.setStatusCode(500)
.setPayload(ByteString.copyFromUtf8("Error: " + e.getMessage()));
}
}
}
+1 -1
View File
@@ -40,7 +40,7 @@ message UpdateArtistRequest {
} }
message UpdateArtistResponse { message UpdateArtistResponse {
Artist Artist = 1; Artist artist = 1;
} }
message DeleteArtistRequest { message DeleteArtistRequest {
+53
View File
@@ -0,0 +1,53 @@
syntax = "proto3";
option java_package = "com.mediamanager.protocol.messages";
option java_outer_classname = "BitDepthMessages";
package mediamanager.messages;
message BitDepth {
int32 id = 1;
string value = 2;
}
message CreateBitDepthRequest {
string value = 1;
}
message CreateBitDepthResponse {
BitDepth bitdepth = 1;
}
message GetBitDepthsRequest {
}
message GetBitDepthsResponse {
repeated BitDepth bitdepths = 1;
}
message GetBitDepthByIdRequest {
int32 id = 1;
}
message GetBitDepthByIdResponse {
BitDepth bitdepth = 1;
}
message UpdateBitDepthRequest {
int32 id = 1;
string value = 2; // Novo nome
}
message UpdateBitDepthResponse {
BitDepth bitdepth = 1;
}
message DeleteBitDepthRequest {
int32 id = 1;
}
message DeleteBitDepthResponse {
bool success = 1;
string message = 2;
}
+53
View File
@@ -0,0 +1,53 @@
syntax = "proto3";
option java_package = "com.mediamanager.protocol.messages";
option java_outer_classname = "BitRateMessages";
package mediamanager.messages;
message BitRate{
int32 id =1;
string value = 2;
}
message CreateBitRateRequest{
string value = 1;
}
message CreateBitRateResponse{
BitRate bitrate = 1;
}
message GetBitRatesRequest{
}
message GetBitRatesResponse{
repeated BitRate bitrates = 1;
}
message GetBitRateByIdRequest{
int32 id = 1;
}
message GetBitRateByIdResponse{
BitRate bitrate = 1;
}
message UpdateBitRateRequest{
int32 id = 1;
string value = 2;
}
message UpdateBitRateResponse{
BitRate bitrate = 1;
}
message DeleteBitRateRequest{
int32 id =1;
}
message DeleteBitRateResponse{
bool success = 1;
string message = 2;
}
+51
View File
@@ -0,0 +1,51 @@
syntax = "proto3";
option java_package = "com.mediamanager.protocol.messages";
option java_outer_classname = "ComposerMessages";
package mediamanager.messages;
message Composer {
int32 id =1;
string name =2;
}
message CreateComposerRequest{
string name =1;
}
message CreateComposerResponse{
Composer composer = 1;
}
message GetComposersRequest{}
message GetComposersResponse{
repeated Composer composers = 1;
}
message GetComposerByIdRequest{
int32 id =1;
}
message GetComposerByIdResponse{
Composer composer =1;
}
message UpdateComposerRequest{
int32 id = 1;
string name=2;
}
message UpdateComposerResponse{
Composer composer = 1;
}
message DeleteComposerRequest{
int32 id = 1;
}
message DeleteComposerResponse{
bool success = 1;
string message = 2;
}