
de.tsl2.nano.incubation.terminal.item.Input Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tsl2.nano.terminal Show documentation
Show all versions of tsl2.nano.terminal Show documentation
TSL2 Framework Terminal (Console Application Framework named SIShell, providing Actions, Options, Commands, Inputs, lots of Selectors, PlatformManagement)
/*
* File: $HeadURL$
* Id : $Id$
*
* created by: Tom
* created on: 24.12.2014
*
* Copyright: (c) Thomas Schneider 2014, all rights reserved
*/
package de.tsl2.nano.incubation.terminal.item;
import java.io.PrintStream;
import java.io.InputStream;
import java.util.Properties;
import org.simpleframework.xml.core.Commit;
import de.tsl2.nano.action.IConstraint;
import de.tsl2.nano.core.util.StringUtil;
import de.tsl2.nano.core.util.Util;
import de.tsl2.nano.incubation.terminal.IItem;
/**
*
* @author Tom
* @version $Revision$
*/
public class Input extends AItem {
/** serialVersionUID */
private static final long serialVersionUID = -3385405996942538232L;
/**
* constructor
*/
public Input() {
super();
type = Type.Input;
}
public Input(String name, T value, String description) {
this(name, null, value, description);
}
public Input(String name, T value, String description, boolean nullable) {
this(name, null, value, description);
getConstraints().setNullable(nullable);
}
public Input(String name, IConstraint constraints, T value, String description) {
this(name, constraints, value, description, true);
}
/**
* constructor
* @param name
* @param constraints
* @param type
* @param value
*/
public Input(String name, IConstraint constraints, T value, String description, boolean nullable) {
super(name, constraints, Type.Input, value, description);
getConstraints().setNullable(nullable);
initDeserialization();
}
@Override
public IItem react(IItem caller, String input, InputStream in, PrintStream out, Properties env) {
if (Util.isEmpty(input)) {
input = StringUtil.toString(getValue());
}
return super.react(caller, input, in, out, env);
}
@Override
public String ask(Properties env) {
return StringUtil.substring(super.ask(env), null, POSTFIX_QUESTION) + " (" + getValue() + ")" + POSTFIX_QUESTION;
}
@Override
@Commit
protected void initDeserialization() {
super.initDeserialization();
if (!getConstraints().isNullable()) {
prefix.setCharAt(PREFIX, '§');
} else {
prefix.setCharAt(PREFIX, '*');
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy