Я работаю над кодом, который имеет большое количество констант, которые должны быть определены.В первую очередь это касается Marketplace
констант (это могут быть США, Великобритания, ИНДИЯ, ЯПОНИЯ) и связанных MarketplaceMerchantMapping
, которые в основном отображают MerchantID
с MarketplaceID
.
Например:
public enum Marketplace {
US("US"),
JP("JP"),
UK("UK"),
IN("IN"),
NZ("NZ"),
CA("CA"),
FR("FR"),
...
...
// This could go up to some 400 marketplaces
private final String stringValue;
public boolean isWest() {
return this == US || this == CA || this == UK;
}
public boolean isEast() {
return this == IN || this == NZ || this == JP;
}
}
public enum MarketplaceMerchantMapping {
USMAP(MarketplaceID.US, MerchantID.US, Marketplace.US),
JPMAP(MarketplaceID.JP, MerchantID.JP, Marketplace.JP),
UKMAP(MarketplaceID.UK, MerchantID.UK, Marketplace.UK),
NZMAP(MarketplaceID.NZ, MerchantID.NZ, Marketplace.NZ),
INMAP(MarketplaceID.IN, MerchantID.IN, Marketplace.IN),
CAMAP(MarketplaceID.CA, MerchantID.CA, Marketplace.CA),
FRMAP(MarketplaceID.FR, MerchantID.FR, Marketplace.FR),
...
...
// THis can go up to 400 Marketplaces * Number of merchantIds in each marketplace.
}
Существуют и другие похожие константы, определяемые так же, как перечисления или статические константы.
Это на самом деле не масштабируется, потому что каждый раз, когда мы добавляем поддержку нового Marketplace и Merchants, нам нужно идти иобновите кучу файлов и протестируйте их, и эти изменения конфигурации сами по себе отнимают много времени у разработчика.
В идеале, я хотел бы знать, есть ли какой-нибудь способ определить эти константы в каком-либо файле конфигурации и прочитать эти файлысоздать константы.Есть ли способ создать такие константы перечисления, читая и анализируя некоторый файл конфигурации?
Так что, если у меня есть файл конфигурации со следующими записями:
ConfigFile.cfg:
WestMarketplaces = ("US", "AG", "MX", "CA", ...) // Expand this later as required
EastMarketplaces = ("IN", "AU", "SG", "JP", ...) // Expand this later as required
EUMarketplaces = ("UK", "FR", "SP", ...) // Expand this later as required
WestMerchantIds = ("WA", "WB", "WC", "WD", ...) // Expand this later as required
WestMerchantIds = ("EA", "EB", "EC", "WD", ...) // Expand this later as required
EUMerchantIds = ("EUA", "EUB", "EUC", "WDD", ...) // Expand this later as required
marketplaceMerchantMapping = {
"US" = "WA";
"CA" = "WB";
"MX" = "WC";
"AU" = "EA";
"IN" = "EB";
"JP" = "EC";
"UK" = "EUA";
"FR" = "EUB";
...
} // Expand this later as required
Тогда, может ли он прочитать эти константы из файла конфигурации и построить соответствующие перечисления или статические константы?
Возможно ли это сделать?