/** * Returns true if the sublayers of a layer group are all hidden. * * @param layerGroup */ protected boolean subLayersHidden(LayerGroupInfo layerGroup) { boolean anySublayersVisible = false; for (PublishedInfo subLayer : layerGroup.getLayers()) { if (subLayer instanceof LayerInfo) { if (!hideLayer((LayerInfo) subLayer)) { anySublayersVisible = true; break; } } else if (subLayer instanceof LayerGroupInfo) { if (!hideLayerGroup((LayerGroupInfo) subLayer)) { anySublayersVisible = true; break; } } } return !anySublayersVisible; }
public boolean hideResource(ResourceInfo resource) { if (LocalPublished.get() != null) { for (LayerInfo l : resource.getCatalog().getLayers(resource)) { if (hideLayer(l)) { return true; } } } return hideWorkspace(resource.getStore().getWorkspace()); }
@Override public Boolean evaluate(Object object) { return !subLayersHidden((LayerGroupInfo) object); } };
if (workspaceLayerGroupInherit()) { return hideWorkspace(layerGroup.getWorkspace());
return Predicates.or(localLayerFilter, inWorkspace()); } else if (WorkspaceInfo.class.isAssignableFrom(clazz)) { return Predicates.equal("id", localWS.getId()); } else if (LayerGroupInfo.class.isAssignableFrom(clazz)) { Filter filter = standardFilter(clazz); return standardFilter(clazz); } else if (LayerInfo.class.isAssignableFrom(clazz)) {
public boolean hideStyle(StyleInfo style) { if (style.getWorkspace() == null) { // global style, hide it if a local workspace style shars the same name, ie overrides it if (LocalWorkspace.get() != null) { if (catalog.getStyleByName(LocalWorkspace.get(), style.getName()) != null) { return true; } } return false; } return hideWorkspace(style.getWorkspace()); }
private Filter standardFilter(Class<? extends CatalogInfo> clazz) { final Filter forGlobal; if (LocalWorkspace.get() != null) { // TODO need a well known implementation // Show globals unless an object with the same name is in the local workspace forGlobal = super.getSecurityFilter(clazz); } else { // Global request, show all globals forGlobal = Predicates.acceptAll(); } // If it's a global use the global filter, otherwise check if it's in the local workspace return Predicates.or( Predicates.and(Predicates.isNull("workspace.id"), forGlobal), Predicates.and( Predicates.factory.not(Predicates.isNull("workspace.id")), inWorkspace())); }
CatalogFilterAccessManager setupAccessManager() throws Exception { ResourceAccessManager defAsResourceManager = buildAccessManager("wideOpen.properties"); CatalogFilterAccessManager mgr = new CatalogFilterAccessManager(); mgr.setCatalogFilters(Collections.singletonList(new LocalWorkspaceCatalogFilter(catalog))); mgr.setDelegate(defAsResourceManager); return mgr; }