/*******************************************************************************
* Copyright (c) 2012 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:
*
* Keith Wells - initial API and implementation
* Sam Padgett - initial API and Implementation
* Jim Conallen - initial API and implementation
*
*******************************************************************************/
package org.eclipse.lyo.samples.sharepoint.adapter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.eclipse.lyo.samples.sharepoint.SharepointConnector;
import org.eclipse.lyo.samples.sharepoint.core.IConstants;
import org.eclipse.lyo.samples.sharepoint.exceptions.ShareServiceException;
import org.eclipse.lyo.samples.sharepoint.services.ShareBaseService;
/**
* Servlet implementation class ResourceFactory
*/
public class ResourceCreatorService extends ShareBaseService {
private static final long serialVersionUID = 7466374797163202313L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String collection = req.getParameter("collection");
req.setAttribute("collection", collection);
RequestDispatcher rd = req.getRequestDispatcher("/sharepoint/resource_creator.jsp"); //$NON-NLS-1$
rd.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String title = request.getParameter("title"); //$NON-NLS-1$
String description = request.getParameter("description"); //$NON-NLS-1$
String filename = request.getParameter("file");
String collection = request.getParameter("collection"); //"Empire";
try {
boolean isFileUpload = ServletFileUpload.isMultipartContent(request);
String contentType = request.getContentType();
if( !isFileUpload && !IConstants.CT_RDF_XML.equals(contentType) ) {
throw new ShareServiceException(IConstants.SC_UNSUPPORTED_MEDIA_TYPE);
}
InputStream content = request.getInputStream();
if( isFileUpload ) {
// being uploaded from a web page
try{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
@SuppressWarnings("unchecked")
List<FileItem> items = upload.parseRequest(request);
// find the first (and only) file resource in the post
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
// this is a form field, maybe we can accept a title or descr?
} else {
final SharepointConnector sc = SharepointInitializer.getSharepointConnector();
int rc = sc.createDocument(response, collection,item);
//String content = compactDocument(resource);
//System.out.println(content);
//response.setContentType(IConstants.CT_OSLC_COMPACT);
//response.setContentLength(content.getBytes().length);
//response.setStatus(IConstants.SC_OK);
//response.getWriter().write(content);
//Get Response?
//jsonResults.append( "\n] \n}" ); //$NON-NLS-1$
//response.setContentType(IConstants.CT_XML);
//response.getWriter().write(is.toString());
//response.setStatus(IConstants.SC_OK);
// all that may need to be done is to send a POST
// to Sharepoint, with stream content, Slug set and content_type
// slug = /Empire/name.doc
//response.setHeader(IConstants.HDR_SLUG, "/Empire" + filename);
//response.setHeader(IConstants.HDR_CONTENT_TYPE, contentType);
//response.sendRedirect(response.encodeRedirectURL(SharepointInitializer.getSharepointUri() + "/Empire"));
//RequestDispatcher rd = request.getRequestDispatcher(SharepointInitializer.getSharepointUri() + "/Empire");
//rd.forward(request, response);
//response.setStatus(IConstants.SC_CREATED);
//response.setHeader(IConstants.HDR_LOCATION, uri);
//RequestDispatcher rd = request.getRequestDispatcher("/resource/Empire/5"); //$NON-NLS-1$
//rd.forward(request, response);
}
}
} catch( Exception e ) {
throw new ShareServiceException(e);
}
}
} catch( Exception e) {
throw new ShareServiceException(e);
}
}
}