A hierarchical config engine is a collection of config rules, where the rules get more specific as you travel down your hierarchy. The rules apply to each request in runtime, so its a runtime hierarchical config engine
For example you can have below config rules :-
Country Code | CityCode | AirlineCode | Surcharge |
us | null | null | 1.00 |
null | null | dl | 6.00 |
us | null | dl | 3.00 |
us | nyc | null | 2.50 |
us | nyc | aa | 4.50 |
us | nyc | dl | 5.50 |
Config rules
These config rules would mean:-
So the idea is that you can define general rules and more specific rules and the most specific rule will apply to your runtime record.
Let’s build a simple runtime config engine that applies a surcharge to customer selected flight based on origin’s country, city and airline.
<dependency>
<groupId>com.kapoorlabs</groupId>
<artifactId>kiara</artifactId>
<version>2.0.10</version>
</dependency>
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Config {
private String country;
private String originCity;
private String airline;
private Double surcharge;
}
import com.kapoorlabs.kiara.domain.Store;
import com.kapoorlabs.kiara.exception.LoadDataException;
import com.kapoorlabs.kiara.loader.StoreLoader;
public void loadConfigStore() throws LoadDataException {
configStore = new Store<>(Config.class);
StoreLoader<Config> storeLoader = new StoreLoader<>(configStore);
storeLoader.loadTable(new Config("in", null, null, 2.00));
storeLoader.loadTable(new Config("us", null, null, 1.00));
storeLoader.loadTable(new Config("us", null, "dl", 3.00));
storeLoader.loadTable(new Config("us", "nyc", null, 2.50));
storeLoader.loadTable(new Config("us", "nyc", "aa", 4.50));
storeLoader.loadTable(new Config("us", "nyc", "dl", 5.50));
storeLoader.prepareForSearch();
}
In this example we are just loading the config data from within the source code, but the source of the config data can be any data store, such as a file, database, a network stream, etc.
import com.kapoorlabs.kiara.domain.Store;
import com.kapoorlabs.kiara.exception.LoadDataException;
import com.kapoorlabs.kiara.loader.StoreLoader;
public Double getSurcharge(Store<Config> configStore, FlightRecord flightRecord) {
String country = flightRecord.getCountry();
String city = flightRecord.getCity();
String airline = flightRecord.getAirline();
KeywordSearchResult<Config> result = keywordSearch.getMinimumMatch(country + " " + city + " " + airline, configStore);
Double surcharge = result.getResult().get(0).getSurCharge()
return surcharge;
}
And your are Done!
Given you have following rules: –
Country Code | CityCode | AirlineCode | Surcharge |
us | null | null | 1.00 |
null | null | dl | 6.00 |
us | null | dl | 3.00 |
us | nyc | null | 2.50 |
us | nyc | aa | 4.50 |
us | nyc | dl | 5.50 |
Config rules
The following results should be self explanatory, but feel free to post a question in comments, in case of any doubt.
keywordSearch.getMinimumMatch(” us “, configStore); -> will give you surcharge of 1.00
keywordSearch.getMinimumMatch(” us dl”, configStore); -> will give you surcharge of 3.00
keywordSearch.getMinimumMatch(” nyc us dl”, configStore); -> will give you surcharge of 5.50
keywordSearch.getMinimumMatch(” bos us dl”, configStore); -> will give you surcharge of 3.00
keywordSearch.getMinimumMatch(” us nyc jb”, configStore); -> will give you surcharge of 2.50
https://blog.goo.ne.jp/lifetvs/e/3d0c7aa26128aa74163c41d8056d4ec6
https://www.deviantart.com/gdsffds/journal/Create-a-dynamic-config-engine-in-5-minutes-usin-873925623
https://paiza.io/projects/jWCd_FuOMq0EovUlf9XnWA
https://caribbeanfever.com/photo/albums/saasdsasad
https://www.thewyco.com/general/create-a-dynamic-config-engine-in-5-minutes-using-java-21-03-2021
- As we all know, the highly anticipated E3 2021 event just kicked off on Saturday, and it officially marks the first all-virtual version of this special
- A dream about fire is common, but what do dreams about fire mean? What causes it? How do you interpret it? There are many
- This essential purchase when a toddler arrives can turn into a puzzle as the variety of models, options and accessories are so great
- Try QuizDumps most updated SAP C_LUMIRA_23 dumps and clear your C_LUMIRA_23 exam in the first attempt.You may find many people who want to build their career pr