public void visit(LayerInfo layer) { // first update the groups, remove the layer, and if no // other layers remained, remove the group as well for (LayerGroupInfo group : catalog.getLayerGroups()) { if (group.getLayers().contains(layer)) { // parallel remove of layer and styles int index = group.getLayers().indexOf(layer); group.getLayers().remove(index); group.getStyles().remove(index); // either update or remove the group if (group.getLayers().size() == 0) { catalog.remove(group); } else { catalog.save(group); } } } // remove the layer and (for the moment) its resource as well // TODO: change this to just remove the resource once the // resource/publish split is done ResourceInfo resource = layer.getResource(); catalog.remove(layer); catalog.remove(resource); }
void visitStore(StoreInfo store) { // drill down into layers (into resources since we cannot scan layers) List<ResourceInfo> resources = catalog.getResourcesByStore(store, ResourceInfo.class); for (ResourceInfo ri : resources) { List<LayerInfo> layers = catalog.getLayers(ri); for (LayerInfo li : layers) { li.accept(this); } } catalog.remove(store); }
@Test public void testAttributeCache() throws Exception { final Catalog catalog = getCatalog(); ResourcePool pool = ResourcePool.create(catalog); // clean up the lakes type FeatureTypeInfo oldInfo = catalog.getFeatureTypeByName( MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart()); List<LayerInfo> layers = catalog.getLayers(oldInfo); for (LayerInfo layerInfo : layers) { catalog.remove(layerInfo); } catalog.remove(oldInfo); // rebuild as new CatalogBuilder builder = new CatalogBuilder(catalog); builder.setStore( catalog.getStoreByName(MockData.CITE_PREFIX, MockData.CITE_PREFIX, DataStoreInfo.class)); FeatureTypeInfo info = builder.buildFeatureType( new NameImpl(MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart())); // non persisted state, caching should not occurr List<AttributeTypeInfo> att1 = pool.getAttributes(info); List<AttributeTypeInfo> att2 = pool.getAttributes(info); assertNotSame(att1, att2); assertEquals(att1, att2); // save it, making it persistent catalog.add(info); // first check caching actually works against persisted type infos List<AttributeTypeInfo> att3 = pool.getAttributes(info); List<AttributeTypeInfo> att4 = pool.getAttributes(info); assertSame(att3, att4); assertNotSame(att1, att3); assertEquals(att1, att3); }
public void visit(WorkspaceInfo workspace) { // remove owned stores for (StoreInfo s : catalog.getStoresByWorkspace(workspace, StoreInfo.class)) { s.accept(this); } // remove any linked namespaces NamespaceInfo ns = catalog.getNamespaceByPrefix(workspace.getName()); if (ns != null) { ns.accept(this); } catalog.remove(workspace); }
void visitStore(StoreInfo store) { // drill down into layers (into resources since we cannot scan layers) List<ResourceInfo> resources = catalog.getResourcesByStore(store, ResourceInfo.class); for (ResourceInfo ri : resources) { List<LayerInfo> layers = catalog.getLayers(ri); if (!layers.isEmpty()) { for (LayerInfo li : layers) { li.accept(this); } } else { // no layers for the resource, delete directly ri.accept(this); } } catalog.remove(store); }
public void visit(LayerGroupInfo layerGroupToRemove) { // remove layerGroupToRemove references from other groups List<LayerGroupInfo> groups = catalog.getLayerGroups(); for (LayerGroupInfo group : groups) { if (group.getLayers().remove(layerGroupToRemove)) { if (group.getLayers().size() == 0) { // if group is empty, delete it visit(group); } else { catalog.save(group); } } } // finally remove the group catalog.remove(layerGroupToRemove); }
public void visit(StyleInfo style) { // remove style references in layers List<LayerInfo> layers = catalog.getLayers(); for (LayerInfo layer : layers) { removeStyleInLayer(layer, style); } // groups can also refer to style, reset each reference to the // associated layer default style List<LayerGroupInfo> groups = catalog.getLayerGroups(); for (LayerGroupInfo group : groups) { removeStyleInLayerGroup(group, style); } // finally remove the style catalog.remove(style); }
public void visit(StyleInfo style) { // add users of this style among the related objects: layers List<LayerInfo> layer = catalog.getLayers(); for (LayerInfo li : layer) { // if it's the default style, reset it to the default one if (li.getDefaultStyle().equals(style)) { try { li.setDefaultStyle(new CatalogBuilder(catalog).getDefaultStyle(li.getResource())); catalog.save(li); } catch (IOException e) { // we fall back on the default style (since we cannot roll back the // entire operation, no transactions in the catalog) LOGGER.log( Level.WARNING, "Could not find default style for resource " + li.getResource() + " resetting the default to null"); li.setDefaultStyle(null); } } // remove it also from the associated styles if (li.getStyles().remove(style)) catalog.save(li); } // groups can also refer styles, reset each reference to the // associated layer default style List<LayerGroupInfo> groups = catalog.getLayerGroups(); for (LayerGroupInfo group : groups) { List<StyleInfo> styles = group.getStyles(); boolean dirty = false; for (int i = 0; i < styles.size(); i++) { StyleInfo si = styles.get(i); if (si != null && si.equals(style)) { styles.set(i, group.getLayers().get(i).getDefaultStyle()); dirty = true; } } if (dirty) catalog.save(group); } // finally remove the style catalog.remove(style); }
public void visit(CoverageInfo coverage) { // when the resource/layer split is done, delete all layers linked to the resource catalog.remove(coverage); }
public void visit(FeatureTypeInfo featureType) { // when the resource/layer split is done, delete all layers linked to the resource catalog.remove(featureType); }
public void visit(NamespaceInfo workspace) { catalog.remove(workspace); }
public void visit(WMSLayerInfo wmsLayer) { catalog.remove(wmsLayer); }
public void visit(LayerGroupInfo layerGroup) { catalog.remove(layerGroup); }