Example #1
1
  /**
   * Search datasets containg param text in the metadata
   *
   * @param query The query object
   * @param limit maximum results to return
   * @param offset search begins from offset
   * @throws JackanException on error
   */
  public synchronized SearchResults<CkanDataset> searchDatasets(
      CkanQuery query, int limit, int offset) {

    StringBuilder params = new StringBuilder();

    params.append("rows=").append(limit).append("&start=").append(offset);

    if (query.getText().length() > 0) {
      params.append("&q=");
      params.append(urlEncode(query.getText()));
    }

    StringBuilder fq = new StringBuilder();
    String fqPrefix = "";

    fqPrefix = appendNamesList(fqPrefix, "groups", query.getGroupNames(), fq);
    fqPrefix = appendNamesList(fqPrefix, "organization", query.getOrganizationNames(), fq);
    fqPrefix = appendNamesList(fqPrefix, "tags", query.getTagNames(), fq);
    fqPrefix = appendNamesList(fqPrefix, "license_id", query.getLicenseIds(), fq);

    if (fq.length() > 0) {
      params.append("&fq=").append(urlEncode(fq.insert(0, "(").append(")").toString()));
    }

    DatasetSearchResponse dsr;
    dsr = getHttp(DatasetSearchResponse.class, "/api/3/action/package_search?" + params.toString());

    if (dsr.success) {
      for (CkanDataset ds : dsr.result.getResults()) {
        for (CkanResource cr : ds.getResources()) {
          cr.setPackageId(ds.getId());
        }
      }
    }

    return dsr.result;
  }
Example #2
0
 /**
  * @param idOrName either the dataset name (i.e. laghi-monitorati-trento) or the the
  *     alphanumerical id (i.e. 96b8aae4e211f3e5a70cdbcbb722264256ae2e7d)
  * @throws JackanException on error
  */
 public synchronized CkanDataset getDataset(String idOrName) {
   CkanDataset cd =
       getHttp(DatasetResponse.class, "/api/3/action/package_show", "id", idOrName).result;
   for (CkanResource cr : cd.getResources()) {
     cr.setPackageId(cd.getId());
   }
   return cd;
 }
Example #3
0
  /**
   * Updates a resource on the ckan server.
   *
   * @param resource ckan resource object
   * @return the updated resource
   * @throws JackanException
   */
  public synchronized CkanResource updateResource(CkanResource resource, Boolean checkConsistency) {

    if (ckanToken == null) {
      throw new JackanException(
          "Tried to update resource" + resource.getName() + ", but ckan token was not set!");
    }
    // check consistance with original version of the to be updated resource
    if (checkConsistency) {
      CkanResource originalResource = getResource(resource.getId());

      for (Field f : originalResource.getClass().getDeclaredFields()) {
        f.setAccessible(true);
        String fieldName;
        try {
          if ((f.get(originalResource) != null)
              && (f.get(resource) == null)
              && (!f.getName().equals("created"))) {
            fieldName = f.getName();
            //						if(!fieldName.equals("created")){
            f.set(resource, f.get(originalResource));
            System.out.println("Not a null: " + fieldName + " Value: ");
            //						//};
            //								System.out.println("Not a null: "+fieldName+ " Value: ");
          }
        } catch (IllegalArgumentException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
    // System.out.println("After consistance checking resource is consist of:
    // "+resource.toString());

    ObjectMapper objectMapper = CkanClient.getObjectMapper();
    String json = null;
    try {
      json = objectMapper.writeValueAsString(resource);
    } catch (IOException e) {
      throw new JackanException("Couldn't serialize the provided CkanResourceMinimized!", e);
    }

    return postHttp(
            ResourceResponse.class,
            "/api/3/action/resource_update",
            json,
            ContentType.APPLICATION_JSON)
        .result;
  }
Example #4
0
  /**
   * Creates ckan resource on the server.
   *
   * @param resource ckan resource object with the minimal set of parameters required. See {@link
   *     CkanResource#CkanResource(java.lang.String, java.lang.String, java.lang.String,
   *     java.lang.String, java.lang.String, java.lang.String)}
   * @return the newly created resource
   * @throws JackanException
   */
  public synchronized CkanResource createResource(CkanResource resource) {

    logger.warning("TODO 0.4 CREATION OF FULL RESOURCE IS EXPERIMENTAL!");

    if (ckanToken == null) {
      throw new JackanException(
          "Tried to create resource" + resource.getName() + ", but ckan token was not set!");
    }

    ObjectMapper objMapper = CkanClient.getObjectMapper();
    String json = null;
    try {
      json = objMapper.writeValueAsString(resource);
    } catch (IOException e) {
      throw new JackanException("Couldn't serialize the provided CkanResource!", e);
    }
    return postHttp(
            ResourceResponse.class,
            "/api/3/action/resource_create",
            json,
            ContentType.APPLICATION_JSON)
        .result;
  }