/******************************************************************************* * Copyright (c) 2011 The University of York. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Louis Rose - initial API and implementation ******************************************************************************/ package simulator.scl.factory; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.eclipse.emf.ecore.resource.Resource; import simulator.scl.ConfigPackage; import simulator.scl.Configuration; import simulator.util.EmfUtil; public class UploadedConfigurationFactory implements ConfigurationFactory { private final HttpServletRequest request; public UploadedConfigurationFactory(HttpServletRequest request) { this.request = request; } public Configuration createConfiguration() throws IOException { try { final FileItemFactory factory = new DiskFileItemFactory(); final ServletFileUpload upload = new ServletFileUpload(factory); final InputStream stream = upload.getItemIterator(request).next().openStream(); final Resource resource = EmfUtil.createResource(ConfigPackage.eINSTANCE); resource.load(stream, Collections.emptyMap()); return (Configuration)resource.getContents().get(0); } catch (FileUploadException e) { throw new IOException("Error encountered whilst uploading file", e); } } }