@Override public Set<DataQuery> getKeys(boolean deep) { ImmutableSet.Builder<DataQuery> builder = ImmutableSet.builder(); for (Map.Entry<String, Object> entry : this.map.entrySet()) { builder.add(of(entry.getKey())); } if (deep) { for (Map.Entry<String, Object> entry : this.map.entrySet()) { if (entry.getValue() instanceof DataView) { for (DataQuery query : ((DataView) entry.getValue()).getKeys(true)) { builder.add(of(entry.getKey()).then(query)); } } } } return builder.build(); }
private void copyDataView(DataQuery path, DataView value) { Collection<DataQuery> valueKeys = value.getKeys(true); for (DataQuery oldKey : valueKeys) { set(path.then(oldKey), value.get(oldKey).get()); } }
@Test public void testGetKeys() { Set<DataQuery> queries = Sets.newHashSet(); queries.add(of("foo")); queries.add(of("foo", "bar")); queries.add(of("foo", "bar", "baz")); queries.add(of("bar")); DataView view = DataContainer.createNew(); view.set(of("foo"), "foo"); view.set(of("foo", "bar"), "foobar"); view.set(of("foo", "bar", "baz"), "foobarbaz"); view.set(of("bar"), 1); Set<DataQuery> testQueries = Sets.newHashSet(); testQueries.add(of("foo")); testQueries.add(of("bar")); Set<DataQuery> shallowKeys = view.getKeys(false); assertTrue(shallowKeys.equals(testQueries)); Set<DataQuery> deepKeys = view.getKeys(true); assertTrue(deepKeys.containsAll(queries)); }
@Override public Set<DataQuery> getKeys(boolean deep) { ImmutableSet.Builder<DataQuery> builder = ImmutableSet.builder(); for (Map.Entry<String, Object> entry : this.map.entrySet()) { builder.add(of(entry.getKey())); } if (deep) { for (Map.Entry<String, Object> entry : this.map.entrySet()) { if (entry.getValue() instanceof DataView) { for (DataQuery query : ((DataView) entry.getValue()).getKeys(true)) { builder.add(of(entry.getKey()).then(query)); } } } } return builder.build(); }
private void copyDataView(DataQuery path, DataView value) { Collection<DataQuery> valueKeys = value.getKeys(true); for (DataQuery oldKey : valueKeys) { set(path.then(oldKey), value.get(oldKey).get()); } }
@Override public Optional<HomeData> from(DataContainer container) { if (!container.contains(MyHomes.DEFAULT_HOME, MyHomes.HOMES)) { return Optional.empty(); } // Loads the structure defined in toContainer this.defaultHome = container.getSerializable(MyHomes.DEFAULT_HOME.getQuery(), Home.class).get(); // Loads the map of homes this.homes = Maps.newHashMap(); DataView homes = container.getView(MyHomes.HOMES.getQuery()).get(); for (DataQuery homeQuery : homes.getKeys(false)) { homes.getSerializable(homeQuery, Home.class) .ifPresent(home -> this.homes.put(homeQuery.toString(), home)); } return Optional.of(this); }
Gson gson = new GsonBuilder().create(); Set<DataQuery> keys = view.getKeys(false); for (DataQuery query : keys) { Optional<Object> optional = view.get(query);
@Override protected Optional<HomeData> buildContent(DataView container) throws InvalidDataException { if (!container.contains(MyHomes.HOMES)) return Optional.empty(); HomeData data = new HomeDataImpl(); container.getView(MyHomes.HOMES.getQuery()) .get().getKeys(false).forEach(name -> data.homes().put(name.toString(), container.getSerializable(name, Home.class) .orElseThrow(InvalidDataException::new))); container.getSerializable(MyHomes.DEFAULT_HOME.getQuery(), Home.class).ifPresent(home -> { data.set(MyHomes.DEFAULT_HOME, home); }); return Optional.of(data); }
Document document = new Document(); Set<DataQuery> keys = view.getKeys(false); for (DataQuery query : keys) { Optional<Object> optional = view.get(query);
DataView extra = DataUtil.dataViewFromJson(json); for (DataQuery key : extra.getKeys(false)) { data.set(key, extra.get(key).get());
DataView extra = DataUtil.dataViewFromJson(json); for (DataQuery key : extra.getKeys(false)) { data.set(key, extra.get(key).get());