All Downloads are FREE. Search and download functionalities are using the official Maven repository.

redis.clients.jedis.gears.resps.GearsLibraryInfo Maven / Gradle / Ivy

There is a newer version: 5.2.0
Show newest version
package redis.clients.jedis.gears.resps;

import redis.clients.jedis.Builder;
import redis.clients.jedis.util.KeyValue;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import static redis.clients.jedis.BuilderFactory.*;
import static redis.clients.jedis.gears.resps.FunctionInfo.FUNCTION_INFO_LIST;
import static redis.clients.jedis.gears.resps.StreamTriggerInfo.STREAM_TRIGGER_INFO_LIST;
import static redis.clients.jedis.gears.resps.TriggerInfo.KEYSPACE_TRIGGER_INFO_LIST;

public class GearsLibraryInfo {
  private final String apiVersion;
  private final List clusterFunctions;
  private final String code;
  private final String configuration;
  private final String engine;
  private final List functions;
  private final List keyspaceTriggers;
  private final String name;
  private final List pendingAsyncCalls;
  private final long pendingJobs;
  private final List streamTriggers;
  private final String user;

  public GearsLibraryInfo(String apiVersion, List clusterFunctions, String code, String configuration,
    String engine, List functions, List keyspaceTriggers, String name,
    List pendingAsyncCalls, long pendingJobs, List streamTriggers, String user) {
    this.apiVersion = apiVersion;
    this.clusterFunctions = clusterFunctions;
    this.code = code;
    this.configuration = configuration;
    this.engine = engine;
    this.functions = functions;
    this.keyspaceTriggers = keyspaceTriggers;
    this.name = name;
    this.pendingAsyncCalls = pendingAsyncCalls;
    this.pendingJobs = pendingJobs;
    this.streamTriggers = streamTriggers;
    this.user = user;
  }
  public String getApiVersion() {
    return apiVersion;
  }

  public List getClusterFunctions() {
    return clusterFunctions;
  }

  public String getCode() {
    return code;
  }

  public String getConfiguration() {
    return configuration;
  }

  public String getEngine() {
    return engine;
  }

  public List getFunctions() {
    return functions;
  }

  public List getKeyspaceTriggers() {
    return keyspaceTriggers;
  }

  public String getName() {
    return name;
  }

  public List getPendingAsyncCalls() {
    return pendingAsyncCalls;
  }

  public long getPendingJobs() {
    return pendingJobs;
  }

  public List getStreamTriggers() {
    return streamTriggers;
  }

  public String getUser() {
    return user;
  }

  public static final Builder GEARS_LIBRARY_INFO = new Builder() {
    @Override
    public GearsLibraryInfo build(Object data) {
      if (data == null) return null;
      List list = (List) data;
      if (list.isEmpty()) return null;

      String apiVersion = null;
      List clusterFunctions = Collections.emptyList();
      String code = null;
      String configuration = null;
      String engine = null;
      List functions = Collections.emptyList();
      List keyspaceTriggers = Collections.emptyList();
      String name = null;
      List pendingAsyncCalls = null;
      long pendingJobs = 0;
      List streamTriggers = Collections.emptyList();
      String user = null;

      if (list.get(0) instanceof KeyValue) {
        for (KeyValue kv : (List) list) {
          switch (STRING.build(kv.getKey())) {
            case "api_version":
              apiVersion = STRING.build(kv.getValue());
              break;
            case "cluster_functions":
              clusterFunctions = STRING_LIST.build(kv.getValue());
              break;
            case "configuration":
              configuration = STRING.build(kv.getValue());
              break;
            case "engine":
              engine = STRING.build(kv.getValue());
              break;
            case "functions":
              functions = FUNCTION_INFO_LIST.build(kv.getValue());
              break;
            case "keyspace_triggers":
              keyspaceTriggers = KEYSPACE_TRIGGER_INFO_LIST.build(kv.getValue());
              break;
            case "name":
              name = STRING.build(kv.getValue());
              break;
            case "pending_async_calls":
              pendingAsyncCalls = STRING_LIST.build(kv.getValue());
              break;
            case "pending_jobs":
              pendingJobs = LONG.build(kv.getValue());
              break;
            case "stream_triggers":
              streamTriggers = STREAM_TRIGGER_INFO_LIST.build(kv.getValue());
              break;
            case "user":
              user = STRING.build(kv.getValue());
              break;
            case "code":
              code = STRING.build(kv.getValue());
              break;
          }
        }
      } else {
        boolean withCode = list.size() > 23;
        int offset = withCode ? 2 : 0;
        apiVersion = STRING.build(list.get(1));
        clusterFunctions = STRING_LIST.build(list.get(3));
        code = withCode ? STRING.build(list.get(5)) : null;
        configuration = STRING.build(list.get(5 + offset));
        engine = STRING.build(list.get(7 + offset));
        functions = FUNCTION_INFO_LIST.build(list.get(9 + offset));
        keyspaceTriggers = KEYSPACE_TRIGGER_INFO_LIST.build(list.get(11 + offset));
        name = STRING.build(list.get(13 + offset));
        pendingAsyncCalls = STRING_LIST.build(list.get(15 + offset));
        pendingJobs = LONG.build(list.get(17 + offset));
        streamTriggers = STREAM_TRIGGER_INFO_LIST.build(list.get(19 + offset));
        user = STRING.build(list.get(21 + offset));
      }
      return new GearsLibraryInfo(apiVersion, clusterFunctions, code, configuration, engine, functions, keyspaceTriggers, name, pendingAsyncCalls, pendingJobs, streamTriggers, user);
    }
  };

  public static final Builder> GEARS_LIBRARY_INFO_LIST = new Builder>() {
    @Override
    public List build(Object data) {
      List list = (List) data;
      return list.stream().map(o -> GearsLibraryInfo.GEARS_LIBRARY_INFO.build(o)).collect(Collectors.toList());
    }
  };

}