MediaManager-components/COMPONENTS.md

153 lines
3.4 KiB
Markdown

# 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
```java
// 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
```xml
<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
```java
// 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
```xml
<!-- 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
```java
// 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
```java
// 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.