docs: Add components documentation
This commit is contained in:
parent
f7801abf6c
commit
e9b2ae726a
|
|
@ -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