Exemplo n.º 1
0
  @SuppressWarnings("unchecked")
  private boolean define(StoreInfo store, JSONObj obj) {
    boolean reconnect = false;
    for (String prop : obj.keys()) {
      if ("description".equals(prop)) {
        store.setDescription(obj.str(prop));
      } else if ("enabled".equals(prop)) {
        store.setEnabled(obj.bool(prop));
        reconnect = true;
      } else if ("name".equals(prop)) {
        store.setName(obj.str(prop));
      } else if ("workspace".equals(prop)) {
        WorkspaceInfo newWorkspace = findWorkspace(obj.str(prop));
        store.setWorkspace(newWorkspace);
      } else if (store instanceof CoverageStoreInfo) {
        CoverageStoreInfo info = (CoverageStoreInfo) store;
        if ("connection".equals(prop)) {
          JSONObj connection = obj.object(prop);
          if (!connection.has("raster") && connection.str("raster") != null) {
            throw new IllegalArgumentException(
                "Property connection.raster required for coverage store");
          }
          for (String param : connection.keys()) {
            if ("raster".equals(param)) {
              String url = connection.str(param);
              reconnect = reconnect || url == null || !url.equals(info.getURL());
              info.setURL(url);
            }
          }
        }
      } else if (store instanceof WMSStoreInfo) {
        WMSStoreInfo info = (WMSStoreInfo) store;
        if ("connection".equals(prop)) {
          JSONObj connection = obj.object(prop);
          if (!connection.has("url") && connection.str("url") != null) {
            throw new IllegalArgumentException("Property connection.url required for wms store");
          }
          for (String param : connection.keys()) {
            if ("url".equals(param)) {
              String url = connection.str(param);
              reconnect = reconnect || url == null || !url.equals(info.getCapabilitiesURL());
              info.setCapabilitiesURL(url);
            }
          }
        }
      }
      if (store instanceof DataStoreInfo) {
        DataStoreInfo info = (DataStoreInfo) store;
        if ("connection".equals(prop)) {
          JSONObj connection = obj.object(prop);
          info.getConnectionParameters().clear();
          info.getConnectionParameters().putAll(connection.raw());
          reconnect = true;
        }
      }
    }

    return reconnect;
  }