Refactoring Main Class

Supaya hibernate.properties, server host, dan port tidak hard-coded. terdapat method setter dan getter yang perlu diimplementasi untuk setiap class product.

Seperti contoh pada RumahSehat.Java, tambahkan method seperti dibawah untuk mengambil value hibernate.properties dari environment variables:

public static void setDBProperties(String varname, String typeProp, Configuration configuration){
        try{
                String varNameValue = System.getenv(varname);
                String propertyName = String.format("hibernate.connection.%s",typeProp);
                configuration.setProperty(propertyName, varNameValue);
        }catch (Exception e){
                String error_message = String.format("%s: try to check %s in your local environment variable!", e, varname);
                System.out.println(error_message);
        }
    }

Lalu, pada fungsi main panggil method setter setelah pembuatan object dari class Configuration.

        Configuration configuration = new Configuration();
        // panggil setter setelah membuat object dari kelas Configuration
        // ex:
        // AMANAH_DB_URL --> jdbc:postgresql://localhost:5432/superorg
        // AMANAH_DB_USERNAME --> postgres
        // AMANAH_DB_PASSWORD --> postgres123
        setDBProperties("AMANAH_DB_URL", "url", configuration);
        setDBProperties("AMANAH_DB_USERNAME", "username", configuration);
        setDBProperties("AMANAH_DB_PASSWORD","password", configuration);

Kemudian, masih pada RumahSehat.java tambahkan dua method getter seperti di bawah.

// if the env variable for server host is null, use localhost instead.
        public static String getEnvVariableHostAddress(String varname_host){
                String hostAddress = System.getenv(varname_host)  != null ? System.getenv(varname_host) : "localhost"; // Host
                return hostAddress;
        }

        // try if the environment variable for port number is null, use 7776 instead
        public static int getEnvVariablePortNumber(String varname_port){
                String portNum = System.getenv(varname_port)  != null? System.getenv(varname_port)  : "7776"; //PORT
                int portNumInt = Integer.parseInt(portNum);
                return portNumInt;
        }

Lalu, sebelumnya saat mengaktivasi server adalah sebagai berikut:

activateServer('localhost', 7776);

Sekarang menjadi seperti di bawah.

        // get hostAddress and portnum from env var
        // ex:
        // AMANAH_HOST_BE --> "localhost"
        // AMANAH_PORT_BE --> 7776
        String hostAddress= getEnvVariableHostAddress("AMANAH_HOST_BE");
        int portNum = getEnvVariablePortNumber("AMANAH_PORT_BE");
        activateServer(hostAddress, portNum); 
Edited by Muhammad Hazim