/*******************************************************************************
* Copyright (c) 2011,2013 IBM Corporation.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
*
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
*
* Masaki Wakao
* Yoshio Horiuchi
* Kohji Ohsawa
*******************************************************************************/
package org.eclipse.lyo.samples.excel.services.common;
import java.io.IOException;
import java.io.OutputStream;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
import org.eclipse.lyo.rio.core.IConstants;
import org.eclipse.lyo.samples.excel.adapter.common.AdapterRegistry;
import org.eclipse.lyo.samples.excel.adapter.common.ResourceAdapter;
import org.eclipse.lyo.samples.excel.adapter.common.ResourceSet;
//@Path(IConstants.SERVICE_SERVICES + "/{path:.+}")
@Path(IConstants.SERVICE_SERVICES + "/{projectId}/{excelfilename}/{id}")
public class ResourceService {
@GET
@Produces ({"application/rdf+xml", "application/xml"})
public StreamingOutput getResource (
@Context UriInfo uriInfo
){
String baseUrl = uriInfo.getBaseUri().toString() + IConstants.SERVICE_SERVICES;
ResourceAdapter adapter = AdapterRegistry.getAdapter(baseUrl);
ResourceSet resultSet = adapter.getResource(uriInfo.getAbsolutePath().toString());
return new ResourceSetWriter(resultSet);
}
@GET
@Produces ({"application/x-oslc-compact+xml"})
public StreamingOutput doGet(@PathParam("projectId") String projectId, @PathParam("id") String id, @Context UriInfo uriInfo) {
String title = "title"; //dummy
String shortTitle = "ChangeRequest " + id;
String resourceUri = uriInfo.getAbsolutePath().toString();
String smUrl = uriInfo.getBaseUri() + "services/compact-rendering?uri=" + uriInfo.getAbsolutePath().toString() + "&type=small&projectId=" + projectId + "&id=" + id;
String lgUrl = uriInfo.getBaseUri() + "services/compact-rendering?uri=" + uriInfo.getAbsolutePath().toString() + "&type=large&projectId=" + projectId + "&id=" + id;
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n");
sb.append("<rdf:RDF \n");
sb.append(" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" \n");
sb.append(" xmlns:dcterms=\"http://purl.org/dc/terms/\" \n");
sb.append(" xmlns:oslc=\"http://open-services.net/ns/core#\"> \n");
sb.append(" <oslc:Compact \n");
sb.append(" rdf:about=\"" + resourceUri + "\"> \n");
sb.append(" <dcterms:title>" + title + "</dcterms:title> \n");
sb.append(" <oslc:shortTitle>" + shortTitle + "</oslc:shortTitle> \n");
sb.append(" <oslc:icon rdf:resource=\"../oslc.png\" /> \n");
sb.append(" <oslc:smallPreview> \n");
sb.append(" <oslc:Preview> \n");
sb.append(" <oslc:document rdf:resource=\"" + smUrl + "\" /> \n");
sb.append(" <oslc:hintWidth>500px</oslc:hintWidth> \n");
sb.append(" <oslc:hintHeight>120px</oslc:hintHeight> \n");
sb.append(" </oslc:Preview> \n");
sb.append(" </oslc:smallPreview> \n");
sb.append(" <oslc:largePreview> \n");
sb.append(" <oslc:Preview> \n");
sb.append(" <oslc:document rdf:resource=\"" + lgUrl + "\" /> \n");
sb.append(" <oslc:hintWidth>500px</oslc:hintWidth> \n");
sb.append(" <oslc:hintHeight>500px</oslc:hintHeight> \n");
sb.append(" </oslc:Preview> \n");
sb.append(" </oslc:largePreview> \n");
sb.append(" </oslc:Compact> \n");
sb.append("</rdf:RDF>");
final String html = sb.toString();
return new StreamingOutput() {
public void write(OutputStream output) throws IOException, WebApplicationException {
byte[] out = html.getBytes();
output.write(out);
}
};
}
}