Improve ARNullable
This commit is contained in:
parent
48240b59c2
commit
6f8da0a9f8
@ -1,44 +1,106 @@
|
|||||||
package com.massivecraft.massivecore.cmd.arg;
|
package com.massivecraft.massivecore.cmd.arg;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveException;
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
|
|
||||||
public class ARNullable<T> extends ARWrapper<T>
|
public class ARNullable<T> extends ARAbstract<T>
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// FIELDS
|
// FIELDS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected AR<T> innerArgReader;
|
protected AR<T> innerArgReader;
|
||||||
@Override public AR<T> getInnerArgReader() { return this.innerArgReader; }
|
public AR<T> getInnerArgReader() { return this.innerArgReader; }
|
||||||
|
|
||||||
|
protected Collection<String> nulls;
|
||||||
|
public Collection<String> getNulls() { return this.nulls; }
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// INSTANCE & CONSTRUCT
|
// INSTANCE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static <T> ARNullable<T> get(AR<T> inner, Collection<String> nulls)
|
||||||
|
{
|
||||||
|
return new ARNullable<T>(inner, nulls);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> ARNullable<T> get(AR<T> inner, String... nulls)
|
||||||
|
{
|
||||||
|
return new ARNullable<T>(inner, nulls);
|
||||||
|
}
|
||||||
|
|
||||||
public static <T> ARNullable<T> get(AR<T> inner)
|
public static <T> ARNullable<T> get(AR<T> inner)
|
||||||
{
|
{
|
||||||
return new ARNullable<T>(inner);
|
return new ARNullable<T>(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public ARNullable(AR<T> inner, Collection<String> nulls)
|
||||||
|
{
|
||||||
|
if (inner == null) throw new NullPointerException("inner");
|
||||||
|
if (nulls == null) nulls = Collections.emptySet();
|
||||||
|
|
||||||
|
this.innerArgReader = inner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ARNullable(AR<T> inner, String... nulls)
|
||||||
|
{
|
||||||
|
this(inner, Arrays.asList(nulls));
|
||||||
|
}
|
||||||
|
|
||||||
public ARNullable(AR<T> inner)
|
public ARNullable(AR<T> inner)
|
||||||
{
|
{
|
||||||
if (inner == null) throw new IllegalArgumentException("inner param is null");
|
this(inner, MassiveCore.NOTHING_REMOVE);
|
||||||
this.innerArgReader = inner;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTypeName()
|
||||||
|
{
|
||||||
|
return this.getInnerArgReader().getTypeName();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T read(String arg, CommandSender sender) throws MassiveException
|
public T read(String arg, CommandSender sender) throws MassiveException
|
||||||
{
|
{
|
||||||
if (MassiveCore.NOTHING_REMOVE.contains(arg)) return null;
|
// Null?
|
||||||
|
if (this.getNulls().contains(arg)) return null;
|
||||||
|
|
||||||
|
// Inner
|
||||||
return this.getInnerArgReader().read(arg, sender);
|
return this.getInnerArgReader().read(arg, sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getTabList(CommandSender sender, String arg)
|
||||||
|
{
|
||||||
|
// Create Ret
|
||||||
|
List<String> ret = new MassiveList<String>(this.getNulls());
|
||||||
|
|
||||||
|
// Fill Ret
|
||||||
|
ret.addAll(this.getInnerArgReader().getTabList(sender, arg));
|
||||||
|
|
||||||
|
// Return Ret
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean allowSpaceAfterTab()
|
||||||
|
{
|
||||||
|
return this.getInnerArgReader().allowSpaceAfterTab();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user