package com.lambdaworks.redis; import static com.lambdaworks.redis.protocol.CommandKeyword.*; import static com.lambdaworks.redis.protocol.CommandType.*; import com.lambdaworks.redis.protocol.CommandArgs; /** * * Argument list builder for the redis <a href="http://redis.io/commands/client-kill">CLIENT KILL</a> command. Static import the * methods from {@link Builder} and chain the method calls: {@code id(1).skipme()}. * * @author Mark Paluch * @since 3.0 */ public class KillArgs { private static enum Type { NORMAL, SLAVE, PUBSUB } private Boolean skipme; private String addr; private Long id; private Type type; /** * Static builder methods. */ public static class Builder { /** * Utility constructor. */ private Builder() { } public static KillArgs skipme() { return new KillArgs().skipme(); } public static KillArgs addr(String addr) { return new KillArgs().addr(addr); } public static KillArgs id(long id) { return new KillArgs().id(id); } public static KillArgs typePubsub() { return new KillArgs().type(Type.PUBSUB); } public static KillArgs typeNormal() { return new KillArgs().type(Type.NORMAL); } public static KillArgs typeSlave() { return new KillArgs().type(Type.SLAVE); } } public KillArgs skipme() { return this.skipme(true); } public KillArgs skipme(boolean state) { this.skipme = state; return this; } public KillArgs addr(String addr) { this.addr = addr; return this; } public KillArgs id(long id) { this.id = id; return this; } public KillArgs type(Type type) { this.type = type; return this; } <K, V> void build(CommandArgs<K, V> args) { if (skipme != null) { args.add(SKIPME).add(skipme.booleanValue() ? "yes" : "no"); } if (id != null) { args.add(ID).add(id); } if (addr != null) { args.add(ADDR).add(addr); } if (type != null) { args.add(TYPE).add(type.name().toLowerCase()); } } }