/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ package org.cloudml.core.builders; import java.util.HashMap; import org.cloudml.core.Resource; public class ResourceBuilder extends WithPropertyBuilder<Resource, ResourceBuilder> { private String install; private String configure; private String start; private String stop; private String retrieve; private HashMap<String, String> uploads; public ResourceBuilder() { install = ""; configure = ""; start = ""; stop = ""; retrieve = ""; uploads = new HashMap<String, String>(); } public ResourceBuilder installedBy(String command) { this.install = command; return next(); } public ResourceBuilder startedBy(String command) { start = command; return next(); } public ResourceBuilder stoppedBy(String command) { stop = command; return next(); } public ResourceBuilder retrievedBy(String command) { retrieve = command; return next(); } public ResourceBuilder configuredBy(String command) { configure = command; return next(); } public ResourceBuilder withUpload(String from, String to) { return next(); } @Override public Resource build() { final Resource resource = new Resource(); super.prepare(resource); resource.setStartCommand(start); resource.setStopCommand(stop); resource.setConfigureCommand(configure); resource.setInstallCommand(install); resource.setRetrieveCommand(retrieve); resource.setUploadCommand(uploads); return resource; } @Override public ResourceBuilder next() { return this; } }