docs: Add components documentation

This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2025-11-16 18:59:36 -03:00
parent f7801abf6c
commit 39559df713
2 changed files with 196 additions and 0 deletions

152
COMPONENTS.md Normal file
View File

@ -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
<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.

44
README.md Normal file
View File

@ -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)