This commit is contained in:
@@ -12,7 +12,7 @@ import java.util.*;
|
|||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.logging.*;
|
import java.util.logging.*;
|
||||||
import javax.annotation.*;
|
import javax.annotation.*;
|
||||||
import org.redkale.net.sncp.*;
|
import org.redkale.service.*;
|
||||||
import org.redkale.source.*;
|
import org.redkale.source.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ public abstract class WebSocketNode {
|
|||||||
@Resource(name = "SERVER_ADDR")
|
@Resource(name = "SERVER_ADDR")
|
||||||
protected InetSocketAddress localSncpAddress; //为SncpServer的服务address
|
protected InetSocketAddress localSncpAddress; //为SncpServer的服务address
|
||||||
|
|
||||||
@SncpRemote
|
@DynRemote
|
||||||
protected WebSocketNode remoteNode;
|
protected WebSocketNode remoteNode;
|
||||||
|
|
||||||
//存放所有用户分布在节点上的队列信息,Set<InetSocketAddress> 为 sncpnode 的集合
|
//存放所有用户分布在节点上的队列信息,Set<InetSocketAddress> 为 sncpnode 的集合
|
||||||
@@ -55,7 +55,7 @@ public abstract class WebSocketNode {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract int sendMessage(@SncpParam(SncpParamType.TargetAddress) InetSocketAddress targetAddress, Serializable groupid, boolean recent, Serializable message, boolean last);
|
protected abstract int sendMessage(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid, boolean recent, Serializable message, boolean last);
|
||||||
|
|
||||||
protected abstract void connect(Serializable groupid, InetSocketAddress addr);
|
protected abstract void connect(Serializable groupid, InetSocketAddress addr);
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.redkale.convert.bson.*;
|
|||||||
import org.redkale.net.*;
|
import org.redkale.net.*;
|
||||||
import org.redkale.service.*;
|
import org.redkale.service.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
import org.redkale.service.DynRemote;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service Node Communicate Protocol
|
* Service Node Communicate Protocol
|
||||||
@@ -669,7 +670,7 @@ public abstract class Sncp {
|
|||||||
for (Field field : loop.getDeclaredFields()) {
|
for (Field field : loop.getDeclaredFields()) {
|
||||||
int mod = field.getModifiers();
|
int mod = field.getModifiers();
|
||||||
if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) continue;
|
if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) continue;
|
||||||
if (field.getAnnotation(SncpRemote.class) != null) {
|
if (field.getAnnotation(DynRemote.class) != null) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
if (remoteTransport == null) {
|
if (remoteTransport == null) {
|
||||||
List<Transport> list = new ArrayList<>();
|
List<Transport> list = new ArrayList<>();
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.net.sncp;
|
package org.redkale.net.sncp;
|
||||||
|
|
||||||
import static org.redkale.net.sncp.SncpRequest.*;
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
@@ -18,7 +17,10 @@ import java.util.logging.*;
|
|||||||
import org.redkale.convert.bson.*;
|
import org.redkale.convert.bson.*;
|
||||||
import org.redkale.convert.json.*;
|
import org.redkale.convert.json.*;
|
||||||
import org.redkale.net.*;
|
import org.redkale.net.*;
|
||||||
|
import static org.redkale.net.sncp.SncpRequest.*;
|
||||||
|
import org.redkale.service.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
import org.redkale.service.DynCall;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -39,9 +41,13 @@ public final class SncpClient {
|
|||||||
|
|
||||||
protected final Attribute[] paramAttrs; // 为null表示无SncpCall处理,index=0固定为null, 其他为参数标记的SncpCall回调方法
|
protected final Attribute[] paramAttrs; // 为null表示无SncpCall处理,index=0固定为null, 其他为参数标记的SncpCall回调方法
|
||||||
|
|
||||||
protected final int targetAddressParamIndex;
|
protected final int handlerFuncParamIndex;
|
||||||
|
|
||||||
protected final int sourceAddressParamIndex;
|
protected final int handlerAttachParamIndex;
|
||||||
|
|
||||||
|
protected final int addressTargetParamIndex;
|
||||||
|
|
||||||
|
protected final int addressSourceParamIndex;
|
||||||
|
|
||||||
public SncpAction(Method method, DLong actionid) {
|
public SncpAction(Method method, DLong actionid) {
|
||||||
this.actionid = actionid;
|
this.actionid = actionid;
|
||||||
@@ -56,29 +62,36 @@ public final class SncpClient {
|
|||||||
Annotation[][] anns = method.getParameterAnnotations();
|
Annotation[][] anns = method.getParameterAnnotations();
|
||||||
int targetAddrIndex = -1;
|
int targetAddrIndex = -1;
|
||||||
int sourceAddrIndex = -1;
|
int sourceAddrIndex = -1;
|
||||||
|
int handlerAttachIndex = -1;
|
||||||
|
int handlerFuncIndex = -1;
|
||||||
boolean hasattr = false;
|
boolean hasattr = false;
|
||||||
Attribute[] atts = new Attribute[paramTypes.length + 1];
|
Attribute[] atts = new Attribute[paramTypes.length + 1];
|
||||||
if (anns.length > 0) {
|
if (anns.length > 0) {
|
||||||
Class<?>[] params = method.getParameterTypes();
|
Class<?>[] params = method.getParameterTypes();
|
||||||
|
for (int i = 0; i < params.length; i++) {
|
||||||
|
if (CompletionHandler.class.isAssignableFrom(params[i])) {
|
||||||
|
handlerFuncIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int i = 0; i < anns.length; i++) {
|
for (int i = 0; i < anns.length; i++) {
|
||||||
if (anns[i].length > 0) {
|
if (anns[i].length > 0) {
|
||||||
for (Annotation ann : anns[i]) {
|
for (Annotation ann : anns[i]) {
|
||||||
if (ann.annotationType() == SncpParam.class) {
|
if (ann.annotationType() == DynAttachment.class) {
|
||||||
SncpParam sncpParam = (SncpParam) ann;
|
handlerAttachIndex = i;
|
||||||
if (sncpParam.value() == SncpParamType.TargetAddress && SocketAddress.class.isAssignableFrom(params[i])) {
|
} else if (ann.annotationType() == DynTargetAddress.class && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||||
targetAddrIndex = i;
|
targetAddrIndex = i;
|
||||||
} else if (sncpParam.value() == SncpParamType.SourceAddress && SocketAddress.class.isAssignableFrom(params[i])) {
|
} else if (ann.annotationType() == DynSourceAddress.class && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||||
sourceAddrIndex = i;
|
sourceAddrIndex = i;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Annotation ann : anns[i]) {
|
for (Annotation ann : anns[i]) {
|
||||||
if (ann.annotationType() == SncpCall.class) {
|
if (ann.annotationType() == DynCall.class) {
|
||||||
try {
|
try {
|
||||||
atts[i + 1] = ((SncpCall) ann).value().newInstance();
|
atts[i + 1] = ((DynCall) ann).value().newInstance();
|
||||||
hasattr = true;
|
hasattr = true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, SncpCall.class.getSimpleName() + ".attribute cannot a newInstance for" + method, e);
|
logger.log(Level.SEVERE, DynCall.class.getSimpleName() + ".attribute cannot a newInstance for" + method, e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -86,9 +99,12 @@ public final class SncpClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.targetAddressParamIndex = targetAddrIndex;
|
this.addressTargetParamIndex = targetAddrIndex;
|
||||||
this.sourceAddressParamIndex = sourceAddrIndex;
|
this.addressSourceParamIndex = sourceAddrIndex;
|
||||||
|
this.handlerFuncParamIndex = handlerFuncIndex;
|
||||||
|
this.handlerAttachParamIndex = handlerAttachIndex;
|
||||||
this.paramAttrs = hasattr ? atts : null;
|
this.paramAttrs = hasattr ? atts : null;
|
||||||
|
if (this.handlerFuncParamIndex >= 0 && method.getReturnType() != void.class) throw new RuntimeException(method + " has CompletionHandler type parameter but return type is not void");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -209,10 +225,13 @@ public final class SncpClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public <T> T remote(final BsonConvert convert, Transport transport, final int index, final Object... params) {
|
public <T> T remote(final BsonConvert convert, Transport transport, final int index, final Object... params) {
|
||||||
Future<byte[]> future = remote(convert, transport, actions[index], params);
|
final SncpAction action = actions[index];
|
||||||
|
final CompletionHandler handlerFunc = action.handlerFuncParamIndex >= 0 ? (CompletionHandler) params[action.handlerFuncParamIndex] : null;
|
||||||
|
if (action.handlerFuncParamIndex >= 0) params[action.handlerFuncParamIndex] = null;
|
||||||
|
Future<byte[]> future = remote0(handlerFunc, convert, transport, action, params);
|
||||||
|
if (handlerFunc != null) return null;
|
||||||
final BsonReader in = convert.pollBsonReader();
|
final BsonReader in = convert.pollBsonReader();
|
||||||
try {
|
try {
|
||||||
final SncpAction action = actions[index];
|
|
||||||
in.setBytes(future.get(5, TimeUnit.SECONDS));
|
in.setBytes(future.get(5, TimeUnit.SECONDS));
|
||||||
byte i;
|
byte i;
|
||||||
while ((i = in.readByte()) != 0) {
|
while ((i = in.readByte()) != 0) {
|
||||||
@@ -232,7 +251,7 @@ public final class SncpClient {
|
|||||||
if (!run || transports == null || transports.length < 1) return;
|
if (!run || transports == null || transports.length < 1) return;
|
||||||
remote(convert, transports[0], index, params);
|
remote(convert, transports[0], index, params);
|
||||||
for (int i = 1; i < transports.length; i++) {
|
for (int i = 1; i < transports.length; i++) {
|
||||||
remote(convert, transports[i], actions[index], params);
|
remote0(null, convert, transports[i], actions[index], params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,22 +259,16 @@ public final class SncpClient {
|
|||||||
if (!run || transports == null || transports.length < 1) return;
|
if (!run || transports == null || transports.length < 1) return;
|
||||||
if (executor != null) {
|
if (executor != null) {
|
||||||
executor.accept(() -> {
|
executor.accept(() -> {
|
||||||
remote(convert, transports[0], index, params);
|
remote(convert, transports, run, index, params);
|
||||||
for (int i = 1; i < transports.length; i++) {
|
|
||||||
remote(convert, transports[i], actions[index], params);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
remote(convert, transports[0], index, params);
|
remote(convert, transports, run, index, params);
|
||||||
for (int i = 1; i < transports.length; i++) {
|
|
||||||
remote(convert, transports[i], actions[index], params);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Future<byte[]> remote(final BsonConvert convert, final Transport transport, final SncpAction action, final Object... params) {
|
private Future<byte[]> remote0(final CompletionHandler handler, final BsonConvert convert, final Transport transport, final SncpAction action, final Object... params) {
|
||||||
Type[] myparamtypes = action.paramTypes;
|
Type[] myparamtypes = action.paramTypes;
|
||||||
if (action.sourceAddressParamIndex >= 0) params[action.sourceAddressParamIndex] = this.address;
|
if (action.addressSourceParamIndex >= 0) params[action.addressSourceParamIndex] = this.address;
|
||||||
final BsonWriter writer = convert.pollBsonWriter(transport.getBufferSupplier()); // 将head写入
|
final BsonWriter writer = convert.pollBsonWriter(transport.getBufferSupplier()); // 将head写入
|
||||||
writer.writeTo(DEFAULT_HEADER);
|
writer.writeTo(DEFAULT_HEADER);
|
||||||
for (int i = 0; i < params.length; i++) {
|
for (int i = 0; i < params.length; i++) {
|
||||||
@@ -264,7 +277,7 @@ public final class SncpClient {
|
|||||||
final int reqBodyLength = writer.count() - HEADER_SIZE; //body总长度
|
final int reqBodyLength = writer.count() - HEADER_SIZE; //body总长度
|
||||||
final long seqid = System.nanoTime();
|
final long seqid = System.nanoTime();
|
||||||
final DLong actionid = action.actionid;
|
final DLong actionid = action.actionid;
|
||||||
final SocketAddress addr = action.targetAddressParamIndex >= 0 ? (SocketAddress) params[action.targetAddressParamIndex] : null;
|
final SocketAddress addr = action.addressTargetParamIndex >= 0 ? (SocketAddress) params[action.addressTargetParamIndex] : null;
|
||||||
final AsyncConnection conn = transport.pollConnection(addr);
|
final AsyncConnection conn = transport.pollConnection(addr);
|
||||||
if (conn == null || !conn.isOpen()) {
|
if (conn == null || !conn.isOpen()) {
|
||||||
logger.log(Level.SEVERE, action.method + " sncp (params: " + jsonConvert.convertTo(params) + ") cannot connect " + (conn == null ? addr : conn.getRemoteAddress()));
|
logger.log(Level.SEVERE, action.method + " sncp (params: " + jsonConvert.convertTo(params) + ") cannot connect " + (conn == null ? addr : conn.getRemoteAddress()));
|
||||||
@@ -356,6 +369,24 @@ public final class SncpClient {
|
|||||||
future.set(this.body);
|
future.set(this.body);
|
||||||
transport.offerBuffer(buffer);
|
transport.offerBuffer(buffer);
|
||||||
transport.offerConnection(false, conn);
|
transport.offerConnection(false, conn);
|
||||||
|
if (handler != null) {
|
||||||
|
final Object handlerAttach = action.handlerAttachParamIndex >= 0 ? params[action.handlerAttachParamIndex] : null;
|
||||||
|
final BsonReader in = convert.pollBsonReader();
|
||||||
|
try {
|
||||||
|
in.setBytes(this.body);
|
||||||
|
byte i;
|
||||||
|
while ((i = in.readByte()) != 0) {
|
||||||
|
final Attribute attr = action.paramAttrs[i];
|
||||||
|
attr.set(params[i - 1], convert.convertFrom(in, attr.type()));
|
||||||
|
}
|
||||||
|
Object rs = convert.convertFrom(in, action.resultTypes);
|
||||||
|
handler.completed(rs, handlerAttach);
|
||||||
|
} catch (Exception e) {
|
||||||
|
handler.failed(e, handlerAttach);
|
||||||
|
} finally {
|
||||||
|
convert.offerBsonReader(in);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -364,6 +395,10 @@ public final class SncpClient {
|
|||||||
future.set(new RuntimeException(action.method + " sncp remote exec failed"));
|
future.set(new RuntimeException(action.method + " sncp remote exec failed"));
|
||||||
transport.offerBuffer(buffer);
|
transport.offerBuffer(buffer);
|
||||||
transport.offerConnection(true, conn);
|
transport.offerConnection(true, conn);
|
||||||
|
if (handler != null) {
|
||||||
|
final Object handlerAttach = action.handlerAttachParamIndex >= 0 ? params[action.handlerAttachParamIndex] : null;
|
||||||
|
handler.failed(exc, handlerAttach);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import jdk.internal.org.objectweb.asm.Type;
|
|||||||
import org.redkale.convert.bson.*;
|
import org.redkale.convert.bson.*;
|
||||||
import org.redkale.service.*;
|
import org.redkale.service.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
import org.redkale.service.DynCall;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -384,12 +385,12 @@ public final class SncpDynServlet extends SncpServlet {
|
|||||||
for (int i = 0; i < anns.length; i++) {
|
for (int i = 0; i < anns.length; i++) {
|
||||||
if (anns[i].length > 0) {
|
if (anns[i].length > 0) {
|
||||||
for (Annotation ann : anns[i]) {
|
for (Annotation ann : anns[i]) {
|
||||||
if (ann.annotationType() == SncpCall.class) {
|
if (ann.annotationType() == DynCall.class) {
|
||||||
try {
|
try {
|
||||||
atts[i + 1] = ((SncpCall) ann).value().newInstance();
|
atts[i + 1] = ((DynCall) ann).value().newInstance();
|
||||||
hasattr = true;
|
hasattr = true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, SncpCall.class.getSimpleName() + ".attribute cannot a newInstance for" + method, e);
|
logger.log(Level.SEVERE, DynCall.class.getSimpleName() + ".attribute cannot a newInstance for" + method, e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* To change this license header, choose License Headers in Project Properties.
|
|
||||||
* To change this template file, choose Tools | Templates
|
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
package org.redkale.net.sncp;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @see http://www.redkale.org
|
|
||||||
* @author zhangjx
|
|
||||||
*/
|
|
||||||
public enum SncpParamType {
|
|
||||||
/**
|
|
||||||
* SNCP协议中标记为来源地址参数, 该注解只能标记在类型为SocketAddress或InetSocketAddress的参数上。
|
|
||||||
*/
|
|
||||||
SourceAddress,
|
|
||||||
/**
|
|
||||||
* SNCP协议中标记为目标地址参数, 该注解只能标记在类型为SocketAddress或InetSocketAddress的参数上。
|
|
||||||
*/
|
|
||||||
TargetAddress;
|
|
||||||
}
|
|
||||||
@@ -7,6 +7,7 @@ package org.redkale.service;
|
|||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.function.*;
|
import java.util.function.*;
|
||||||
@@ -165,6 +166,11 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
return !entry.isExpired();
|
return !entry.isExpired();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exists(final CompletionHandler<Boolean, Serializable> handler, @DynAttachment final Serializable key) {
|
||||||
|
if (handler != null) handler.completed(exists(key), key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T get(Serializable key) {
|
public <T> T get(Serializable key) {
|
||||||
if (key == null) return null;
|
if (key == null) return null;
|
||||||
@@ -173,6 +179,11 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
return (T) entry.getValue();
|
return (T) entry.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void get(final CompletionHandler<T, Serializable> handler, @DynAttachment final Serializable key) {
|
||||||
|
if (handler != null) handler.completed(get(key), key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <T> T getAndRefresh(Serializable key) {
|
public <T> T getAndRefresh(Serializable key) {
|
||||||
@@ -183,6 +194,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
return (T) entry.getValue();
|
return (T) entry.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void getAndRefresh(final CompletionHandler<T, Serializable> handler, @DynAttachment final Serializable key) {
|
||||||
|
T rs = getAndRefresh(key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public void refresh(Serializable key) {
|
public void refresh(Serializable key) {
|
||||||
@@ -192,6 +209,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
entry.lastAccessed = (int) (System.currentTimeMillis() / 1000);
|
entry.lastAccessed = (int) (System.currentTimeMillis() / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void refresh(final CompletionHandler<Void, Serializable> handler, final Serializable key) {
|
||||||
|
refresh(key);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <T> void set(Serializable key, T value) {
|
public <T> void set(Serializable key, T value) {
|
||||||
@@ -208,12 +231,9 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
public <T> void set(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||||
public void setExpireSeconds(Serializable key, int expireSeconds) {
|
set(key, value);
|
||||||
if (key == null) return;
|
if (handler != null) handler.completed(null, key);
|
||||||
CacheEntry entry = container.get(key);
|
|
||||||
if (entry == null) return;
|
|
||||||
entry.expireSeconds = expireSeconds;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -231,6 +251,27 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void set(final CompletionHandler<Void, Serializable> handler, final int expireSeconds, @DynAttachment final Serializable key, final T value) {
|
||||||
|
set(expireSeconds, key, value);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@MultiRun
|
||||||
|
public void setExpireSeconds(Serializable key, int expireSeconds) {
|
||||||
|
if (key == null) return;
|
||||||
|
CacheEntry entry = container.get(key);
|
||||||
|
if (entry == null) return;
|
||||||
|
entry.expireSeconds = expireSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setExpireSeconds(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final int expireSeconds) {
|
||||||
|
setExpireSeconds(key, expireSeconds);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public void remove(Serializable key) {
|
public void remove(Serializable key) {
|
||||||
@@ -238,6 +279,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
container.remove(key);
|
container.remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key) {
|
||||||
|
remove(key);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <V> void appendListItem(Serializable key, V value) {
|
public <V> void appendListItem(Serializable key, V value) {
|
||||||
@@ -254,6 +301,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void appendListItem(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||||
|
appendListItem(key, value);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <V> void removeListItem(Serializable key, V value) {
|
public <V> void removeListItem(Serializable key, V value) {
|
||||||
@@ -263,6 +316,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
((List) entry.getValue()).remove(value);
|
((List) entry.getValue()).remove(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void removeListItem(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||||
|
removeListItem(key, value);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <V> void appendSetItem(Serializable key, V value) {
|
public <V> void appendSetItem(Serializable key, V value) {
|
||||||
@@ -279,6 +338,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void appendSetItem(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||||
|
appendSetItem(key, value);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@MultiRun
|
@MultiRun
|
||||||
public <V> void removeSetItem(Serializable key, V value) {
|
public <V> void removeSetItem(Serializable key, V value) {
|
||||||
@@ -288,6 +353,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
|||||||
((Set) entry.getValue()).remove(value);
|
((Set) entry.getValue()).remove(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void removeSetItem(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||||
|
removeSetItem(key, value);
|
||||||
|
if (handler != null) handler.completed(null, key);
|
||||||
|
}
|
||||||
|
|
||||||
public static final class CacheEntry<K extends Serializable, T> {
|
public static final class CacheEntry<K extends Serializable, T> {
|
||||||
|
|
||||||
public static class CacheEntryCreator implements Creator<CacheEntry> {
|
public static class CacheEntryCreator implements Creator<CacheEntry> {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.redkale.service;
|
package org.redkale.service;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import javax.annotation.*;
|
import javax.annotation.*;
|
||||||
import org.redkale.net.sncp.*;
|
import org.redkale.net.sncp.*;
|
||||||
@@ -35,12 +36,18 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void insert(@SncpCall(DataCallArrayAttribute.class) T... values) {
|
public <T> void insert(@DynCall(DataCallArrayAttribute.class) T... values) {
|
||||||
source.insert(values);
|
source.insert(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void insert(DataConnection conn, @SncpCall(DataCallArrayAttribute.class) T... values) {
|
public <T> void insert(final CompletionHandler<Void, T[]> handler, @DynAttachment @DynCall(DataCallArrayAttribute.class) final T... values) {
|
||||||
|
source.insert(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void insert(DataConnection conn, @DynCall(DataCallArrayAttribute.class) T... values) {
|
||||||
source.insert(conn, values);
|
source.insert(conn, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,26 +56,44 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
source.delete(values);
|
source.delete(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(final CompletionHandler<Void, T[]> handler, @DynAttachment final T... values) {
|
||||||
|
source.delete(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(DataConnection conn, T... values) {
|
public <T> void delete(DataConnection conn, T... values) {
|
||||||
source.delete(conn, values);
|
source.delete(conn, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(Class<T> clazz, Serializable... ids) {
|
public <T> void delete(final Class<T> clazz, final Serializable... ids) {
|
||||||
source.delete(clazz, ids);
|
source.delete(clazz, ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(DataConnection conn, Class<T> clazz, Serializable... ids) {
|
public <T> void delete(final CompletionHandler<Void, Serializable[]> handler, final Class<T> clazz, @DynAttachment final Serializable... ids) {
|
||||||
|
source.delete(clazz, ids);
|
||||||
|
if (handler != null) handler.completed(null, ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(DataConnection conn, Class<T> clazz, final Serializable... ids) {
|
||||||
source.delete(conn, clazz, ids);
|
source.delete(conn, clazz, ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(Class<T> clazz, FilterNode node) {
|
public <T> void delete(final Class<T> clazz, FilterNode node) {
|
||||||
source.delete(clazz, node);
|
source.delete(clazz, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(final CompletionHandler<Void, FilterNode> handler, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
|
source.delete(clazz, node);
|
||||||
|
if (handler != null) handler.completed(null, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(DataConnection conn, Class<T> clazz, FilterNode node) {
|
public <T> void delete(DataConnection conn, Class<T> clazz, FilterNode node) {
|
||||||
source.delete(conn, clazz, node);
|
source.delete(conn, clazz, node);
|
||||||
@@ -79,139 +104,277 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
source.update(values);
|
source.update(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void update(final CompletionHandler<Void, T[]> handler, @DynAttachment final T... values) {
|
||||||
|
source.update(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void update(DataConnection conn, T... values) {
|
public <T> void update(DataConnection conn, T... values) {
|
||||||
source.update(conn, values);
|
source.update(conn, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumn(Class<T> clazz, Serializable id, String column, Serializable value) {
|
public <T> void updateColumn(final Class<T> clazz, final Serializable id, final String column, final Serializable value) {
|
||||||
source.updateColumn(clazz, id, column, value);
|
source.updateColumn(clazz, id, column, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumn(DataConnection conn, Class<T> clazz, Serializable id, String column, Serializable value) {
|
public <T> void updateColumn(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable id, final String column, final Serializable value) {
|
||||||
|
source.updateColumn(clazz, id, column, value);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumn(DataConnection conn, Class<T> clazz, final Serializable id, final String column, final Serializable value) {
|
||||||
source.updateColumn(conn, clazz, id, column, value);
|
source.updateColumn(conn, clazz, id, column, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumns(T value, String... columns) {
|
public <T> void updateColumnIncrement(final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumns(value, columns);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> void updateColumns(DataConnection conn, T value, String... columns) {
|
|
||||||
source.updateColumns(conn, value, columns);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> void updateColumnIncrement(Class<T> clazz, Serializable id, String column, long incvalue) {
|
|
||||||
source.updateColumnIncrement(clazz, id, column, incvalue);
|
source.updateColumnIncrement(clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnIncrement(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable id, final String column, long incvalue) {
|
||||||
|
source.updateColumnIncrement(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumnIncrement(conn, clazz, id, column, incvalue);
|
source.updateColumnIncrement(conn, clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnAnd(Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnAnd(final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumnAnd(clazz, id, column, incvalue);
|
source.updateColumnAnd(clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnAnd(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable id, final String column, long incvalue) {
|
||||||
|
source.updateColumnAnd(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumnAnd(conn, clazz, id, column, incvalue);
|
source.updateColumnAnd(conn, clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnOr(Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnOr(final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumnOr(clazz, id, column, incvalue);
|
source.updateColumnOr(clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnOr(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable id, final String column, long incvalue) {
|
||||||
|
source.updateColumnOr(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
source.updateColumnOr(conn, clazz, id, column, incvalue);
|
source.updateColumnOr(conn, clazz, id, column, incvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Number getNumberResult(Class entityClass, FilterFunc func, String column) {
|
public <T> void updateColumns(T value, final String... columns) {
|
||||||
|
source.updateColumns(value, columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumns(final CompletionHandler<Void, T> handler, @DynAttachment final T value, final String... columns) {
|
||||||
|
source.updateColumns(value, columns);
|
||||||
|
if (handler != null) handler.completed(null, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumns(DataConnection conn, T value, final String... columns) {
|
||||||
|
source.updateColumns(conn, value, columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Number getNumberResult(final Class entityClass, FilterFunc func, final String column) {
|
||||||
return source.getNumberResult(entityClass, func, column);
|
return source.getNumberResult(entityClass, func, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final Number getNumberResult(Class entityClass, FilterFunc func, String column, FilterBean bean) {
|
public void getNumberResult(final CompletionHandler<Number, String> handler, final Class entityClass, final FilterFunc func, @DynAttachment final String column) {
|
||||||
|
Number rs = source.getNumberResult(entityClass, func, column);
|
||||||
|
if (handler != null) handler.completed(rs, column);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final Number getNumberResult(final Class entityClass, FilterFunc func, final String column, FilterBean bean) {
|
||||||
return getNumberResult(entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
return getNumberResult(entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Number getNumberResult(Class entityClass, FilterFunc func, String column, FilterNode node) {
|
public final void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean) {
|
||||||
|
getNumberResult(handler, entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Number getNumberResult(final Class entityClass, FilterFunc func, final String column, FilterNode node) {
|
||||||
return source.getNumberResult(entityClass, func, column, node);
|
return source.getNumberResult(entityClass, func, column, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(Class<T> entityClass, String keyColumn, FilterFunc func, String funcColumn) {
|
public void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, @DynAttachment final FilterNode node) {
|
||||||
|
Number rs = source.getNumberResult(entityClass, func, column, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn) {
|
||||||
return source.queryColumnMap(entityClass, keyColumn, func, funcColumn);
|
return source.queryColumnMap(entityClass, keyColumn, func, funcColumn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(Class<T> entityClass, String keyColumn, FilterFunc func, String funcColumn, FilterBean bean) {
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, String> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, @DynAttachment final String funcColumn) {
|
||||||
|
Map<K, N> map = source.queryColumnMap(entityClass, keyColumn, func, funcColumn);
|
||||||
|
if (handler != null) handler.completed(map, funcColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn, FilterBean bean) {
|
||||||
return queryColumnMap(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
return queryColumnMap(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(Class<T> entityClass, String keyColumn, FilterFunc func, String funcColumn, FilterNode node) {
|
public final <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||||
|
queryColumnMap(handler, entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
return source.queryColumnMap(entityClass, keyColumn, func, funcColumn, node);
|
return source.queryColumnMap(entityClass, keyColumn, func, funcColumn, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(Class<T> clazz, Serializable pk) {
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, @DynAttachment final FilterNode node) {
|
||||||
|
Map<K, N> map = source.queryColumnMap(entityClass, keyColumn, func, funcColumn, node);
|
||||||
|
if (handler != null) handler.completed(map, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T find(final Class<T> clazz, final Serializable pk) {
|
||||||
return source.find(clazz, pk);
|
return source.find(clazz, pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(Class<T> clazz, SelectColumn selects, Serializable pk) {
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable pk) {
|
||||||
|
T rs = source.find(clazz, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T find(final Class<T> clazz, SelectColumn selects, final Serializable pk) {
|
||||||
return source.find(clazz, selects, pk);
|
return source.find(clazz, selects, pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T findByColumn(Class<T> clazz, String column, Serializable key) {
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final SelectColumn selects, @DynAttachment final Serializable pk) {
|
||||||
|
T rs = source.find(clazz, selects, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable key) {
|
||||||
return source.findByColumn(clazz, column, key);
|
return source.findByColumn(clazz, column, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(Class<T> clazz, FilterNode node) {
|
public <T> void findByColumn(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final String column, @DynAttachment final Serializable key) {
|
||||||
return source.find(clazz, node);
|
T rs = source.findByColumn(clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T> T find(Class<T> clazz, FilterBean bean) {
|
public final <T> T find(final Class<T> clazz, FilterBean bean) {
|
||||||
return find(clazz, FilterNodeBean.createFilterNode(bean));
|
return find(clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean exists(Class<T> clazz, Serializable pk) {
|
public final <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
find(handler, clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T find(final Class<T> clazz, FilterNode node) {
|
||||||
|
return source.find(clazz, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
|
T rs = source.find(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> T find(final Class<T> clazz, final SelectColumn selects, FilterBean bean) {
|
||||||
|
return find(clazz, selects, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
find(handler, clazz, selects, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
|
return source.find(clazz, selects, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, @DynAttachment final FilterNode node) {
|
||||||
|
T rs = source.find(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> boolean exists(final Class<T> clazz, final Serializable pk) {
|
||||||
return source.exists(clazz, pk);
|
return source.exists(clazz, pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean exists(Class<T> clazz, FilterNode node) {
|
public <T> void exists(final CompletionHandler<Boolean, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable pk) {
|
||||||
return source.exists(clazz, node);
|
boolean rs = source.exists(clazz, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T> boolean exists(Class<T> clazz, FilterBean bean) {
|
public final <T> boolean exists(final Class<T> clazz, FilterBean bean) {
|
||||||
return exists(clazz, FilterNodeBean.createFilterNode(bean));
|
return exists(clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
public final <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
exists(handler, clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> boolean exists(final Class<T> clazz, FilterNode node) {
|
||||||
|
return source.exists(clazz, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
|
boolean rs = source.exists(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, final String column, final Serializable key) {
|
||||||
return source.queryColumnSet(selectedColumn, clazz, column, key);
|
return source.queryColumnSet(selectedColumn, clazz, column, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, @DynAttachment final Serializable key) {
|
||||||
return source.queryColumnSet(selectedColumn, clazz, node);
|
HashSet<V> rs = source.queryColumnSet(selectedColumn, clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -220,13 +383,30 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
public final <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
queryColumnSet(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||||
|
return source.queryColumnSet(selectedColumn, clazz, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
|
HashSet<V> rs = source.queryColumnSet(selectedColumn, clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, final String column, final Serializable key) {
|
||||||
return source.queryColumnList(selectedColumn, clazz, column, key);
|
return source.queryColumnList(selectedColumn, clazz, column, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, @DynAttachment final Serializable key) {
|
||||||
return source.queryColumnList(selectedColumn, clazz, node);
|
List<V> rs = source.queryColumnList(selectedColumn, clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -235,53 +415,19 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(Class<T> clazz, String column, Serializable key) {
|
public final <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, @DynAttachment final FilterBean bean) {
|
||||||
return source.queryList(clazz, column, key);
|
queryColumnList(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(Class<T> clazz, FilterNode node) {
|
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||||
return source.queryList(clazz, node);
|
return source.queryColumnList(selectedColumn, clazz, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T> List<T> queryList(Class<T> clazz, FilterBean bean) {
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
return queryList(clazz, FilterNodeBean.createFilterNode(bean));
|
List<V> rs = source.queryColumnList(selectedColumn, clazz, node);
|
||||||
}
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, FilterNode node) {
|
|
||||||
return source.queryList(clazz, selects, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final <T> List<T> queryList(Class<T> clazz, SelectColumn selects, FilterBean bean) {
|
|
||||||
return queryList(clazz, FilterNodeBean.createFilterNode(bean));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> List<T> queryList(Class<T> clazz, Flipper flipper, String column, Serializable key) {
|
|
||||||
return source.queryList(clazz, flipper, column, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> List<T> queryList(Class<T> clazz, Flipper flipper, FilterNode node) {
|
|
||||||
return source.queryList(clazz, flipper, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final <T> List<T> queryList(Class<T> clazz, Flipper flipper, FilterBean bean) {
|
|
||||||
return queryList(clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node) {
|
|
||||||
return source.queryList(clazz, selects, flipper, node);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final <T> List<T> queryList(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean) {
|
|
||||||
return queryList(clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -289,31 +435,170 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
|||||||
return queryColumnSheet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
return queryColumnSheet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
queryColumnSheet(handler, selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, Flipper flipper, FilterNode node) {
|
public <T, V extends Serializable> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, Flipper flipper, FilterNode node) {
|
||||||
return source.queryColumnSheet(selectedColumn, clazz, flipper, node);
|
return source.queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T> Sheet<T> querySheet(Class<T> clazz, Flipper flipper, FilterBean bean) {
|
public <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, @DynAttachment final FilterNode node) {
|
||||||
|
Sheet<V> rs = source.queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final String column, final Serializable key) {
|
||||||
|
return source.queryList(clazz, column, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final String column, @DynAttachment final Serializable key) {
|
||||||
|
List<T> rs = source.queryList(clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> List<T> queryList(final Class<T> clazz, final FilterBean bean) {
|
||||||
|
return queryList(clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
queryList(handler, clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final FilterNode node) {
|
||||||
|
return source.queryList(clazz, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||||
|
List<T> rs = source.queryList(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
return queryList(clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
queryList(handler, clazz, selects, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
|
return source.queryList(clazz, selects, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, @DynAttachment final FilterNode node) {
|
||||||
|
List<T> rs = source.queryList(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final String column, final Serializable key) {
|
||||||
|
return source.queryList(clazz, flipper, column, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final Flipper flipper, final String column, @DynAttachment final Serializable key) {
|
||||||
|
List<T> rs = source.queryList(clazz, flipper, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
return queryList(clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
queryList(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
return source.queryList(clazz, flipper, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, @DynAttachment final FilterNode node) {
|
||||||
|
List<T> rs = source.queryList(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
|
return queryList(clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
|
queryList(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
|
return source.queryList(clazz, selects, flipper, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, SelectColumn selects, final Flipper flipper, @DynAttachment final FilterNode node) {
|
||||||
|
List<T> rs = source.queryList(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> Sheet<T> querySheet(final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
return querySheet(clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
return querySheet(clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, Flipper flipper, FilterNode node) {
|
public final <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
querySheet(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
return source.querySheet(clazz, flipper, node);
|
return source.querySheet(clazz, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final <T> Sheet<T> querySheet(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean) {
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, @DynAttachment final FilterNode node) {
|
||||||
|
Sheet<T> rs = source.querySheet(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
return querySheet(clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
return querySheet(clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node) {
|
public final <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
|
querySheet(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
return source.querySheet(clazz, selects, flipper, node);
|
return source.querySheet(clazz, selects, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, @DynAttachment final FilterNode node) {
|
||||||
|
Sheet<T> rs = source.querySheet(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws Exception {
|
public void close() throws Exception {
|
||||||
source.getClass().getMethod("close").invoke(source);
|
source.getClass().getMethod("close").invoke(source);
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
* To change this template file, choose Tools | Templates
|
* To change this template file, choose Tools | Templates
|
||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
package org.redkale.net.sncp;
|
package org.redkale.service;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
import static java.lang.annotation.ElementType.PARAMETER;
|
import static java.lang.annotation.ElementType.PARAMETER;
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SNCP协议中Service方法的参数标记。 只有Service的方法为远程模式或@MultiRun时该注解才有效。
|
* SNCP协议中用于CompletionHandler回调函数中的attach字段。
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @see http://www.redkale.org
|
* @see http://www.redkale.org
|
||||||
@@ -20,7 +20,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||||||
@Documented
|
@Documented
|
||||||
@Target({PARAMETER})
|
@Target({PARAMETER})
|
||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
public @interface SncpParam {
|
public @interface DynAttachment {
|
||||||
|
|
||||||
SncpParamType value();
|
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
* To change this template file, choose Tools | Templates
|
* To change this template file, choose Tools | Templates
|
||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
package org.redkale.net.sncp;
|
package org.redkale.service;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
@@ -19,7 +19,7 @@ import org.redkale.util.*;
|
|||||||
@Documented
|
@Documented
|
||||||
@Target({ElementType.PARAMETER})
|
@Target({ElementType.PARAMETER})
|
||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
public @interface SncpCall {
|
public @interface DynCall {
|
||||||
|
|
||||||
Class<? extends Attribute> value();
|
Class<? extends Attribute> value();
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
* To change this template file, choose Tools | Templates
|
* To change this template file, choose Tools | Templates
|
||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
package org.redkale.net.sncp;
|
package org.redkale.service;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
import static java.lang.annotation.ElementType.*;
|
import static java.lang.annotation.ElementType.*;
|
||||||
@@ -19,6 +19,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||||||
@Documented
|
@Documented
|
||||||
@Target({FIELD})
|
@Target({FIELD})
|
||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
public @interface SncpRemote {
|
public @interface DynRemote {
|
||||||
|
|
||||||
}
|
}
|
||||||
25
src/org/redkale/service/DynSourceAddress.java
Normal file
25
src/org/redkale/service/DynSourceAddress.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package org.redkale.service;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
import static java.lang.annotation.ElementType.PARAMETER;
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SNCP协议中标记为来源地址参数, 该注解只能标记在类型为SocketAddress或InetSocketAddress的参数上。
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @see http://www.redkale.org
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
@Inherited
|
||||||
|
@Documented
|
||||||
|
@Target({PARAMETER})
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
public @interface DynSourceAddress {
|
||||||
|
|
||||||
|
}
|
||||||
25
src/org/redkale/service/DynTargetAddress.java
Normal file
25
src/org/redkale/service/DynTargetAddress.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package org.redkale.service;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
import static java.lang.annotation.ElementType.PARAMETER;
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SNCP协议中标记为目标地址参数, 该注解只能标记在类型为SocketAddress或InetSocketAddress的参数上。
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @see http://www.redkale.org
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
@Inherited
|
||||||
|
@Documented
|
||||||
|
@Target({PARAMETER})
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
public @interface DynTargetAddress {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,7 +10,6 @@ import java.io.*;
|
|||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.redkale.net.http.*;
|
import org.redkale.net.http.*;
|
||||||
import org.redkale.net.sncp.*;
|
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,7 +31,7 @@ public class WebSocketNodeService extends WebSocketNode implements Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int sendMessage(@SncpParam(SncpParamType.TargetAddress) InetSocketAddress addr, Serializable groupid, boolean recent, Serializable message, boolean last) {
|
public int sendMessage(@DynTargetAddress InetSocketAddress addr, Serializable groupid, boolean recent, Serializable message, boolean last) {
|
||||||
final Set<String> engineids = localNodes.get(groupid);
|
final Set<String> engineids = localNodes.get(groupid);
|
||||||
if (engineids == null || engineids.isEmpty()) return RETCODE_GROUP_EMPTY;
|
if (engineids == null || engineids.isEmpty()) return RETCODE_GROUP_EMPTY;
|
||||||
int code = RETCODE_GROUP_EMPTY;
|
int code = RETCODE_GROUP_EMPTY;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.redkale.source;
|
package org.redkale.source;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -30,16 +31,44 @@ public interface CacheSource {
|
|||||||
|
|
||||||
public <T> void set(final int expireSeconds, final Serializable key, final T value);
|
public <T> void set(final int expireSeconds, final Serializable key, final T value);
|
||||||
|
|
||||||
public void setExpireSeconds(Serializable key, int expireSeconds);
|
public void setExpireSeconds(final Serializable key, final int expireSeconds);
|
||||||
|
|
||||||
public void remove(final Serializable key);
|
public void remove(final Serializable key);
|
||||||
|
|
||||||
public <V> void appendListItem(final Serializable key, final V value);
|
public <T> void appendListItem(final Serializable key, final T value);
|
||||||
|
|
||||||
public <V> void removeListItem(final Serializable key, final V value);
|
public <T> void removeListItem(final Serializable key, final T value);
|
||||||
|
|
||||||
public <V> void appendSetItem(final Serializable key, final V value);
|
public <T> void appendSetItem(final Serializable key, final T value);
|
||||||
|
|
||||||
public <V> void removeSetItem(final Serializable key, final V value);
|
public <T> void removeSetItem(final Serializable key, final T value);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public void exists(final CompletionHandler<Boolean, Serializable> handler, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void get(final CompletionHandler<T, Serializable> handler, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void getAndRefresh(final CompletionHandler<T, Serializable> handler, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void refresh(final CompletionHandler<Void, Serializable> handler, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void set(final CompletionHandler<Void, Serializable> handler, final Serializable key, final T value);
|
||||||
|
|
||||||
|
public <T> void set(final CompletionHandler<Void, Serializable> handler, final int expireSeconds, final Serializable key, final T value);
|
||||||
|
|
||||||
|
public void setExpireSeconds(final CompletionHandler<Void, Serializable> handler, final Serializable key, final int expireSeconds);
|
||||||
|
|
||||||
|
public void remove(final CompletionHandler<Void, Serializable> handler, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void appendListItem(final CompletionHandler<Void, Serializable> handler, final Serializable key, final T value);
|
||||||
|
|
||||||
|
public <T> void removeListItem(final CompletionHandler<Void, Serializable> handler, final Serializable key, final T value);
|
||||||
|
|
||||||
|
public <T> void appendSetItem(final CompletionHandler<Void, Serializable> handler, final Serializable key, final T value);
|
||||||
|
|
||||||
|
public <T> void removeSetItem(final CompletionHandler<Void, Serializable> handler, final Serializable key, final T value);
|
||||||
|
|
||||||
|
default void isOpen(final CompletionHandler<Boolean, Void> handler) {
|
||||||
|
if (handler != null) handler.completed(Boolean.TRUE, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import static org.redkale.source.FilterNode.*;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.*;
|
import java.util.concurrent.atomic.*;
|
||||||
@@ -376,6 +377,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void insert(final CompletionHandler<Void, T[]> handler, final T... values) {
|
||||||
|
insert(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增对象, 必须是Entity对象
|
* 新增对象, 必须是Entity对象
|
||||||
*
|
*
|
||||||
@@ -561,6 +568,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(final CompletionHandler<Void, T[]> handler, final T... values) {
|
||||||
|
delete(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(final DataConnection conn, T... values) {
|
public <T> void delete(final DataConnection conn, T... values) {
|
||||||
if (values.length == 0) return;
|
if (values.length == 0) return;
|
||||||
@@ -594,6 +607,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(final CompletionHandler<Void, Serializable[]> handler, final Class<T> clazz, final Serializable... ids) {
|
||||||
|
delete(clazz, ids);
|
||||||
|
if (handler != null) handler.completed(null, ids);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(final DataConnection conn, Class<T> clazz, Serializable... ids) {
|
public <T> void delete(final DataConnection conn, Class<T> clazz, Serializable... ids) {
|
||||||
delete((Connection) conn.getConnection(), loadEntityInfo(clazz), ids);
|
delete((Connection) conn.getConnection(), loadEntityInfo(clazz), ids);
|
||||||
@@ -637,6 +656,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void delete(final CompletionHandler<Void, FilterNode> handler, final Class<T> clazz, final FilterNode node) {
|
||||||
|
delete(clazz, node);
|
||||||
|
if (handler != null) handler.completed(null, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void delete(final DataConnection conn, Class<T> clazz, FilterNode node) {
|
public <T> void delete(final DataConnection conn, Class<T> clazz, FilterNode node) {
|
||||||
delete((Connection) conn.getConnection(), loadEntityInfo(clazz), node);
|
delete((Connection) conn.getConnection(), loadEntityInfo(clazz), node);
|
||||||
@@ -698,6 +723,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void update(final CompletionHandler<Void, T[]> handler, final T... values) {
|
||||||
|
update(values);
|
||||||
|
if (handler != null) handler.completed(null, values);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void update(final DataConnection conn, T... values) {
|
public <T> void update(final DataConnection conn, T... values) {
|
||||||
if (values.length == 0) return;
|
if (values.length == 0) return;
|
||||||
@@ -790,6 +821,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumn(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, final Serializable value) {
|
||||||
|
updateColumn(clazz, id, column, value);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumn(DataConnection conn, Class<T> clazz, Serializable id, String column, Serializable value) {
|
public <T> void updateColumn(DataConnection conn, Class<T> clazz, Serializable id, String column, Serializable value) {
|
||||||
updateColumn((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, value);
|
updateColumn((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, value);
|
||||||
@@ -842,6 +879,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnIncrement(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
|
updateColumnIncrement(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||||
updateColumnIncrement((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, incvalue);
|
updateColumnIncrement((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, incvalue);
|
||||||
@@ -896,6 +939,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnAnd(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
|
updateColumnAnd(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, Serializable id, String column, long andvalue) {
|
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, Serializable id, String column, long andvalue) {
|
||||||
updateColumnAnd((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, andvalue);
|
updateColumnAnd((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, andvalue);
|
||||||
@@ -950,6 +999,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumnOr(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||||
|
updateColumnOr(clazz, id, column, incvalue);
|
||||||
|
if (handler != null) handler.completed(null, id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, Serializable id, String column, long orvalue) {
|
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, Serializable id, String column, long orvalue) {
|
||||||
updateColumnOr((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, orvalue);
|
updateColumnOr((Connection) conn.getConnection(), loadEntityInfo(clazz), id, column, orvalue);
|
||||||
@@ -1002,6 +1057,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void updateColumns(final CompletionHandler<Void, T> handler, final T value, final String... columns) {
|
||||||
|
updateColumns(value, columns);
|
||||||
|
if (handler != null) handler.completed(null, value);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void updateColumns(final DataConnection conn, final T value, final String... columns) {
|
public <T> void updateColumns(final DataConnection conn, final T value, final String... columns) {
|
||||||
updateColumns((Connection) conn.getConnection(), loadEntityInfo((Class<T>) value.getClass()), value, columns);
|
updateColumns((Connection) conn.getConnection(), loadEntityInfo((Class<T>) value.getClass()), value, columns);
|
||||||
@@ -1070,11 +1131,22 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
return getNumberResult(entityClass, func, column, (FilterNode) null);
|
return getNumberResult(entityClass, func, column, (FilterNode) null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, String> handler, final Class entityClass, final FilterFunc func, final String column) {
|
||||||
|
Number rs = getNumberResult(entityClass, func, column);
|
||||||
|
if (handler != null) handler.completed(rs, column);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, FilterBean bean) {
|
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, FilterBean bean) {
|
||||||
return getNumberResult(entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
return getNumberResult(entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean) {
|
||||||
|
getNumberResult(handler, entityClass, func, column, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, final FilterNode node) {
|
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, final FilterNode node) {
|
||||||
final Connection conn = createReadSQLConnection();
|
final Connection conn = createReadSQLConnection();
|
||||||
@@ -1108,17 +1180,34 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, final FilterNode node) {
|
||||||
|
Number rs = getNumberResult(entityClass, func, column, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------queryColumnMap-----------------------------
|
//-----------------------queryColumnMap-----------------------------
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn) {
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn) {
|
||||||
return queryColumnMap(entityClass, keyColumn, func, funcColumn, (FilterNode) null);
|
return queryColumnMap(entityClass, keyColumn, func, funcColumn, (FilterNode) null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, String> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn) {
|
||||||
|
Map<K, N> map = queryColumnMap(entityClass, keyColumn, func, funcColumn);
|
||||||
|
if (handler != null) handler.completed(map, funcColumn);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn, FilterBean bean) {
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, FilterFunc func, final String funcColumn, FilterBean bean) {
|
||||||
return queryColumnMap(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
return queryColumnMap(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||||
|
queryColumnMap(handler, entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
final Connection conn = createReadSQLConnection();
|
final Connection conn = createReadSQLConnection();
|
||||||
@@ -1155,6 +1244,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterNode node) {
|
||||||
|
Map<K, N> map = queryColumnMap(entityClass, keyColumn, func, funcColumn, node);
|
||||||
|
if (handler != null) handler.completed(map, node);
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------find----------------------------
|
//-----------------------find----------------------------
|
||||||
/**
|
/**
|
||||||
* 根据主键获取对象
|
* 根据主键获取对象
|
||||||
@@ -1169,6 +1264,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
return find(clazz, (SelectColumn) null, pk);
|
return find(clazz, (SelectColumn) null, pk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final Serializable pk) {
|
||||||
|
T rs = find(clazz, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(Class<T> clazz, final SelectColumn selects, Serializable pk) {
|
public <T> T find(Class<T> clazz, final SelectColumn selects, Serializable pk) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
@@ -1193,21 +1294,59 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final SelectColumn selects, final Serializable pk) {
|
||||||
|
T rs = find(clazz, selects, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable key) {
|
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable key) {
|
||||||
return find(clazz, null, FilterNode.create(column, key));
|
return find(clazz, null, FilterNode.create(column, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void findByColumn(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final String column, final Serializable key) {
|
||||||
|
T rs = findByColumn(clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(final Class<T> clazz, final FilterBean bean) {
|
public <T> T find(final Class<T> clazz, final FilterBean bean) {
|
||||||
return find(clazz, null, FilterNodeBean.createFilterNode(bean));
|
return find(clazz, null, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
T rs = find(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T find(final Class<T> clazz, final FilterNode node) {
|
public <T> T find(final Class<T> clazz, final FilterNode node) {
|
||||||
return find(clazz, null, node);
|
return find(clazz, null, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final FilterNode node) {
|
||||||
|
T rs = find(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
return find(clazz, selects, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
T rs = find(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
final EntityCache<T> cache = info.getCache();
|
final EntityCache<T> cache = info.getCache();
|
||||||
@@ -1234,6 +1373,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
|
T rs = find(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean exists(Class<T> clazz, Serializable pk) {
|
public <T> boolean exists(Class<T> clazz, Serializable pk) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
@@ -1257,11 +1402,24 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, Serializable> handler, final Class<T> clazz, final Serializable pk) {
|
||||||
|
boolean rs = exists(clazz, pk);
|
||||||
|
if (handler != null) handler.completed(rs, pk);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean exists(final Class<T> clazz, final FilterBean bean) {
|
public <T> boolean exists(final Class<T> clazz, final FilterBean bean) {
|
||||||
return exists(clazz, FilterNodeBean.createFilterNode(bean));
|
return exists(clazz, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
boolean rs = exists(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean exists(final Class<T> clazz, final FilterNode node) {
|
public <T> boolean exists(final Class<T> clazz, final FilterNode node) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
@@ -1288,6 +1446,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, final FilterNode node) {
|
||||||
|
boolean rs = exists(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------list set----------------------------
|
//-----------------------list set----------------------------
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
||||||
@@ -1295,31 +1459,114 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterBean bean) {
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, final Serializable key) {
|
||||||
|
HashSet<V> rs = queryColumnSet(selectedColumn, clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||||
return new LinkedHashSet<>(queryColumnList(selectedColumn, clazz, bean));
|
return new LinkedHashSet<>(queryColumnList(selectedColumn, clazz, bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
HashSet<V> rs = queryColumnSet(selectedColumn, clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||||
return new LinkedHashSet<>(queryColumnList(selectedColumn, clazz, node));
|
return new LinkedHashSet<>(queryColumnList(selectedColumn, clazz, node));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterNode node) {
|
||||||
|
HashSet<V> rs = queryColumnSet(selectedColumn, clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final String column, final Serializable key) {
|
||||||
return queryColumnList(selectedColumn, clazz, FilterNode.create(column, key));
|
return queryColumnList(selectedColumn, clazz, FilterNode.create(column, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterBean bean) {
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, final Serializable key) {
|
||||||
|
List<V> rs = queryColumnList(selectedColumn, clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||||
return (List<V>) queryColumnSheet(selectedColumn, clazz, null, bean).list(true);
|
return (List<V>) queryColumnSheet(selectedColumn, clazz, null, bean).list(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
final FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
List<V> rs = queryColumnList(selectedColumn, clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterNode node) {
|
||||||
return (List<V>) queryColumnSheet(selectedColumn, clazz, null, node).list(true);
|
return (List<V>) queryColumnSheet(selectedColumn, clazz, null, node).list(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <K extends Serializable, T> Map<K, T> formatMap(final Class<T> clazz, Collection<T> list) {
|
@Override
|
||||||
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterNode node) {
|
||||||
|
List<V> rs = queryColumnList(selectedColumn, clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据指定参数查询对象某个字段的集合
|
||||||
|
* <p>
|
||||||
|
* @param <T>
|
||||||
|
* @param <V>
|
||||||
|
* @param selectedColumn
|
||||||
|
* @param clazz
|
||||||
|
* @param flipper
|
||||||
|
* @param bean
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
return queryColumnSheet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
final FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
Sheet<V> rs = queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
Sheet<T> sheet = querySheet(true, true, clazz, SelectColumn.createIncludes(selectedColumn), flipper, node);
|
||||||
|
final Sheet<V> rs = new Sheet<>();
|
||||||
|
if (sheet.isEmpty()) return rs;
|
||||||
|
rs.setTotal(sheet.getTotal());
|
||||||
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
|
final Attribute<T, V> selected = (Attribute<T, V>) info.getAttribute(selectedColumn);
|
||||||
|
final List<V> list = new ArrayList<>();
|
||||||
|
for (T t : sheet.getRows()) {
|
||||||
|
list.add(selected.get(t));
|
||||||
|
}
|
||||||
|
rs.setRows(list);
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
Sheet<V> rs = queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
private <K extends Serializable, T> Map<K, T> formatMap(final Class<T> clazz, final Collection<T> list) {
|
||||||
Map<K, T> map = new LinkedHashMap<>();
|
Map<K, T> map = new LinkedHashMap<>();
|
||||||
if (list == null || list.isEmpty()) return map;
|
if (list == null || list.isEmpty()) return map;
|
||||||
final Attribute<T, K> attr = (Attribute<T, K>) loadEntityInfo(clazz).getPrimary();
|
final Attribute<T, K> attr = (Attribute<T, K>) loadEntityInfo(clazz).getPrimary();
|
||||||
@@ -1339,10 +1586,16 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(Class<T> clazz, String column, Serializable key) {
|
public <T> List<T> queryList(final Class<T> clazz, final String column, final Serializable key) {
|
||||||
return queryList(clazz, FilterNode.create(column, key));
|
return queryList(clazz, FilterNode.create(column, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final String column, final Serializable key) {
|
||||||
|
List<T> rs = queryList(clazz, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据过滤对象FilterBean查询对象集合
|
* 根据过滤对象FilterBean查询对象集合
|
||||||
*
|
*
|
||||||
@@ -1356,11 +1609,24 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
return queryList(clazz, (SelectColumn) null, bean);
|
return queryList(clazz, (SelectColumn) null, bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
List<T> rs = queryList(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final FilterNode node) {
|
public <T> List<T> queryList(final Class<T> clazz, final FilterNode node) {
|
||||||
return queryList(clazz, (SelectColumn) null, node);
|
return queryList(clazz, (SelectColumn) null, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final FilterNode node) {
|
||||||
|
List<T> rs = queryList(clazz, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据过滤对象FilterBean查询对象集合, 对象只填充或排除SelectField指定的字段
|
* 根据过滤对象FilterBean查询对象集合, 对象只填充或排除SelectField指定的字段
|
||||||
*
|
*
|
||||||
@@ -1375,19 +1641,33 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
return queryList(clazz, selects, (Flipper) null, bean);
|
return queryList(clazz, selects, (Flipper) null, bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
List<T> rs = queryList(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
return queryList(clazz, selects, (Flipper) null, node);
|
return queryList(clazz, selects, (Flipper) null, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(Class<T> clazz, final Flipper flipper, String column, Serializable key) {
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||||
|
List<T> rs = queryList(clazz, selects, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final String column, final Serializable key) {
|
||||||
return queryList(clazz, flipper, FilterNode.create(column, key));
|
return queryList(clazz, flipper, FilterNode.create(column, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final Flipper flipper, final String column, final Serializable key) {
|
||||||
return queryList(clazz, null, flipper, node);
|
List<T> rs = queryList(clazz, flipper, column, key);
|
||||||
|
if (handler != null) handler.completed(rs, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1396,8 +1676,21 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
return querySheet(true, false, clazz, selects, flipper, node).list(true);
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
List<T> rs = queryList(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
return queryList(clazz, null, flipper, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
List<T> rs = queryList(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1405,39 +1698,25 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
return querySheet(true, false, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)).list(true);
|
return querySheet(true, false, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)).list(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
List<T> rs = queryList(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
|
return querySheet(true, false, clazz, selects, flipper, node).list(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
|
List<T> rs = queryList(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------sheet----------------------------
|
//-----------------------sheet----------------------------
|
||||||
/**
|
|
||||||
* 根据指定参数查询对象某个字段的集合
|
|
||||||
* <p>
|
|
||||||
* @param <T>
|
|
||||||
* @param <V>
|
|
||||||
* @param selectedColumn
|
|
||||||
* @param clazz
|
|
||||||
* @param flipper
|
|
||||||
* @param bean
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
|
||||||
return queryColumnSheet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
|
||||||
Sheet<T> sheet = querySheet(true, true, clazz, SelectColumn.createIncludes(selectedColumn), flipper, node);
|
|
||||||
final Sheet<V> rs = new Sheet<>();
|
|
||||||
if (sheet.isEmpty()) return rs;
|
|
||||||
rs.setTotal(sheet.getTotal());
|
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
|
||||||
final Attribute<T, V> selected = (Attribute<T, V>) info.getAttribute(selectedColumn);
|
|
||||||
final List<V> list = new ArrayList<>();
|
|
||||||
for (T t : sheet.getRows()) {
|
|
||||||
list.add(selected.get(t));
|
|
||||||
}
|
|
||||||
rs.setRows(list);
|
|
||||||
return rs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据过滤对象FilterBean和翻页对象Flipper查询一页的数据
|
* 根据过滤对象FilterBean和翻页对象Flipper查询一页的数据
|
||||||
*
|
*
|
||||||
@@ -1448,15 +1727,28 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
return querySheet(clazz, null, flipper, bean);
|
return querySheet(clazz, null, flipper, bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
Sheet<T> rs = querySheet(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
return querySheet(clazz, null, flipper, node);
|
return querySheet(clazz, null, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
|
Sheet<T> rs = querySheet(clazz, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据过滤对象FilterBean和翻页对象Flipper查询一页的数据, 对象只填充或排除SelectField指定的字段
|
* 根据过滤对象FilterBean和翻页对象Flipper查询一页的数据, 对象只填充或排除SelectField指定的字段
|
||||||
*
|
*
|
||||||
@@ -1468,16 +1760,29 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
return querySheet(true, true, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
return querySheet(true, true, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Sheet<T> querySheet(Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) {
|
||||||
|
FilterNode node = FilterNodeBean.createFilterNode(bean);
|
||||||
|
Sheet<T> rs = querySheet(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
return querySheet(true, true, clazz, selects, flipper, node);
|
return querySheet(true, true, clazz, selects, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> Sheet<T> querySheet(boolean readcache, boolean needtotal, Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
@Override
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
|
Sheet<T> rs = querySheet(clazz, selects, flipper, node);
|
||||||
|
if (handler != null) handler.completed(rs, node);
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> Sheet<T> querySheet(final boolean readcache, final boolean needtotal, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
final EntityCache<T> cache = info.getCache();
|
final EntityCache<T> cache = info.getCache();
|
||||||
if (readcache && cache != null) {
|
if (readcache && cache != null) {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.redkale.source;
|
package org.redkale.source;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
@@ -42,6 +43,9 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> void insert(final DataConnection conn, final T... values);
|
public <T> void insert(final DataConnection conn, final T... values);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void insert(final CompletionHandler<Void, T[]> handler, final T... values);
|
||||||
|
|
||||||
//-------------------------delete--------------------------
|
//-------------------------delete--------------------------
|
||||||
/**
|
/**
|
||||||
* 删除对象, 必须是Entity对象
|
* 删除对象, 必须是Entity对象
|
||||||
@@ -61,6 +65,13 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> void delete(final DataConnection conn, final Class<T> clazz, final FilterNode node);
|
public <T> void delete(final DataConnection conn, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void delete(final CompletionHandler<Void, T[]> handler, final T... values);
|
||||||
|
|
||||||
|
public <T> void delete(final CompletionHandler<Void, Serializable[]> handler, final Class<T> clazz, final Serializable... ids);
|
||||||
|
|
||||||
|
public <T> void delete(final CompletionHandler<Void, FilterNode> handler, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
//------------------------update---------------------------
|
//------------------------update---------------------------
|
||||||
/**
|
/**
|
||||||
* 更新对象, 必须是Entity对象
|
* 更新对象, 必须是Entity对象
|
||||||
@@ -76,10 +87,6 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> void updateColumn(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, final Serializable value);
|
public <T> void updateColumn(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, final Serializable value);
|
||||||
|
|
||||||
public <T> void updateColumns(final T value, final String... columns);
|
|
||||||
|
|
||||||
public <T> void updateColumns(final DataConnection conn, final T value, final String... columns);
|
|
||||||
|
|
||||||
public <T> void updateColumnIncrement(final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
public <T> void updateColumnIncrement(final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
|
|
||||||
public <T> void updateColumnIncrement(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
public <T> void updateColumnIncrement(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
@@ -92,6 +99,23 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> void updateColumnOr(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
public <T> void updateColumnOr(final DataConnection conn, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
|
|
||||||
|
public <T> void updateColumns(final T value, final String... columns);
|
||||||
|
|
||||||
|
public <T> void updateColumns(final DataConnection conn, final T value, final String... columns);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void update(final CompletionHandler<Void, T[]> handler, final T... values);
|
||||||
|
|
||||||
|
public <T> void updateColumn(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, final Serializable value);
|
||||||
|
|
||||||
|
public <T> void updateColumnIncrement(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
|
|
||||||
|
public <T> void updateColumnAnd(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
|
|
||||||
|
public <T> void updateColumnOr(final CompletionHandler<Void, Serializable> handler, final Class<T> clazz, final Serializable id, final String column, long incvalue);
|
||||||
|
|
||||||
|
public <T> void updateColumns(final CompletionHandler<Void, T> handler, final T value, final String... columns);
|
||||||
|
|
||||||
//-----------------------getXXXXResult-----------------------------
|
//-----------------------getXXXXResult-----------------------------
|
||||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column);
|
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column);
|
||||||
|
|
||||||
@@ -105,6 +129,19 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterNode node);
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterNode node);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, String> handler, final Class entityClass, final FilterFunc func, final String column);
|
||||||
|
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean);
|
||||||
|
|
||||||
|
public void getNumberResult(final CompletionHandler<Number, FilterNode> handler, final Class entityClass, final FilterFunc func, final String column, final FilterNode node);
|
||||||
|
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, String> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn);
|
||||||
|
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T, K extends Serializable, N extends Number> void queryColumnMap(final CompletionHandler<Map<K, N>, FilterNode> handler, final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterNode node);
|
||||||
|
|
||||||
//-----------------------find----------------------------
|
//-----------------------find----------------------------
|
||||||
/**
|
/**
|
||||||
* 根据主键获取对象
|
* 根据主键获取对象
|
||||||
@@ -120,15 +157,40 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable key);
|
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T> T find(final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
public <T> T find(final Class<T> clazz, final FilterNode node);
|
public <T> T find(final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
public <T> T find(final Class<T> clazz, final FilterBean bean);
|
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> T find(final Class<T> clazz, final SelectColumn selects, final FilterNode node);
|
||||||
|
|
||||||
public <T> boolean exists(final Class<T> clazz, final Serializable pk);
|
public <T> boolean exists(final Class<T> clazz, final Serializable pk);
|
||||||
|
|
||||||
|
public <T> boolean exists(final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
public <T> boolean exists(final Class<T> clazz, final FilterNode node);
|
public <T> boolean exists(final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
public <T> boolean exists(final Class<T> clazz, final FilterBean bean);
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final Serializable pk);
|
||||||
|
|
||||||
|
public <T> void find(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final SelectColumn selects, final Serializable pk);
|
||||||
|
|
||||||
|
public <T> void findByColumn(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void find(final CompletionHandler<T, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, Serializable> handler, final Class<T> clazz, final Serializable pk);
|
||||||
|
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void exists(final CompletionHandler<Boolean, FilterNode> handler, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
//-----------------------list set----------------------------
|
//-----------------------list set----------------------------
|
||||||
/**
|
/**
|
||||||
@@ -144,15 +206,28 @@ public interface DataSource {
|
|||||||
*/
|
*/
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
|
||||||
|
|
||||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> HashSet<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
//----------------------异步版---------------------------------
|
||||||
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnSet(final CompletionHandler<HashSet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, Serializable> handler, final String selectedColumn, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据指定参数查询对象某个字段的集合
|
* 根据指定参数查询对象某个字段的集合
|
||||||
@@ -169,6 +244,11 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T, V extends Serializable> void queryColumnSheet(final CompletionHandler<Sheet<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据指定字段值查询对象集合
|
* 根据指定字段值查询对象集合
|
||||||
*
|
*
|
||||||
@@ -180,24 +260,45 @@ public interface DataSource {
|
|||||||
*/
|
*/
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final String column, final Serializable key);
|
public <T> List<T> queryList(final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final FilterNode node);
|
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final FilterBean bean);
|
public <T> List<T> queryList(final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node);
|
public <T> List<T> queryList(final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterBean bean);
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterBean bean);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final String column, final Serializable key);
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final String column, final Serializable key);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterBean bean);
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean);
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final Flipper flipper, final String column, final Serializable key);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
//-----------------------sheet----------------------------
|
//-----------------------sheet----------------------------
|
||||||
/**
|
/**
|
||||||
* 根据指定参数查询对象某个对象的集合页
|
* 根据指定参数查询对象某个对象的集合页
|
||||||
@@ -216,4 +317,13 @@ public interface DataSource {
|
|||||||
|
|
||||||
public <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
public <T> Sheet<T> querySheet(final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
|
//----------------------异步版---------------------------------
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean);
|
||||||
|
|
||||||
|
public <T> void querySheet(final CompletionHandler<Sheet<T>, FilterNode> handler, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user