⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listparameter.java

📁 Chord package into p2psim
💻 JAVA
字号:
/***************************************************************************
 *                                                                         *
 *                            ListParameter.java                           *
 *                            -------------------                          *
 *   date                 : 10.09.2004, 07:51                              *
 *   copyright            : (C) 2004-2008 Distributed and                  *
 *                              Mobile Systems Group                       *
 *                              Lehrstuhl fuer Praktische Informatik       *
 *                              Universitaet Bamberg                       *
 *                              http://www.uni-bamberg.de/pi/              *
 *   email                : sven.kaffille@uni-bamberg.de                   *
 *                          karsten.loesing@uni-bamberg.de                 *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program 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 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   A copy of the license can be found in the license.txt file supplied   *
 *   with this software or at: http://www.gnu.org/copyleft/gpl.html        *
 *                                                                         *
 ***************************************************************************/

package de.uniba.wiai.lspi.chord.console.command;

import java.util.List;
import java.util.LinkedList;

import de.uniba.wiai.lspi.chord.console.Main;
import de.uniba.wiai.lspi.util.console.ConsoleException;

/**
 * This class represents a list of names, that are provided to some commands as
 * for example for {@link CreateNodes} with parameter
 * {@link CreateNodes#NAMES_PARAM}.
 * 
 * @author sven
 * @version 1.0.5
 */
class ListParameter {

	/**
	 * Character (as String) that separates the entries of the list, that is
	 * represented as a String.
	 */
	protected static final String SEPARATOR = "_";

	/**
	 * The name of the list parameter that is represented by this.
	 */
	private String paramName;

	/**
	 * The String representing the list. Entries are separated by
	 * {@link #SEPARATOR}.
	 */
	private String list;

	/**
	 * <code>true</code> if the list may be empty. 
	 */
	private boolean mayBeEmpty;

	/**
	 * Creates a new instance of ListParameter. This class represents a
	 * parameter that has been passed to a command in {@link Main} and takes a
	 * list of values as value for the parameter. The values have to be
	 * separated by {@link #SEPARATOR}
	 * 
	 * @param paramName1
	 * @param list1
	 * @param mayBeEmpty1
	 */
	ListParameter(String paramName1, String list1, boolean mayBeEmpty1) {
		this.paramName = paramName1;
		this.list = list1;
		this.mayBeEmpty = mayBeEmpty1;
	}

	/**
	 * Returns the list represented by {@link #list} , that was provided as
	 * parameter to the constructor, as a {@link List} that contains the single
	 * values, that are in the list, as Strings.
	 * 
	 * @return {@link List} containing the single values contained in
	 *         {@link #list} as Strings. An empty List is returned if no value
	 *         could be found.
	 * @throws ConsoleException
	 */
	List<String> getList() throws ConsoleException {
		if ((!this.mayBeEmpty)
				&& ((this.list == null) || (this.list.length() == 0))) {
			throw new ConsoleException("No value provided for "
					+ this.paramName + " parameter.");
		}

		if ((this.list == null) || (this.list.length() == 0)) {
			return new LinkedList<String>();
		}

		List<String> stringList = new LinkedList<String>();
		int separatorIndex = this.list.indexOf(SEPARATOR);
		while (separatorIndex != -1) {
			String name = this.list.substring(0, separatorIndex);
			if (!(name == null) && !(name.length() == 0)) {
				stringList.add(name);
			}
			/* remove name and separator */
			this.list = this.list.substring(separatorIndex + 1);
			separatorIndex = this.list.indexOf(SEPARATOR);
		}
		/* do not forget rest of String */
		if (!(this.list == null) && !(this.list.length() == 0)) {
			stringList.add(this.list);
		}

		if ((!this.mayBeEmpty) && (stringList.size() == 0)) {
			throw new ConsoleException("No value provided for "
					+ this.paramName + " parameter.");
		}

		return stringList;
	}

	/**
	 * @return The String representation of the list contained by this. 
	 */
	String getStringList() {
		return this.list;
	}

	/**
	 * @param toAdd
	 */
	void add(String toAdd) {
		if ((this.list == null) || (this.list.length() == 0)) {
			this.list = toAdd;
		} else {
			this.list += SEPARATOR + toAdd;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -