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