diff --git a/core/src/main/java/io/bitsquare/arbitration/Arbitrator.java b/core/src/main/java/io/bitsquare/arbitration/Arbitrator.java index b9e76a0216..3a746b39ee 100644 --- a/core/src/main/java/io/bitsquare/arbitration/Arbitrator.java +++ b/core/src/main/java/io/bitsquare/arbitration/Arbitrator.java @@ -82,7 +82,7 @@ public class Arbitrator implements Serializable { // editable private ID_TYPE idType; - private List languages; + private List languageCodes; private Coin fee; private List arbitrationMethods; @@ -104,7 +104,7 @@ public class Arbitrator implements Serializable { p2pSigPubKey = persisted.getP2pSigPubKey(); name = persisted.getName(); idType = persisted.getIdType(); - languages = persisted.getLanguages(); + languageCodes = persisted.getLanguageCodes(); reputation = persisted.getReputation(); fee = persisted.getFee(); arbitrationMethods = persisted.getArbitrationMethods(); @@ -119,7 +119,7 @@ public class Arbitrator implements Serializable { p2pSigPubKey = user.getP2PSigPubKey(); name = "Mr. Default"; idType = Arbitrator.ID_TYPE.REAL_LIFE_ID; - languages = Arrays.asList(LanguageUtil.getDefaultLanguageLocale().getISO3Language()); + languageCodes = Arrays.asList(LanguageUtil.getDefaultLanguageLocaleAsCode()); reputation = new Reputation(); fee = Coin.parseCoin("0.1"); arbitrationMethods = Arrays.asList(Arbitrator.METHOD.TLS_NOTARY); @@ -173,8 +173,8 @@ public class Arbitrator implements Serializable { save(); } - public void setLanguages(List languages) { - this.languages = languages; + public void setLanguageCodes(List languageCodes) { + this.languageCodes = languageCodes; save(); } @@ -223,8 +223,8 @@ public class Arbitrator implements Serializable { return idType; } - public List getLanguages() { - return languages; + public List getLanguageCodes() { + return languageCodes; } public Reputation getReputation() { diff --git a/core/src/main/java/io/bitsquare/arbitration/ArbitratorService.java b/core/src/main/java/io/bitsquare/arbitration/ArbitratorService.java index c2ebf5e3de..81ca7d77d4 100644 --- a/core/src/main/java/io/bitsquare/arbitration/ArbitratorService.java +++ b/core/src/main/java/io/bitsquare/arbitration/ArbitratorService.java @@ -21,13 +21,11 @@ package io.bitsquare.arbitration; import io.bitsquare.arbitration.listeners.ArbitratorListener; import io.bitsquare.p2p.DHTService; -import java.util.Locale; - public interface ArbitratorService extends DHTService { void addArbitrator(Arbitrator arbitrator); void addArbitratorListener(ArbitratorListener listener); - void getArbitrators(Locale defaultLanguageLocale); + void getArbitrators(String defaultLanguageLocaleCode); } diff --git a/core/src/main/java/io/bitsquare/arbitration/tomp2p/TomP2PArbitratorService.java b/core/src/main/java/io/bitsquare/arbitration/tomp2p/TomP2PArbitratorService.java index 8943c0e92f..735d54a543 100644 --- a/core/src/main/java/io/bitsquare/arbitration/tomp2p/TomP2PArbitratorService.java +++ b/core/src/main/java/io/bitsquare/arbitration/tomp2p/TomP2PArbitratorService.java @@ -28,7 +28,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import javax.inject.Inject; @@ -134,7 +133,7 @@ public class TomP2PArbitratorService extends TomP2PDHTService implements Arbitra }); } - public void getArbitrators(Locale languageLocale) { + public void getArbitrators(String languageLocaleCode) { Number160 locationKey = Number160.createHash(ARBITRATORS_ROOT); FutureGet futureGet = getMap(locationKey); futureGet.addListener(new BaseFutureAdapter() { diff --git a/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java b/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java index 02e169a393..b25c8eb99e 100644 --- a/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java +++ b/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java @@ -66,7 +66,7 @@ public class ArbitratorBrowserView extends ActivatableView implement @Override public void initialize() { messageService.addArbitratorListener(this); - messageService.getArbitrators(LanguageUtil.getDefaultLanguageLocale()); + messageService.getArbitrators(LanguageUtil.getDefaultLanguageLocaleAsCode()); View view = viewLoader.load(ArbitratorProfileView.class); root.getChildren().set(0, view.getRoot()); diff --git a/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java b/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java index 4a81c3087f..e3688c151e 100644 --- a/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java +++ b/core/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java @@ -26,7 +26,6 @@ import io.bitsquare.gui.components.confidence.ConfidenceProgressIndicator; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.locale.BSResources; import io.bitsquare.locale.LanguageUtil; -import io.bitsquare.user.User; import io.bitsquare.util.Utilities; import org.bitcoinj.core.Coin; @@ -39,7 +38,6 @@ import org.bitcoinj.script.Script; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import java.util.Locale; import javax.inject.Inject; @@ -60,7 +58,7 @@ public class ArbitratorRegistrationView extends ActivatableView languageComboBox; + @FXML ComboBox languageComboBox; @FXML ComboBox idTypeComboBox; @FXML ComboBox methodsComboBox; @FXML ConfidenceProgressIndicator progressIndicator; @@ -74,23 +72,22 @@ public class ArbitratorRegistrationView extends ActivatableView languageList = new ArrayList<>(); + private List languageCodes = new ArrayList<>(); private List methodList = new ArrayList<>(); private List idVerificationList = new ArrayList<>(); private final Arbitrator arbitrator; private final WalletService walletService; private final ArbitratorService messageService; - private final User user; private final BSFormatter formatter; + @Inject private ArbitratorRegistrationView(Arbitrator arbitrator, WalletService walletService, - ArbitratorService messageService, User user, BSFormatter formatter) { + ArbitratorService messageService, BSFormatter formatter) { this.arbitrator = arbitrator; this.walletService = walletService; this.messageService = messageService; - this.user = user; this.formatter = formatter; } @@ -98,17 +95,17 @@ public class ArbitratorRegistrationView extends ActivatableView() { + languageComboBox.setItems(FXCollections.observableArrayList(LanguageUtil.getAllLanguageLocaleCodes())); + languageComboBox.setConverter(new StringConverter() { @Override - public String toString(Locale locale) { - return locale.getDisplayLanguage(); + public String toString(String code) { + return LanguageUtil.getDisplayName(code); } @Override - public Locale fromString(String s) { + public String fromString(String s) { return null; } }); @@ -192,17 +189,17 @@ public class ArbitratorRegistrationView extends ActivatableView languageList = FXCollections.observableArrayList(); - final ObservableList countryList = FXCollections.observableArrayList(); - final ObservableList arbitratorList = FXCollections.observableArrayList(); - final ObservableList allLanguages = FXCollections.observableArrayList(LanguageUtil - .getAllLanguageLocales()); + final ObservableList languageCodes = FXCollections.observableArrayList(); + final ObservableList countries = FXCollections.observableArrayList(); + final ObservableList arbitrators = FXCollections.observableArrayList(); + final ObservableList allLanguageCodes = FXCollections.observableArrayList(LanguageUtil + .getAllLanguageLocaleCodes()); final ObservableList allRegions = FXCollections.observableArrayList(CountryUtil.getAllRegions()); @@ -52,9 +50,9 @@ class RestrictionsDataModel implements Activatable, DataModel { @Override public void activate() { - countryList.setAll(accountSettings.getAcceptedCountries()); - languageList.setAll(accountSettings.getAcceptedLanguageLocales()); - arbitratorList.setAll(accountSettings.getAcceptedArbitrators()); + countries.setAll(accountSettings.getAcceptedCountries()); + languageCodes.setAll(accountSettings.getAcceptedLanguageLocaleCodes()); + arbitrators.setAll(accountSettings.getAcceptedArbitrators()); } @Override @@ -66,24 +64,24 @@ class RestrictionsDataModel implements Activatable, DataModel { } void updateArbitratorList() { - arbitratorList.setAll(accountSettings.getAcceptedArbitrators()); + arbitrators.setAll(accountSettings.getAcceptedArbitrators()); } - void addLanguage(Locale locale) { - if (locale != null && !languageList.contains(locale)) { - languageList.add(locale); - accountSettings.addAcceptedLanguageLocale(locale); + void addLanguageCode(String code) { + if (code != null && !languageCodes.contains(code)) { + languageCodes.add(code); + accountSettings.addAcceptedLanguageLocale(code); } } - void removeLanguage(Locale locale) { - languageList.remove(locale); - accountSettings.removeAcceptedLanguageLocale(locale); + void removeLanguage(String code) { + languageCodes.remove(code); + accountSettings.removeAcceptedLanguageLocale(code); } void addCountry(Country country) { - if (!countryList.contains(country) && country != null) { - countryList.add(country); + if (!countries.contains(country) && country != null) { + countries.add(country); accountSettings.addAcceptedCountry(country); } } @@ -92,17 +90,17 @@ class RestrictionsDataModel implements Activatable, DataModel { // TODO use Set instead of List // In addAcceptedCountry there is a check to no add duplicates, so it works correctly for now CountryUtil.getAllEuroCountries().stream().forEach(accountSettings::addAcceptedCountry); - countryList.setAll(accountSettings.getAcceptedCountries()); - return countryList; + countries.setAll(accountSettings.getAcceptedCountries()); + return countries; } void removeCountry(Country country) { - countryList.remove(country); + countries.remove(country); accountSettings.removeAcceptedCountry(country); } void removeArbitrator(Arbitrator arbitrator) { - arbitratorList.remove(arbitrator); + arbitrators.remove(arbitrator); accountSettings.removeAcceptedArbitrator(arbitrator); } } diff --git a/core/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java b/core/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java index fb9a7f46d6..87f50a023d 100644 --- a/core/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java +++ b/core/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java @@ -29,10 +29,9 @@ import io.bitsquare.gui.main.help.Help; import io.bitsquare.gui.main.help.HelpId; import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.locale.Country; +import io.bitsquare.locale.LanguageUtil; import io.bitsquare.locale.Region; -import java.util.Locale; - import javax.inject.Inject; import javafx.fxml.FXML; @@ -48,10 +47,10 @@ import javafx.util.StringConverter; @FxmlView public class RestrictionsView extends ActivatableViewAndModel implements Wizard.Step { - @FXML ListView languagesListView; + @FXML ListView languagesListView; @FXML ListView countriesListView; @FXML ListView arbitratorsListView; - @FXML ComboBox languageComboBox; + @FXML ComboBox languageComboBox; @FXML ComboBox regionComboBox; @FXML ComboBox countryComboBox; @FXML Button completedButton, addAllEuroCountriesButton; @@ -79,7 +78,7 @@ public class RestrictionsView extends ActivatableViewAndModel, ListCell>() { + languagesListView.setCellFactory(new Callback, ListCell>() { @Override - public ListCell call(ListView list) { - return new ListCell() { + public ListCell call(ListView list) { + return new ListCell() { final Label label = new Label(); final ImageView icon = ImageUtil.getImageViewById(ImageUtil.REMOVE_ICON); final Button removeButton = new Button("", icon); @@ -190,10 +189,10 @@ public class RestrictionsView extends ActivatableViewAndModel removeLanguage(item)); setGraphic(pane); } @@ -205,15 +204,15 @@ public class RestrictionsView extends ActivatableViewAndModel() { + languageComboBox.setItems(model.getAllLanguageCodes()); + languageComboBox.setConverter(new StringConverter() { @Override - public String toString(Locale locale) { - return locale.getDisplayLanguage(); + public String toString(String code) { + return LanguageUtil.getDisplayName(code); } @Override - public Locale fromString(String s) { + public String fromString(String s) { return null; } }); @@ -310,7 +309,7 @@ public class RestrictionsView extends ActivatableViewAndModel getLanguageList() { - return dataModel.languageList; + ObservableList getLanguageCodes() { + return dataModel.languageCodes; } ObservableList getAllRegions() { return dataModel.allRegions; } - ObservableList getAllLanguages() { - return dataModel.allLanguages; + ObservableList getAllLanguageCodes() { + return dataModel.allLanguageCodes; } ObservableList getCountryList() { - return dataModel.countryList; + return dataModel.countries; } ObservableList getArbitratorList() { - return dataModel.arbitratorList; + return dataModel.arbitrators; } //TODO Revert size() > -1 to 0(2 later). For mock testing disabled arbitratorList test private void updateDoneButtonDisableState() { - boolean isValid = dataModel.languageList != null && dataModel.languageList.size() > 0 && - dataModel.countryList != null && dataModel.countryList.size() > 0 && - dataModel.arbitratorList != null && dataModel.arbitratorList.size() > -1; + boolean isValid = dataModel.languageCodes != null && dataModel.languageCodes.size() > 0 && + dataModel.countries != null && dataModel.countries.size() > 0 && + dataModel.arbitrators != null && dataModel.arbitrators.size() > -1; doneButtonDisable.set(!isValid); } diff --git a/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java b/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java index f933afe55f..d92d12e823 100644 --- a/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java +++ b/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java @@ -39,7 +39,6 @@ import org.bitcoinj.utils.Fiat; import com.google.inject.Inject; -import java.util.Locale; import java.util.UUID; import javafx.beans.property.BooleanProperty; @@ -100,7 +99,7 @@ class CreateOfferDataModel implements Activatable, DataModel { final ObjectProperty securityDepositAsCoin = new SimpleObjectProperty<>(); final ObservableList acceptedCountries = FXCollections.observableArrayList(); - final ObservableList acceptedLanguages = FXCollections.observableArrayList(); + final ObservableList acceptedLanguageCodes = FXCollections.observableArrayList(); final ObservableList acceptedArbitrators = FXCollections.observableArrayList(); @@ -154,7 +153,7 @@ class CreateOfferDataModel implements Activatable, DataModel { securityDepositAsCoin.set(accountSettings.getSecurityDeposit()); acceptedCountries.setAll(accountSettings.getAcceptedCountries()); - acceptedLanguages.setAll(accountSettings.getAcceptedLanguageLocales()); + acceptedLanguageCodes.setAll(accountSettings.getAcceptedLanguageLocaleCodes()); acceptedArbitrators.setAll(accountSettings.getAcceptedArbitrators()); } } diff --git a/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java b/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java index 949f510e27..4035c268c7 100644 --- a/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java +++ b/core/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java @@ -312,8 +312,8 @@ class CreateOfferViewModel extends ActivatableWithDataModel acceptedCountries.set(formatter .countryLocalesToString(dataModel.acceptedCountries))); - dataModel.acceptedLanguages.addListener((Observable o) -> acceptedLanguages.set(formatter - .languageLocalesToString(dataModel.acceptedLanguages))); + dataModel.acceptedLanguageCodes.addListener((Observable o) -> acceptedLanguages.set(formatter + .languageCodesToString(dataModel.acceptedLanguageCodes))); dataModel.acceptedArbitrators.addListener((Observable o) -> acceptedArbitrators.set(formatter .arbitratorsToString(dataModel.acceptedArbitrators))); } diff --git a/core/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java b/core/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java index 4402a13b8a..2df096792d 100644 --- a/core/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java +++ b/core/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java @@ -140,7 +140,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel im } acceptedCountries = formatter.countryLocalesToString(offer.getAcceptedCountries()); - acceptedLanguages = formatter.languageLocalesToString(offer.getAcceptedLanguageLocales()); + acceptedLanguages = formatter.languageCodesToString(offer.getAcceptedLanguageCodes()); acceptedArbitrators = formatter.arbitratorsToString(offer.getArbitrators()); bankAccountType = BSResources.get(offer.getFiatAccountType().toString()); bankAccountCurrency = BSResources.get(CurrencyUtil.getDisplayName(offer.getCurrencyCode())); diff --git a/core/src/main/java/io/bitsquare/gui/util/BSFormatter.java b/core/src/main/java/io/bitsquare/gui/util/BSFormatter.java index 3d9d192eb3..8692eddc0b 100644 --- a/core/src/main/java/io/bitsquare/gui/util/BSFormatter.java +++ b/core/src/main/java/io/bitsquare/gui/util/BSFormatter.java @@ -21,6 +21,7 @@ import io.bitsquare.arbitration.Arbitrator; import io.bitsquare.locale.BSResources; import io.bitsquare.locale.Country; import io.bitsquare.locale.CurrencyUtil; +import io.bitsquare.locale.LanguageUtil; import io.bitsquare.offer.Offer; import io.bitsquare.user.User; @@ -316,8 +317,8 @@ public class BSFormatter { return arbitrators.stream().map(Arbitrator::getName).collect(Collectors.joining(", ")); } - public String languageLocalesToString(List languageLocales) { - return languageLocales.stream().map(e -> e.getDisplayLanguage()).collect(Collectors.joining(", ")); + public String languageCodesToString(List languageLocales) { + return languageLocales.stream().map(e -> LanguageUtil.getDisplayName(e)).collect(Collectors.joining(", ")); } public String arbitrationMethodsToString(List methods) { diff --git a/core/src/main/java/io/bitsquare/locale/CountryUtil.java b/core/src/main/java/io/bitsquare/locale/CountryUtil.java index 1578d904ae..fc9d8ddc32 100644 --- a/core/src/main/java/io/bitsquare/locale/CountryUtil.java +++ b/core/src/main/java/io/bitsquare/locale/CountryUtil.java @@ -29,27 +29,6 @@ import java.util.stream.Collectors; public class CountryUtil { - private static final String[] countryCodes = new String[]{"AE", "AL", "AR", "AT", "AU", "BA", "BE", "BG", "BH", - "BO", "BR", "BY", "CA", "CH", "CL", "CN", "CO", "CR", "CS", "CU", "CY", "CZ", "DE", "DK", "DO", "DZ", - "EC", "EE", "EG", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HR", "HU", "ID", "IE", "IL", "IN", - "IQ", "IS", "IT", "JO", "JP", "KR", "KW", "LB", "LT", "LU", "LV", "LY", "MA", "ME", "MK", "MT", "MX", - "MY", "NI", "NL", "NO", "NZ", "OM", "PA", "PE", "PH", "PL", "PR", "PT", "PY", "QA", "RO", "RS", "RU", - "SA", "SD", "SE", "SG", "SI", "SK", "SV", "SY", "TH", "TN", "TR", "TW", "UA", "US", "UY", "VE", "VN", - "YE", "ZA"}; - - private static final List countryCodeList = Arrays.asList(countryCodes); - private static final String[] regionCodes = new String[]{"AS", "EU", "SA", "EU", "OC", "EU", "EU", "EU", "AS", - "SA", "SA", "EU", "NA", "EU", "SA", "AS", "SA", "NA", "EU", "NA", "EU", "EU", "EU", "EU", "NA", "AF", - "SA", "EU", "AF", "EU", "EU", "EU", "EU", "EU", "NA", "AS", "NA", "EU", "EU", "AS", "EU", "AS", "AS", - "AS", "EU", "EU", "AS", "AS", "AS", "AS", "AS", "EU", "EU", "EU", "AF", "AF", "EU", "EU", "EU", "NA", - "AS", "NA", "EU", "EU", "OC", "AS", "NA", "SA", "AS", "EU", "NA", "EU", "SA", "AS", "EU", "EU", "EU", - "AS", "AF", "EU", "AS", "EU", "EU", "NA", "AS", "AS", "AF", "AS", "AS", "EU", "NA", "SA", "SA", "AS", - "AS", "AF"}; - private static final List regionCodeList = Arrays.asList(regionCodes); - private static final String[][] regionCodeToName = new String[][]{ - {"NA", "North America"}, {"SA", "South America"}, {"AF", "Africa"}, {"EU", "Europe"}, {"AS", "Asia"}, - {"OC", "Oceania"}}; - public static List getAllRegions() { final List allRegions = new ArrayList<>(); @@ -100,6 +79,14 @@ public class CountryUtil { selectedRegion != null && country != null && selectedRegion.equals(country.getRegion()))); } + public static Country getDefaultCountry() { + final Locale locale = new Locale("", Locale.getDefault().getCountry()); + String regionCode = getRegionCode(locale.getCountry()); + final Region region = new Region(regionCode, getRegionName(regionCode)); + return new Country(locale.getCountry(), locale.getDisplayCountry(), region); + } + + private static List getAllCountries() { final List allCountries = new ArrayList<>(); for (final Locale locale : getAllCountryLocales()) { @@ -111,12 +98,26 @@ public class CountryUtil { return allCountries; } - public static Country getDefaultCountry() { - final Locale locale = new Locale("", Locale.getDefault().getCountry()); - String regionCode = getRegionCode(locale.getCountry()); - final Region region = new Region(regionCode, getRegionName(regionCode)); - return new Country(locale.getCountry(), locale.getDisplayCountry(), region); - } + private static final String[] countryCodes = new String[]{"AE", "AL", "AR", "AT", "AU", "BA", "BE", "BG", "BH", + "BO", "BR", "BY", "CA", "CH", "CL", "CN", "CO", "CR", "CS", "CU", "CY", "CZ", "DE", "DK", "DO", "DZ", + "EC", "EE", "EG", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HR", "HU", "ID", "IE", "IL", "IN", + "IQ", "IS", "IT", "JO", "JP", "KR", "KW", "LB", "LT", "LU", "LV", "LY", "MA", "ME", "MK", "MT", "MX", + "MY", "NI", "NL", "NO", "NZ", "OM", "PA", "PE", "PH", "PL", "PR", "PT", "PY", "QA", "RO", "RS", "RU", + "SA", "SD", "SE", "SG", "SI", "SK", "SV", "SY", "TH", "TN", "TR", "TW", "UA", "US", "UY", "VE", "VN", + "YE", "ZA"}; + + private static final List countryCodeList = Arrays.asList(countryCodes); + private static final String[] regionCodes = new String[]{"AS", "EU", "SA", "EU", "OC", "EU", "EU", "EU", "AS", + "SA", "SA", "EU", "NA", "EU", "SA", "AS", "SA", "NA", "EU", "NA", "EU", "EU", "EU", "EU", "NA", "AF", + "SA", "EU", "AF", "EU", "EU", "EU", "EU", "EU", "NA", "AS", "NA", "EU", "EU", "AS", "EU", "AS", "AS", + "AS", "EU", "EU", "AS", "AS", "AS", "AS", "AS", "EU", "EU", "EU", "AF", "AF", "EU", "EU", "EU", "NA", + "AS", "NA", "EU", "EU", "OC", "AS", "NA", "SA", "AS", "EU", "NA", "EU", "SA", "AS", "EU", "EU", "EU", + "AS", "AF", "EU", "AS", "EU", "EU", "NA", "AS", "AS", "AF", "AS", "AS", "EU", "NA", "SA", "SA", "AS", + "AS", "AF"}; + private static final List regionCodeList = Arrays.asList(regionCodes); + private static final String[][] regionCodeToName = new String[][]{ + {"NA", "North America"}, {"SA", "South America"}, {"AF", "Africa"}, {"EU", "Europe"}, {"AS", "Asia"}, + {"OC", "Oceania"}}; private static String getRegionName(final String regionCode) { for (final String[] regionName : regionCodeToName) { diff --git a/core/src/main/java/io/bitsquare/locale/LanguageUtil.java b/core/src/main/java/io/bitsquare/locale/LanguageUtil.java index 91e2b04c52..1a1186121c 100644 --- a/core/src/main/java/io/bitsquare/locale/LanguageUtil.java +++ b/core/src/main/java/io/bitsquare/locale/LanguageUtil.java @@ -26,25 +26,29 @@ import java.util.stream.Collectors; public class LanguageUtil { - public static List getAllLanguageLocales() { + public static List getAllLanguageLocaleCodes() { List allLocales = Arrays.asList(Locale.getAvailableLocales()); - final Set allLocalesAsSet = + final Set allLocaleCodesAsSet = allLocales.stream().filter(locale -> !"".equals(locale.getLanguage())).map(locale -> - new Locale(locale.getLanguage(), "")).collect(Collectors.toSet()); - allLocales = new ArrayList<>(); - allLocales.addAll(allLocalesAsSet); - allLocales.sort((locale1, locale2) -> locale1.getDisplayLanguage().compareTo(locale2.getDisplayLanguage())); - return allLocales; + new Locale(locale.getLanguage(), "").getISO3Language()).collect(Collectors.toSet()); + List allLocaleCodes = new ArrayList<>(); + allLocaleCodes.addAll(allLocaleCodesAsSet); + allLocaleCodes.sort((locale1, locale2) -> locale1.compareTo(locale2)); + return allLocaleCodes; } - public static Locale getDefaultLanguageLocale() { + public static String getDefaultLanguageLocaleAsCode() { if (Locale.getDefault() != null) - return new Locale(Locale.getDefault().getLanguage(), ""); + return new Locale(Locale.getDefault().getLanguage(), "").getISO3Language(); else - return getEnglishLanguageLocale(); + return getEnglishLanguageLocaleCode(); } - public static Locale getEnglishLanguageLocale() { - return new Locale(Locale.ENGLISH.getLanguage(), ""); + public static String getEnglishLanguageLocaleCode() { + return new Locale(Locale.ENGLISH.getLanguage(), "").getISO3Language(); + } + + public static String getDisplayName(String code) { + return new Locale(code).getDisplayName(); } } diff --git a/core/src/main/java/io/bitsquare/locale/Region.java b/core/src/main/java/io/bitsquare/locale/Region.java index 6c93517ef9..c5c0414036 100644 --- a/core/src/main/java/io/bitsquare/locale/Region.java +++ b/core/src/main/java/io/bitsquare/locale/Region.java @@ -24,9 +24,7 @@ import java.util.Objects; public class Region implements Serializable { private static final long serialVersionUID = -5930294199097793187L; - private final String code; - private final String name; public Region(String code, String name) { @@ -55,7 +53,6 @@ public class Region implements Serializable { return code; } - public String getName() { return name; } diff --git a/core/src/main/java/io/bitsquare/offer/Offer.java b/core/src/main/java/io/bitsquare/offer/Offer.java index 214261db70..00babcd360 100644 --- a/core/src/main/java/io/bitsquare/offer/Offer.java +++ b/core/src/main/java/io/bitsquare/offer/Offer.java @@ -32,7 +32,6 @@ import java.security.PublicKey; import java.util.Date; import java.util.List; -import java.util.Locale; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; @@ -75,7 +74,7 @@ public class Offer implements Serializable { private final Coin securityDeposit; private final List acceptedCountries; - private final List acceptedLanguageLocales; + private final List acceptedLanguageCodes; private final String bankAccountUID; private final List arbitrators; @@ -105,7 +104,7 @@ public class Offer implements Serializable { List arbitrators, Coin securityDeposit, List acceptedCountries, - List acceptedLanguageLocales) { + List acceptedLanguageCodes) { this.id = id; this.p2pSigPubKey = p2pSigPubKey; this.direction = direction; @@ -120,7 +119,7 @@ public class Offer implements Serializable { this.securityDeposit = securityDeposit; this.acceptedCountries = acceptedCountries; - this.acceptedLanguageLocales = acceptedLanguageLocales; + this.acceptedLanguageCodes = acceptedLanguageCodes; creationDate = new Date(); setState(State.UNKNOWN); @@ -184,8 +183,8 @@ public class Offer implements Serializable { return acceptedCountries; } - public List getAcceptedLanguageLocales() { - return acceptedLanguageLocales; + public List getAcceptedLanguageCodes() { + return acceptedLanguageCodes; } public Fiat getVolumeByAmount(Coin amount) { @@ -239,7 +238,7 @@ public class Offer implements Serializable { public void validate() throws Exception { checkNotNull(getAcceptedCountries(), "AcceptedCountries is null"); - checkNotNull(getAcceptedLanguageLocales(), "AcceptedLanguageLocales is null"); + checkNotNull(getAcceptedLanguageCodes(), "AcceptedLanguageLocales is null"); checkNotNull(getAmount(), "Amount is null"); checkNotNull(getArbitrators(), "Arbitrator is null"); checkNotNull(getBankAccountId(), "BankAccountId is null"); @@ -279,7 +278,7 @@ public class Offer implements Serializable { ", bankAccountCountry=" + bankAccountCountry + ", securityDeposit=" + securityDeposit + ", acceptedCountries=" + acceptedCountries + - ", acceptedLanguageLocales=" + acceptedLanguageLocales + + ", acceptedLanguageLocales=" + acceptedLanguageCodes + ", bankAccountUID='" + bankAccountUID + '\'' + ", arbitrators=" + arbitrators + ", offerFeePaymentTxID='" + offerFeePaymentTxID + '\'' + diff --git a/core/src/main/java/io/bitsquare/trade/TradeManager.java b/core/src/main/java/io/bitsquare/trade/TradeManager.java index 39d90152c2..0395f5e333 100644 --- a/core/src/main/java/io/bitsquare/trade/TradeManager.java +++ b/core/src/main/java/io/bitsquare/trade/TradeManager.java @@ -176,7 +176,7 @@ public class TradeManager { accountSettings.getAcceptedArbitrators(), accountSettings.getSecurityDeposit(), accountSettings.getAcceptedCountries(), - accountSettings.getAcceptedLanguageLocales()); + accountSettings.getAcceptedLanguageLocaleCodes()); try { Data offerData = new Data(offer); diff --git a/core/src/main/java/io/bitsquare/user/AccountSettings.java b/core/src/main/java/io/bitsquare/user/AccountSettings.java index 38c916bd56..30a75d98d0 100644 --- a/core/src/main/java/io/bitsquare/user/AccountSettings.java +++ b/core/src/main/java/io/bitsquare/user/AccountSettings.java @@ -30,7 +30,6 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Locale; import java.util.OptionalLong; import javax.inject.Inject; @@ -41,10 +40,10 @@ public class AccountSettings implements Serializable { transient private Storage storage; // Persisted fields - private List acceptedLanguageLocales = new ArrayList<>(); + private List acceptedLanguageLocaleCodes = new ArrayList<>(); private List acceptedCountryLocales = new ArrayList<>(); private List acceptedArbitrators = new ArrayList<>(); - + /////////////////////////////////////////////////////////////////////////////////////////// // Constructor @@ -56,12 +55,12 @@ public class AccountSettings implements Serializable { AccountSettings persisted = storage.initAndGetPersisted(this); if (persisted != null) { - acceptedLanguageLocales = persisted.getAcceptedLanguageLocales(); + acceptedLanguageLocaleCodes = persisted.getAcceptedLanguageLocaleCodes(); acceptedCountryLocales = persisted.getAcceptedCountries(); acceptedArbitrators = persisted.getAcceptedArbitrators(); } else { - acceptedLanguageLocales = Arrays.asList(LanguageUtil.getDefaultLanguageLocale(), LanguageUtil.getEnglishLanguageLocale()); + acceptedLanguageLocaleCodes = Arrays.asList(LanguageUtil.getDefaultLanguageLocaleAsCode(), LanguageUtil.getEnglishLanguageLocaleCode()); acceptedCountryLocales = Arrays.asList(CountryUtil.getDefaultCountry()); acceptedArbitrators = Arrays.asList(defaultArbitrator); } @@ -73,15 +72,15 @@ public class AccountSettings implements Serializable { /////////////////////////////////////////////////////////////////////////////////////////// - public void addAcceptedLanguageLocale(Locale locale) { - if (!acceptedLanguageLocales.contains(locale)) { - acceptedLanguageLocales.add(locale); + public void addAcceptedLanguageLocale(String localeCode) { + if (!acceptedLanguageLocaleCodes.contains(localeCode)) { + acceptedLanguageLocaleCodes.add(localeCode); storage.save(); } } - public void removeAcceptedLanguageLocale(Locale item) { - acceptedLanguageLocales.remove(item); + public void removeAcceptedLanguageLocale(String item) { + acceptedLanguageLocaleCodes.remove(item); } public void addAcceptedCountry(Country locale) { @@ -107,7 +106,7 @@ public class AccountSettings implements Serializable { storage.save(); } - + /////////////////////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////////////////////// @@ -116,8 +115,8 @@ public class AccountSettings implements Serializable { return acceptedArbitrators; } - public List getAcceptedLanguageLocales() { - return acceptedLanguageLocales; + public List getAcceptedLanguageLocaleCodes() { + return acceptedLanguageLocaleCodes; } public List getAcceptedCountries() {