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

com.redis.spring.batch.reader.EvalFunction Maven / Gradle / Ivy

package com.redis.spring.batch.reader;

import java.util.Iterator;
import java.util.List;
import java.util.function.Function;

import com.redis.spring.batch.common.BatchUtils;

import io.lettuce.core.codec.RedisCodec;

public class EvalFunction implements Function, MemKeyValue> {

	private final Function toStringValueFunction;

	public EvalFunction(RedisCodec codec) {
		this.toStringValueFunction = BatchUtils.toStringValueFunction(codec);
	}

	@SuppressWarnings("unchecked")
	@Override
	public MemKeyValue apply(List list) {
		Iterator iterator = list.iterator();
		MemKeyValue keyValue = new MemKeyValue<>();
		if (iterator.hasNext()) {
			keyValue.setKey((K) iterator.next());
		}
		if (iterator.hasNext()) {
			keyValue.setTtl((Long) iterator.next());
		}
		if (iterator.hasNext()) {
			keyValue.setType(toString(iterator.next()));
		}
		if (iterator.hasNext()) {
			keyValue.setMem((Long) iterator.next());
		}
		if (iterator.hasNext()) {
			keyValue.setValue((T) iterator.next());
		}
		return keyValue;

	}

	@SuppressWarnings("unchecked")
	protected String toString(Object value) {
		return toStringValueFunction.apply((V) value);
	}

}