Esempio n. 1
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;
  }
Esempio n. 2
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;
  }