examples/contacts-example/src/main/java/de/saxsys/mvvmfx/examples/contacts/model/countries/DataFxCountrySelector.java
void loadSubdivisions() {

		InputStream iso3166_2Resource = this.getClass().getResourceAsStream(ISO_3166_2_LOCATION);

		if (iso3166_2Resource == null) {
			throw new IllegalStateException("Can't find the list of subdivisions! Expected location was:"
					+ ISO_3166_2_LOCATION);
		}

		XmlConverter<ISO3166_2_CountryEntity> converter = new XmlConverter<>("iso_3166_country",
				ISO3166_2_CountryEntity.class);

		ObservableList<ISO3166_2_CountryEntity> subdivisionsEntities = FXCollections.observableArrayList();

		try {

			DataReader<ISO3166_2_CountryEntity> dataSource =
					new InputStreamSource<>( iso3166_2Resource, converter );

			ListDataProvider<ISO3166_2_CountryEntity> listDataProvider = new ListDataProvider<>(dataSource);

			listDataProvider.setResultObservableList(subdivisionsEntities);

			Worker<ObservableList<ISO3166_2_CountryEntity>> worker = listDataProvider.retrieve();
			worker.stateProperty().addListener(obs -> {
				if (worker.getState() == Worker.State.SUCCEEDED) {

					subdivisionsEntities.forEach(entity -> {
						if (entity.subsets != null && !entity.subsets.isEmpty()) {

							Country country = findCountryByCode(entity.code);

							if (!countryCodeSubdivisionMap.containsKey(country)) {
								countryCodeSubdivisionMap.put(country, new ArrayList<>());
							}

							List<Subdivision> subdivisionList = countryCodeSubdivisionMap.get(country);

							entity.subsets.forEach(subset -> {
								subset.entryList.forEach(entry -> {
									subdivisionList.add(new Subdivision(entry.name, entry.code, country));
								});
							});

							String subdivisionName = entity.subsets.stream()
									.map(subset -> subset.subdivisionType)
									.collect(Collectors.joining("/"));

							countryCodeSubdivisionNameMap.put(country, subdivisionName);
						}
					});

					inProgress.set(false);
				}
			});
		} catch (IOException e) {
			LOG.error("A problem was detected while loading the XML file with the available subdivisions.", e);
		}

	}
void loadSubdivisions() {

		InputStream iso3166_2Resource = this.getClass().getResourceAsStream(ISO_3166_2_LOCATION);

		if (iso3166_2Resource == null) {
			throw new IllegalStateException("Can't find the list of subdivisions! Expected location was:"
					+ ISO_3166_2_LOCATION);
		}

		XmlConverter<ISO3166_2_CountryEntity> converter = new XmlConverter<>("iso_3166_country",
				ISO3166_2_CountryEntity.class);

		ObservableList<ISO3166_2_CountryEntity> subdivisionsEntities = FXCollections.observableArrayList();

		try {

			DataReader<ISO3166_2_CountryEntity> dataSource =
					new InputStreamSource<>( iso3166_2Resource, converter );

			ListDataProvider<ISO3166_2_CountryEntity> listDataProvider = new ListDataProvider<>(dataSource);

			listDataProvider.setResultObservableList(subdivisionsEntities);

			Worker<ObservableList<ISO3166_2_CountryEntity>> worker = listDataProvider.retrieve();
			worker.stateProperty().addListener(obs -> {
				if (worker.getState() == Worker.State.SUCCEEDED) {

					subdivisionsEntities.forEach(entity -> {
						if (entity.subsets != null && !entity.subsets.isEmpty()) {

							Country country = findCountryByCode(entity.code);

							if (!countryCodeSubdivisionMap.containsKey(country)) {
								countryCodeSubdivisionMap.put(country, new ArrayList<>());
							}

							List<Subdivision> subdivisionList = countryCodeSubdivisionMap.get(country);

							entity.subsets.forEach(subset -> {
								subset.entryList.forEach(entry -> {
									subdivisionList.add(new Subdivision(entry.name, entry.code, country));
								});
							});

							String subdivisionName = entity.subsets.stream()
									.map(subset -> subset.subdivisionType)
									.collect(Collectors.joining("/"));

							countryCodeSubdivisionNameMap.put(country, subdivisionName);
						}
					});

					inProgress.set(false);
				}
			});
		} catch (IOException e) {
			LOG.error("A problem was detected while loading the XML file with the available subdivisions.", e);
		}

	}
void loadSubdivisions ( ) { InputStream iso3166_2Resource = this . getClass ( ) . getResourceAsStream ( ISO_3166_2_LOCATION ) ; if ( iso3166_2Resource == null ) { throw new IllegalStateException ( "Can't find the list of subdivisions! Expected location was:" + ISO_3166_2_LOCATION ) ; } XmlConverter < ISO3166_2_CountryEntity > converter = new XmlConverter <> ( "iso_3166_country" , ISO3166_2_CountryEntity . class ) ; ObservableList < ISO3166_2_CountryEntity > subdivisionsEntities = FXCollections . observableArrayList ( ) ; try { DataReader < ISO3166_2_CountryEntity > dataSource = new InputStreamSource <> ( iso3166_2Resource , converter ) ; ListDataProvider < ISO3166_2_CountryEntity > listDataProvider = new ListDataProvider <> ( dataSource ) ; listDataProvider . setResultObservableList ( subdivisionsEntities ) ; Worker < ObservableList < ISO3166_2_CountryEntity > > worker = listDataProvider . retrieve ( ) ; worker . stateProperty ( ) . addListener ( obs -> { if ( worker . getState ( ) == Worker . State . SUCCEEDED ) { subdivisionsEntities . forEach ( entity -> { if ( entity . subsets != null && ! entity . subsets . isEmpty ( ) ) { Country country = findCountryByCode ( entity . code ) ; if ( ! countryCodeSubdivisionMap . containsKey ( country ) ) { countryCodeSubdivisionMap . put ( country , new ArrayList <> ( ) ) ; } List < Subdivision > subdivisionList = countryCodeSubdivisionMap . get ( country ) ; entity . subsets . forEach ( subset -> { subset . entryList . forEach ( entry -> { subdivisionList . add ( new Subdivision ( entry . name , entry . code , country ) ) ; } ) ; } ) ; String subdivisionName = entity . subsets . stream ( ) . map ( subset -> subset . subdivisionType ) . collect ( Collectors . joining ( "/" ) ) ; countryCodeSubdivisionNameMap . put ( country , subdivisionName ) ; } } ) ; inProgress . set ( false ) ; } } ) ; } catch ( IOException e ) { LOG . error ( "A problem was detected while loading the XML file with the available subdivisions." , e ) ; } }
Load all subdivisions from the XML file source with DataFX.
Load all subdivisions from the XML file source with DataFX .