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