Data Gest - AI

Inteligência que organiza, dados que impulsionam.





PROJETO: Gerenciador de Configurações para Sistema




Preview do projeto - Imagem 1 Preview do projeto - Imagem 1 Preview do projeto - Imagem 1


Desenvolvedor: Henrique

Data: 15/04/2026



Tags:
Java, JavaScript


DESCRIÇÃO:




Este sistema de configuração tem como objetivo facilitar o gerenciamento de parâmetros de uma aplicação Java, como host, porta, usuário, senha e banco de dados, sem a necessidade de editar diretamente o código ou depender de arquivos externos complexos. Ele funciona carregando uma string interna da própria classe (ConfigSource), onde as configurações são definidas no formato chave: valor. Essas informações são convertidas em um mapa interno (Map), permitindo acesso rápido e organizado.


🔧 Funcionalidades principais:

- Leitura de configurações por chave (get("host"))
- Atualização de valores em tempo de execução (set("port", "8080"))
- Persistência em arquivo JSON real
- Carregamento de configurações a partir de JSON
- Suporte a ambientes diferentes (DEV e PROD)
- Estrutura simples e independente de frameworks externos complexos


🚀 Como utilizar:

Defina as configurações dentro da classe ConfigSource (DEV ou PROD).

Instancie o ConfigManager, informando o ambiente desejado:
ConfigManager config = new ConfigManager("dev");

Acesse valores com:
config.get("host");

Altere valores em tempo de execução:
config.set("port", "8080");

Salve as configurações em um arquivo JSON:
config.saveJson("config.json");

Recarregue o arquivo quando necessário:
config.loadJson("config.json");


FERRAMENTAS:




☕ Java


📦 Gson (Google)
Biblioteca responsável pela serialização e desserialização de JSON. Ela converte automaticamente o Map em arquivo JSON e vice-versa, facilitando o armazenamento e leitura de configurações.

📁 FileWriter / FileReader (Java IO)
Classes nativas do Java usadas para leitura e escrita de arquivos no sistema operacional, permitindo salvar e carregar o arquivo config.json.

🧠 Estrutura Map (HashMap)
Utilizada para armazenar as configurações em memória, permitindo acesso rápido por chave e modificação dinâmica dos valores.


CÓDIGO FONTE:


Nível de desenvolvimento: 100%




Classe: Main

        // Classe de teste
                            
        public class Main {
            public static void main(String[] args) {

                // DEV ou PROD
                ConfigManager config = new ConfigManager("dev");

                // GET por chave
                System.out.println(config.get("host"));

                // SET valor
                config.set("port", "8080");

                // salvar JSON
                config.saveJson("config.json");

                // carregar JSON depois
                config.loadJson("config.json");

                config.printAll();

            }

        }

                        



Classe: ConfigManager

        // Classe principal
                            
        import com.google.gson.Gson;
        import com.google.gson.GsonBuilder;

        import java.io.*;
        import java.util.HashMap;
        import java.util.Map;

        public class ConfigManager {

            private Map config = new HashMap<>();
            private Gson gson = new GsonBuilder().setPrettyPrinting().create();

            public ConfigManager(String env) {
                loadFromSource(env);
        
            }

            // Carrega config da "string da classe"
            private void loadFromSource(String env) {

                String source = env.equalsIgnoreCase("prod")
                        ? ConfigSource.PROD
                        : ConfigSource.DEV;

                String[] lines = source.split("\n");

                for (String line : lines) {
                    String[] parts = line.split(": ");

                    if (parts.length == 2) {
                        config.put(parts[0], parts[1]);
                
                    }
            
                }
        
            }

            // =========================
            // GET por chave
            // =========================
            public String get(String key) {
                return config.get(key);
        
            }

            // =========================
            // SET valor
            // =========================
            public void set(String key, String value) {
                config.put(key, value);
        
            }

            // =========================
            // Salvar JSON
            // =========================
            public void saveJson(String path) {
                try (FileWriter writer = new FileWriter(path)) {
                    gson.toJson(config, writer);
            
                } catch (IOException e) {
                    e.printStackTrace();
            
                }
        
            }

            // =========================
            // Carregar JSON
            // =========================
            public void loadJson(String path) {
                try (FileReader reader = new FileReader(path)) {
                    Map map = gson.fromJson(reader, Map.class);

                    config.clear();
            
                    for (Map.Entry entry : map.entrySet()) {
                        config.put(entry.getKey().toString(),entry.getValue().toString());
                
                    }

                } catch (IOException e) {
                    e.printStackTrace();
            
                }
        
            }

            // debug
            public void printAll() {
                System.out.println(config);
        
            }
    
        }


                        



Classe: ConfigSource

        // Permite configurações personalizadas para mais de um usuário

        public class ConfigSource {

            public static final String DEV =
                    "env: dev\n" +
                    "host: localhost\n" +
                    "port: 3306\n" +
                    "user: root\n" +
                    "password: 1234\n" +
                    "database: sistema_dev";

            public static final String PROD =
                    "env: prod\n" +
                    "host: 192.168.0.10\n" +
                    "port: 3306\n" +
                    "user: admin\n" +
                    "password: secret\n" +
                    "database: sistema_prod";

        }