docs: Add components documentation
This commit is contained in:
parent
f7801abf6c
commit
39559df713
|
|
@ -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.
|
||||||
|
|
@ -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)
|
||||||
Loading…
Reference in New Issue