view src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResources.java @ 50:64aa756c60cc

annotations ui can show and delete annotations now.
author casties
date Thu, 27 Sep 2012 17:12:08 +0200
parents 5e9d90461929
children b8ef15c8c4a5
line wrap: on
line source

/**
 * ReST API for accessing groups in the Annotation store.
 */
package de.mpiwg.itgroup.annotations.restlet;

import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.neo4j.graphdb.Node;
import org.restlet.data.Status;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;

import de.mpiwg.itgroup.annotations.Resource;
import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;


/**
 * API for accessing tags in the Annotation store.
 * 
 * @author dwinter
 *
 */
public class AnnotatorResources extends AnnotatorResourceImpl {
    protected String getAllowedMethodsForHeader() {
        return "OPTIONS,GET";
    }

    /**
     * GET with JSON content-type.
     * Parameters: 
     *   user: short user name
     *   uri: user uri
     *   
     * @param entity
     * @return
     */
    @Get("json")
    public Representation doGetJSON(Representation entity) {
        logger.debug("AnnotatorGroups doGetJSON!");
        setCorsHeaders();
       
        String jsonId = (String) getRequest().getAttributes().get("id");
        String uri = decodeJsonId(jsonId);
        
        logger.debug("resources-id=" + uri);

        if (uri==null){
        return getAllResources();
        } else {

        	return getResource(uri);
        }
    }
    
    protected Representation getResource(String uri){
    	  AnnotationStore store = getAnnotationStore();
    	  //String tagUri=NS.MPIWG_TAGS_URL+id;
          Node tagNode = store.getResourceNodeByUri(uri);
          Resource resource = store.createResourceFromNode(tagNode);
          JSONObject jo = new JSONObject();
          try {
              jo.put("id", encodeJsonId(resource.getUri()));
              jo.put("uri", resource.getUri());
          } catch (JSONException e) {
          }
          
          return new JsonRepresentation(jo);
    }
	protected Representation getAllResources() {
		JSONArray results = new JSONArray();
        AnnotationStore store = getAnnotationStore();
        
       
            List<Resource> resources = store.getResources(null, null);
            for (Resource resource : resources) {
                JSONObject jo = new JSONObject();
                try {
                	 jo.put("id", encodeJsonId(resource.getUri()));
                     jo.put("uri", resource.getUri());
                } catch (JSONException e) {
                }
                results.put(jo);
            }
        
        // assemble result object
        JSONObject result = new JSONObject();
        try {
            result.put("rows", results);
            result.put("total", results.length());
        } catch (JSONException e) {
            setStatus(Status.SERVER_ERROR_INTERNAL, "JSON Error");
            return null;
        }
        logger.debug("sending:");
        logger.debug(result);
        return new JsonRepresentation(result);
	}        	
        

    
}