Skip to content

Commit

Permalink
GEOS-8866 jdbcconfig: handle enabled field properly too
Browse files Browse the repository at this point in the history
  • Loading branch information
NielsCharlier committed Aug 15, 2018
1 parent 469acb9 commit 966a374
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 35 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -821,6 +821,9 @@ public <T extends Info> T save(T info) {
final boolean updateResouceLayersAdvertised = final boolean updateResouceLayersAdvertised =
info instanceof ResourceInfo info instanceof ResourceInfo
&& modificationProxy.getPropertyNames().contains("advertised"); && modificationProxy.getPropertyNames().contains("advertised");
final boolean updateResourceLayersEnabled =
info instanceof ResourceInfo
&& modificationProxy.getPropertyNames().contains("enabled");
final boolean updateResourceLayersKeywords = final boolean updateResourceLayersKeywords =
CollectionUtils.exists( CollectionUtils.exists(
modificationProxy.getPropertyNames(), modificationProxy.getPropertyNames(),
Expand Down Expand Up @@ -855,13 +858,22 @@ public boolean evaluate(Object input) {
// a regular JavaBean property // a regular JavaBean property
if (info instanceof ResourceInfo) { if (info instanceof ResourceInfo) {
if (updateResouceLayersName) { if (updateResouceLayersName) {
updateResourceLayerName((ResourceInfo) info); updateResourceLayerProperty(
(ResourceInfo) info, "name", ((ResourceInfo) info).getName());
} }
if (updateResouceLayersAdvertised) { if (updateResouceLayersAdvertised) {
updateResourceLayerAdvertised((ResourceInfo) info); updateResourceLayerProperty(
(ResourceInfo) info, "advertised", ((ResourceInfo) info).isAdvertised());
}
if (updateResourceLayersEnabled) {
updateResourceLayerProperty(
(ResourceInfo) info, "enabled", ((ResourceInfo) info).isEnabled());
} }
if (updateResourceLayersKeywords) { if (updateResourceLayersKeywords) {
updateResourceLayerKeywords((ResourceInfo) info); updateResourceLayerProperty(
(ResourceInfo) info,
"resource.keywords.value",
((ResourceInfo) info).getKeywords());
} }
} }
// / </HACK> // / </HACK>
Expand All @@ -878,43 +890,14 @@ public boolean evaluate(Object input) {
return getById(id, clazz); return getById(id, clazz);
} }


private <T> void updateResourceLayerName(ResourceInfo info) { private <T> void updateResourceLayerProperty(
final Object newValue = info.getName(); ResourceInfo info, String propertyPath, Object newValue) {
Filter filter = Predicates.equal("resource.id", info.getId());
List<LayerInfo> resourceLayers;
resourceLayers = this.queryAsList(LayerInfo.class, filter, null, null, null);
for (LayerInfo layer : resourceLayers) {
Set<PropertyType> propertyTypes = dbMappings.getPropertyTypes(LayerInfo.class, "name");
PropertyType propertyType = propertyTypes.iterator().next();
Property changedProperty = new Property(propertyType, newValue);
Integer layerOid = findObjectId(layer);
updateQueryableProperties(layer, layerOid, ImmutableSet.of(changedProperty));
}
}

private <T> void updateResourceLayerAdvertised(ResourceInfo info) {
final Object newValue = info.isAdvertised();
Filter filter = Predicates.equal("resource.id", info.getId());
List<LayerInfo> resourceLayers;
resourceLayers = this.queryAsList(LayerInfo.class, filter, null, null, null);
for (LayerInfo layer : resourceLayers) {
Set<PropertyType> propertyTypes =
dbMappings.getPropertyTypes(LayerInfo.class, "advertised");
PropertyType propertyType = propertyTypes.iterator().next();
Property changedProperty = new Property(propertyType, newValue);
Integer layerOid = findObjectId(layer);
updateQueryableProperties(layer, layerOid, ImmutableSet.of(changedProperty));
}
}

private <T> void updateResourceLayerKeywords(ResourceInfo info) {
final Object newValue = info.getKeywords();
Filter filter = Predicates.equal("resource.id", info.getId()); Filter filter = Predicates.equal("resource.id", info.getId());
List<LayerInfo> resourceLayers; List<LayerInfo> resourceLayers;
resourceLayers = this.queryAsList(LayerInfo.class, filter, null, null, null); resourceLayers = this.queryAsList(LayerInfo.class, filter, null, null, null);
for (LayerInfo layer : resourceLayers) { for (LayerInfo layer : resourceLayers) {
Set<PropertyType> propertyTypes = Set<PropertyType> propertyTypes =
dbMappings.getPropertyTypes(LayerInfo.class, "resource.keywords.value"); dbMappings.getPropertyTypes(LayerInfo.class, propertyPath);
PropertyType propertyType = propertyTypes.iterator().next(); PropertyType propertyType = propertyTypes.iterator().next();
Property changedProperty = new Property(propertyType, newValue); Property changedProperty = new Property(propertyType, newValue);
Integer layerOid = findObjectId(layer); Integer layerOid = findObjectId(layer);
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -126,6 +126,33 @@ public void testCharacterEncoding() {
assertEquals(degF, saved.getAbstract()); assertEquals(degF, saved.getAbstract());
} }


@Test
public void testEnabled() {
final FilterFactory ff = CommonFactoryFinder.getFilterFactory();

addDataStore();
addNamespace();

FeatureTypeInfo ft1 = newFeatureType("ft1", ds);
ft1.setEnabled(false);
catalog.add(ft1);
StyleInfo s1;
catalog.add(s1 = newStyle("s1", "s1Filename"));
LayerInfo l1 = newLayer(ft1, s1);
catalog.add(l1);
CloseableIterator<LayerInfo> it =
catalog.list(LayerInfo.class, ff.equals(ff.property("enabled"), ff.literal(true)));
assertFalse(it.hasNext());

ft1 = catalog.getFeatureTypeByName("ft1");
ft1.setEnabled(true);
catalog.save(ft1);

it = catalog.list(LayerInfo.class, ff.equals(ff.property("enabled"), ff.literal(true)));
assertTrue(it.hasNext());
assertEquals(l1.getName(), it.next().getName());
}

@Test @Test
public void testOrderByMultiple() { public void testOrderByMultiple() {
addDataStore(); addDataStore();
Expand Down

0 comments on commit 966a374

Please sign in to comment.