MediaManager-components/COMPONENTS.md

3.4 KiB

Componentes Reutilizáveis - Detalhes

1. Database Connection Pool

📍 Localização

src/main/java/com/mediamanager/database/DatabaseManager.java

🎯 Objetivo

Gerenciar pool de conexões PostgreSQL/Supabase com:

  • Padrão Singleton para instância única
  • Validação de conexão
  • Graceful shutdown
  • Thread-safe

💻 Exemplo de Uso

// Obter instância única
DatabaseManager db = DatabaseManager.getInstance();

// Obter conexão
Connection conn = db.getConnection();

// Usar conexão
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM media");
ResultSet rs = stmt.executeQuery();

// Fechar ao terminar
db.close();

📦 Dependências Maven

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.4</version>
</dependency>

🔄 Refatorações Aplicadas

  • Padrão Singleton para evitar múltiplas instâncias
  • Adição de graceful shutdown com hooks
  • Validação de conexão antes de retornar

♻️ Reutilizável em

Qualquer projeto Java que precise conectar com PostgreSQL/Supabase


2. Unix Socket IPC Server

📍 Localização

src/main/java/com/mediamanager/ipc/IPCServer.java

🎯 Objetivo

Servidor IPC usando Unix Domain Sockets com:

  • Thread pool para múltiplos clientes
  • Graceful shutdown
  • Error handling robusto

💻 Exemplo de Uso

// Criar servidor
IPCServer server = new IPCServer("/tmp/myapp.sock");

// Definir handler de mensagens
server.setMessageHandler((client, message) -> {
    // Processar mensagem
    client.sendResponse("OK");
});

// Iniciar servidor
server.start();

// Shutdown limpo
server.shutdown();

📦 Dependências Maven

<!-- Java 17+ com suporte a Unix Sockets -->
<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

🔄 Refatorações Aplicadas

  • Implementação de thread pool (ExecutorService)
  • Graceful shutdown com timeout
  • Separação de concerns (server vs handler)

♻️ Reutilizável em

Aplicações desktop que precisam comunicação IPC local eficiente


3. Graceful Shutdown Manager

📍 Localização

src/main/java/com/mediamanager/shutdown/ (ou integrado nos componentes)

🎯 Objetivo

Garantir cleanup ordenado de recursos ao encerrar aplicação:

  • Database connections
  • Thread pools
  • File handles
  • Network sockets

💻 Exemplo de Uso

// Registrar shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
    System.out.println("Shutting down gracefully...");
    
    // Fechar recursos na ordem correta
    ipcServer.shutdown();
    databaseManager.close();
    
    System.out.println("Shutdown complete");
}));

🔄 Refatorações Aplicadas

  • Centralização de shutdown logic
  • Ordenação de cleanup
  • Timeout handling

♻️ Reutilizável em

Qualquer aplicação Java que precise gerenciar shutdown de múltiplos recursos


Como Adaptar para Outro Projeto

Passo 1: Copiar Código

Navegue até o arquivo no repositório mediamanager-core e copie.

Passo 2: Ajustar Package

// De:
package com.mediamanager.database;

// Para:
package com.seuprojeto.database;

Passo 3: Configurar

Ajuste variáveis de ambiente, paths, etc. conforme seu projeto.

Passo 4: Testar

Execute testes unitários para garantir funcionamento.