/******************************************************************************* * Copyright (c) 2010 Philipp Kursawe. * 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: * Philipp Kursawe (phil.kursawe@gmail.com) - initial API and implementation ******************************************************************************/ package copyto.target.http.core.internal; import java.util.Collection; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.prefs.Preferences; import copyto.core.Copyable; import copyto.core.Persistable; import copyto.core.Results; import copyto.core.TargetFactory; import copyto.core.TargetParam; import copyto.core.models.AbstractTargetModel; import copyto.core.models.TargetParamsModel; import copyto.target.http.core.HttpTarget; import copyto.target.http.core.ResponseHandler; import copyto.target.http.core.ResponseHandlerDescriptor; /** * * @author <a href="mailto:phil.kursawe@gmail.com">Philipp Kursawe</a> * */ public class HttpTargetModel extends AbstractTargetModel implements HttpTarget { private static final long serialVersionUID = 3069654670412516519L; private String host; private ResponseHandlerDescriptor responseHandlerDesc; private TargetParamsModel params = new TargetParamsModel(); public HttpTargetModel(TargetFactory desc) { super(desc); host = "http://pastebin.com"; } public void setHost(String host) { firePropertyChange("host", this.host, this.host = host); } public String getHost() { return host; } public String getSummary() { return getHost(); } @Override public void load(Preferences preferences) { super.load(preferences); setHost(preferences.get("host", getHost())); try { String id = preferences.get("responseHandler", null); responseHandlerDesc = ResponseHandlers.getInstance().find(id); if (responseHandlerDesc != null) { if (preferences.nodeExists("responseHandler")) { try { ResponseHandler handler = responseHandlerDesc.createResponseHandler(); if (handler instanceof Persistable) { ((Persistable)handler).load(preferences.node("responseHandler")); } } catch (CoreException e) { } } } } catch (BackingStoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } params.load(preferences); } public void setResponseHandlerDescriptor( ResponseHandlerDescriptor responseHandlerDesc) { firePropertyChange("responseHandlerDescriptor", this.responseHandlerDesc, this.responseHandlerDesc = responseHandlerDesc); } public ResponseHandlerDescriptor getResponseHandlerDescriptor() { return responseHandlerDesc; } @Override public void save(Preferences preferences) { super.save(preferences); preferences.put("host", getHost()); if (responseHandlerDesc != null) { preferences.put("responseHandler", responseHandlerDesc.getId()); Preferences handlerNode = preferences.node("responseHandler"); try { ResponseHandler handler = responseHandlerDesc.createResponseHandler(); if (handler instanceof Persistable) { ((Persistable)handler).save(handlerNode); } } catch (CoreException e) { } } params.save(preferences); } public Results transfer(IProgressMonitor monitor, Copyable... copyables) { HttpProtocol protocol = new HttpProtocol(); return protocol.transfer(monitor, this, copyables); } public ResponseHandler getResponseHandler() throws CoreException { return responseHandlerDesc.createResponseHandler(); } public Collection<TargetParam<?>> getParams() { return params.getParams(); } public void setParams(Collection<TargetParam<?>> params) { this.params.setParams(params); } }