From 04c6e31d5e161dbf1d73d4bba8184fa63da9e317 Mon Sep 17 00:00:00 2001 From: Andreas Zahnen Date: Fri, 29 Aug 2025 08:58:48 +0200 Subject: [PATCH 1/2] auto factory for tile provider --- .../app/TileProviderFeaturesFactory.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java index b7db14519..1ad1043c4 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java @@ -12,6 +12,8 @@ import dagger.assisted.AssistedFactory; import de.ii.xtraplatform.base.domain.LogContext; import de.ii.xtraplatform.entities.domain.AbstractEntityFactory; +import de.ii.xtraplatform.entities.domain.AutoEntity; +import de.ii.xtraplatform.entities.domain.AutoEntityFactory; import de.ii.xtraplatform.entities.domain.EntityData; import de.ii.xtraplatform.entities.domain.EntityDataBuilder; import de.ii.xtraplatform.entities.domain.EntityFactory; @@ -22,14 +24,20 @@ import de.ii.xtraplatform.features.domain.ImmutableProviderCommonData; import de.ii.xtraplatform.tiles.domain.ImmutableMinMax; import de.ii.xtraplatform.tiles.domain.ImmutableTileProviderFeaturesData; +import de.ii.xtraplatform.tiles.domain.ImmutableTilesetFeatures; import de.ii.xtraplatform.tiles.domain.ImmutableTilesetFeatures.Builder; import de.ii.xtraplatform.tiles.domain.ImmutableTilesetFeaturesDefaults; import de.ii.xtraplatform.tiles.domain.TileProviderData; import de.ii.xtraplatform.tiles.domain.TileProviderFeaturesData; import de.ii.xtraplatform.tiles.domain.TilesetFeatures; import java.util.AbstractMap.SimpleEntry; +import java.util.AbstractMap.SimpleImmutableEntry; +import java.util.Collection; +import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Optional; +import java.util.function.Consumer; import javax.inject.Inject; import javax.inject.Singleton; import org.slf4j.Logger; @@ -39,7 +47,7 @@ @AutoBind public class TileProviderFeaturesFactory extends AbstractEntityFactory - implements EntityFactory { + implements EntityFactory, AutoEntityFactory { private static final Logger LOGGER = LoggerFactory.getLogger(TileProviderFeaturesFactory.class); @@ -207,6 +215,40 @@ private TileProviderFeaturesData generateTilesetsIfNecessary(TileProviderFeature .build(); } + @Override + public Map check(T entityData) { + return Map.of(); + } + + @Override + public Map> analyze(T entityData) { + return Map.of(); + } + + @Override + public T generate( + T entityData, Map> types, Consumer>> tracker) { + if (!(entityData instanceof TileProviderFeaturesData)) { + return entityData; + } + + TileProviderFeaturesData data = (TileProviderFeaturesData) entityData; + + Map collections = + types.values().stream() + .flatMap(Collection::stream) + .map( + type -> { + ImmutableTilesetFeatures collection = new Builder().id(type).build(); + + return new SimpleImmutableEntry<>(type, collection); + }) + .collect(ImmutableMap.toImmutableMap(Entry::getKey, Entry::getValue)); + + return (T) + new ImmutableTileProviderFeaturesData.Builder().from(data).tilesets(collections).build(); + } + @AssistedFactory public interface TileProviderFeaturesFactoryAssisted extends FactoryAssisted { From 98016e403137d8d9b7b3ee3d6c4fa4eb6ad6e925 Mon Sep 17 00:00:00 2001 From: Andreas Zahnen Date: Fri, 29 Aug 2025 16:40:32 +0200 Subject: [PATCH 2/2] auto factory for tile provider --- .../xtraplatform/tiles/app/TileProviderFeaturesFactory.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java index 1ad1043c4..7028ab33d 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeaturesFactory.java @@ -79,6 +79,11 @@ public Optional subType() { return Optional.of(TileProviderFeaturesData.ENTITY_SUBTYPE); } + @Override + public Optional auto() { + return Optional.of(this); + } + @Override public Class entityClass() { return TileProviderFeatures.class;