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);
  }
Exemplo n.º 3
0
  @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);
  }
Exemplo n.º 5
0
  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);
  }
Exemplo n.º 6
0
  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);
  }
Exemplo n.º 7
0
  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);
 }