From 39559df713bd539e87782cca10cd5f372fd5e9d0 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Sun, 16 Nov 2025 18:59:36 -0300 Subject: [PATCH] docs: Add components documentation --- COMPONENTS.md | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 44 +++++++++++++++ 2 files changed, 196 insertions(+) create mode 100644 COMPONENTS.md create mode 100644 README.md diff --git a/COMPONENTS.md b/COMPONENTS.md new file mode 100644 index 0000000..9a79651 --- /dev/null +++ b/COMPONENTS.md @@ -0,0 +1,152 @@ +# 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 + + org.postgresql + postgresql + 42.7.4 + +``` + +### 🔄 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 + + + 17 + 17 + +``` + +### 🔄 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..75d3a01 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +<<<<<<< HEAD +# MediaManager-components + +======= +# MediaManager - Componentes Reutilizáveis + +Catálogo de componentes reutilizáveis desenvolvidos no MediaManager Core. + +## 📦 Repositório Principal + +O código-fonte está em: **mediamanager-core** +- Gitea: [seu-link-aqui] +- GitHub: [seu-link-aqui] + +## 🎯 Propósito deste Repositório + +Documentar componentes que podem ser reutilizados em outros projetos, +facilitando descoberta e adoção. + +## 📋 Componentes Disponíveis + +Ver [COMPONENTS.md](COMPONENTS.md) para lista completa. + +### Componentes: +1. **Database Connection Pool** - Gerenciamento de conexões PostgreSQL/Supabase +2. **Unix Socket IPC Server** - Comunicação inter-processos local +3. **Graceful Shutdown Manager** - Cleanup ordenado de recursos + +## 🔧 Como Reutilizar + +1. Consulte `COMPONENTS.md` para detalhes do componente +2. Acesse o código no repositório principal (links fornecidos) +3. Copie os arquivos necessários +4. Adapte package names e configurações ao seu projeto + +## 📚 Documentação + +Cada componente inclui: +- Objetivo e responsabilidades +- Localização do código-fonte +- Exemplo de uso +- Dependências necessárias +- Histórico de refatorações +>>>>>>> a19acd8 (docs: Add Components documentation)