/** * Copyright (C) 2013 Colorado School of Mines * * This file is part of the Interface Software Development Kit (SDK). * * The InterfaceSDK is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The InterfaceSDK 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the InterfaceSDK. If not, see <http://www.gnu.org/licenses/>. */ package edu.mines.acmX.exhibit.module_management.metas; import java.util.HashMap; import java.util.Map; /** * A builder for a ModuleMetaData object. Simplifies the creation * of ModuleMetaData objects by storing data to be used to create * one until build is called. * * @author Andrew DeMaria * @author Austin Diviness */ public class ModuleMetaDataBuilder { // manifest top level private String packageName; private String className; // uses-sdk private String minSdkVersion, targetSdkVersion; // module definition private String iconPath, title, author, version; // inputs // document what boolean means Map<String, DependencyType> inputTypes = new HashMap<String, DependencyType>(); // required modules Map<String, DependencyType> moduleDependencies = new HashMap<String, DependencyType>(); private boolean optionalAll; public ModuleMetaDataBuilder() { optionalAll = false; } /** * Builds a ModuleMetaData object using the information previously passed * to the builder. * * @return ModuleMetaData instance */ public ModuleMetaData build() { return new ModuleMetaData( packageName, className, minSdkVersion, targetSdkVersion, iconPath, title, author, version, inputTypes, moduleDependencies, optionalAll); } public void setPackageName(String packageName) { this.packageName = packageName; } public void setClassName(String className) { this.className = className; } public void setMinSdkVersion(String minSdkVersion) { this.minSdkVersion = minSdkVersion; } public void setTargetSdkVersion(String targetSdkVersion) { this.targetSdkVersion = targetSdkVersion; } public void setIconPath(String iconPath) { this.iconPath = iconPath; } public void setTitle(String title) { this.title = title; } public void setAuthor(String author) { this.author = author; } public void setVersion(String version) { this.version = version; } public void setInputTypes(Map<String, DependencyType> inputTypes) { this.inputTypes = inputTypes; } public void addInputType(String inputType, DependencyType depend) { inputTypes.put(inputType, depend); } public void setModuleDependencies(Map<String, DependencyType> moduleDependencies) { this.moduleDependencies = moduleDependencies; } public void addModuleDependency(String input, DependencyType depend) { moduleDependencies.put(input, depend); } public void setOptionalAll(boolean opt) { optionalAll = opt; } }