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

com.logicbus.kvalue.xscript.list.KVLInsert Maven / Gradle / Ivy

package com.logicbus.kvalue.xscript.list;

import java.util.Map;

import com.alogic.xscript.ExecuteWatcher;
import com.alogic.xscript.Logiclet;
import com.alogic.xscript.LogicletContext;
import com.logicbus.kvalue.xscript.KVRowOperation;
import com.anysoft.util.Properties;
import com.anysoft.util.PropertiesConstants;
import com.logicbus.kvalue.core.KeyValueRow;
import com.logicbus.kvalue.core.ListRow;

/**
 * Redis Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。
 * 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
* 如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 * * @author zhongyi * */ public class KVLInsert extends KVRowOperation { protected String value = ""; /** * 参照值;会在参照值前或后插入新的值 */ protected String pivot = ""; protected String insertAfter = "false"; // protected String delimeter = ""; public KVLInsert(String tag, Logiclet p) { super(tag, p); } @Override public void configure(Properties p) { super.configure(p); value = PropertiesConstants.getRaw(p, "value", value); insertAfter = PropertiesConstants.getRaw(p, "insertAfter", insertAfter); pivot = PropertiesConstants.getRaw(p, "pivot", pivot); } @Override protected void onExecute(KeyValueRow row, Map root, Map current, LogicletContext ctx, ExecuteWatcher watcher) { if (row instanceof ListRow) { ListRow r = (ListRow) row; String result=String .valueOf(r.insert(ctx.transform(pivot), ctx.transform(value), getBoolean(ctx.transform(insertAfter), false))); ctx.SetValue(id, result); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy