Esempio n. 1
0
  <T extends ResourceInfo> void initResource(
      T r,
      Class<T> clazz,
      String rId,
      String name,
      StoreInfo s,
      NamespaceInfo ns,
      String srs,
      ProjectionPolicy projPolicy,
      ReferencedEnvelope envelope,
      ReferencedEnvelope latLonEnvelope) {

    expect(r.getId()).andReturn(rId).anyTimes();
    expect(r.getName()).andReturn(name).anyTimes();
    expect(r.getQualifiedName()).andReturn(new NameImpl(ns.getURI(), name)).anyTimes();
    expect(r.getNativeName()).andReturn(name).anyTimes();
    expect(r.getQualifiedNativeName()).andReturn(new NameImpl(ns.getURI(), name)).anyTimes();
    expect(r.getTitle()).andReturn(name).anyTimes();
    expect(r.getAbstract()).andReturn("abstract about " + name).anyTimes();
    expect(r.getStore()).andReturn(s).anyTimes();
    expect(r.getNamespace()).andReturn(ns).anyTimes();

    srs = srs != null ? srs : "EPSG:4326";
    expect(r.getSRS()).andReturn(srs).anyTimes();
    try {
      expect(r.getNativeCRS()).andReturn(CRS.decode(srs));
    } catch (Exception e) {
      throw new RuntimeException(e);
    }

    expect(r.getKeywords()).andReturn((List) Arrays.asList(new Keyword(name))).anyTimes();
    expect(r.isEnabled()).andReturn(true).anyTimes();
    expect(r.isAdvertised()).andReturn(true).anyTimes();
    expect(r.getProjectionPolicy()).andReturn(projPolicy).anyTimes();
    expect(r.getLatLonBoundingBox()).andReturn(latLonEnvelope).anyTimes();
    ;
    expect(r.getNativeBoundingBox()).andReturn(envelope).anyTimes();

    expect(catalog.getResource(rId, clazz)).andReturn(r).anyTimes();

    expect(catalog.getResourceByName(ns.getPrefix() + ":" + name, clazz)).andReturn(r).anyTimes();
    expect(catalog.getResourceByName(ns.getPrefix() + ":" + name, ResourceInfo.class))
        .andReturn(r)
        .anyTimes();

    expect(catalog.getResourceByName(name, clazz)).andReturn(r).anyTimes();
    expect(catalog.getResourceByName(name, ResourceInfo.class)).andReturn(r).anyTimes();

    expect(catalog.getResourceByName(new NameImpl(ns.getPrefix(), name), clazz))
        .andReturn(r)
        .anyTimes();
    expect(catalog.getResourceByName(new NameImpl(ns.getPrefix(), name), ResourceInfo.class))
        .andReturn(r)
        .anyTimes();

    expect(catalog.getResourceByName(new NameImpl(ns.getURI(), name), clazz))
        .andReturn(r)
        .anyTimes();
    expect(catalog.getResourceByName(new NameImpl(ns.getURI(), name), ResourceInfo.class))
        .andReturn(r)
        .anyTimes();

    expect(catalog.getResourceByName(ns, name, clazz)).andReturn(r).andReturn(r).anyTimes();
    expect(catalog.getResourceByName(ns, name, ResourceInfo.class))
        .andReturn(r)
        .andReturn(r)
        .anyTimes();

    expect(catalog.getResourceByName(ns.getPrefix(), name, clazz)).andReturn(r).anyTimes();
    expect(catalog.getResourceByName(ns.getPrefix(), name, ResourceInfo.class))
        .andReturn(r)
        .anyTimes();
    // expect(catalog.getResourceByName(or(eq(ns.getPrefix()), eq(ns.getURI())), name,
    //    clazz)).andReturn(r).anyTimes();
    expect(catalog.getResourceByStore(s, name, clazz)).andReturn(r).anyTimes();
    expect(catalog.getResourceByStore(s, name, ResourceInfo.class)).andReturn(r).anyTimes();
  }
  public CoverageViewAbstractPage(
      String workspaceName, String storeName, String coverageName, CoverageInfo coverageInfo)
      throws IOException {
    storeId =
        getCatalog().getStoreByName(workspaceName, storeName, CoverageStoreInfo.class).getId();
    Catalog catalog = getCatalog();
    CoverageStoreInfo store = catalog.getStore(storeId, CoverageStoreInfo.class);

    GridCoverage2DReader reader =
        (GridCoverage2DReader) catalog.getResourcePool().getGridCoverageReader(store, null);
    String[] coverageNames = reader.getGridCoverageNames();
    if (availableCoverages == null) {
      availableCoverages = new ArrayList<String>();
    }
    for (String coverage : coverageNames) {
      ImageLayout layout = reader.getImageLayout(coverage);
      SampleModel sampleModel = layout.getSampleModel(null);
      final int numBands = sampleModel.getNumBands();
      if (numBands == 1) {
        // simple syntax for simple case
        availableCoverages.add(coverage);
      } else {
        for (int i = 0; i < numBands; i++) {
          availableCoverages.add(coverage + CoverageView.BAND_SEPARATOR + i);
        }
      }
    }
    Collections.sort(availableCoverages);
    name = COVERAGE_VIEW_NAME;
    if (coverageName != null) {
      newCoverage = false;

      // grab the coverage view
      coverageViewInfo =
          coverageInfo != null
              ? coverageInfo
              : catalog.getResourceByStore(store, coverageName, CoverageInfo.class);
      CoverageView coverageView =
          coverageViewInfo.getMetadata().get(CoverageView.COVERAGE_VIEW, CoverageView.class);
      // the type can be still not saved
      if (coverageViewInfo != null) {
        coverageInfoId = coverageViewInfo.getId();
      }
      if (coverageView == null) {
        throw new IllegalArgumentException(
            "The specified coverage does not have a coverage view attached to it");
      }
      outputBands = new ArrayList<CoverageBand>(coverageView.getCoverageBands());
      name = coverageView.getName();
    } else {
      outputBands = new ArrayList<CoverageBand>();
      newCoverage = true;
      coverageViewInfo = null;
    }
    selectedCoverages = new ArrayList<String>(availableCoverages);

    // build the form and the text area
    Form<CoverageViewAbstractPage> form = new Form<>("form", new CompoundPropertyModel<>(this));
    add(form);

    final TextField<String> nameField = new TextField<>("name");
    nameField.setRequired(true);
    nameField.add(new CoverageViewNameValidator());
    form.add(nameField);

    coverageEditor =
        new CoverageViewEditor(
            "coverages",
            new PropertyModel<>(this, "selectedCoverages"),
            new PropertyModel<>(this, "outputBands"),
            availableCoverages);
    form.add(coverageEditor);

    // save and cancel at the bottom of the page
    form.add(
        new SubmitLink("save") {
          @Override
          public void onSubmit() {
            onSave();
          }
        });
    form.add(
        new Link<Void>("cancel") {

          @Override
          public void onClick() {
            onCancel();
          }
        });
  }