This commit is contained in:
@@ -12,7 +12,7 @@ import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.logging.*;
|
||||
import javax.annotation.*;
|
||||
import org.redkale.net.sncp.*;
|
||||
import org.redkale.service.*;
|
||||
import org.redkale.source.*;
|
||||
import org.redkale.util.*;
|
||||
|
||||
@@ -30,7 +30,7 @@ public abstract class WebSocketNode {
|
||||
@Resource(name = "SERVER_ADDR")
|
||||
protected InetSocketAddress localSncpAddress; //为SncpServer的服务address
|
||||
|
||||
@SncpRemote
|
||||
@DynRemote
|
||||
protected WebSocketNode remoteNode;
|
||||
|
||||
//存放所有用户分布在节点上的队列信息,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);
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.redkale.convert.bson.*;
|
||||
import org.redkale.net.*;
|
||||
import org.redkale.service.*;
|
||||
import org.redkale.util.*;
|
||||
import org.redkale.service.DynRemote;
|
||||
|
||||
/**
|
||||
* Service Node Communicate Protocol
|
||||
@@ -669,7 +670,7 @@ public abstract class Sncp {
|
||||
for (Field field : loop.getDeclaredFields()) {
|
||||
int mod = field.getModifiers();
|
||||
if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) continue;
|
||||
if (field.getAnnotation(SncpRemote.class) != null) {
|
||||
if (field.getAnnotation(DynRemote.class) != null) {
|
||||
field.setAccessible(true);
|
||||
if (remoteTransport == null) {
|
||||
List<Transport> list = new ArrayList<>();
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
package org.redkale.net.sncp;
|
||||
|
||||
import static org.redkale.net.sncp.SncpRequest.*;
|
||||
import java.lang.annotation.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.net.*;
|
||||
@@ -18,7 +17,10 @@ import java.util.logging.*;
|
||||
import org.redkale.convert.bson.*;
|
||||
import org.redkale.convert.json.*;
|
||||
import org.redkale.net.*;
|
||||
import static org.redkale.net.sncp.SncpRequest.*;
|
||||
import org.redkale.service.*;
|
||||
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 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) {
|
||||
this.actionid = actionid;
|
||||
@@ -56,29 +62,36 @@ public final class SncpClient {
|
||||
Annotation[][] anns = method.getParameterAnnotations();
|
||||
int targetAddrIndex = -1;
|
||||
int sourceAddrIndex = -1;
|
||||
int handlerAttachIndex = -1;
|
||||
int handlerFuncIndex = -1;
|
||||
boolean hasattr = false;
|
||||
Attribute[] atts = new Attribute[paramTypes.length + 1];
|
||||
if (anns.length > 0) {
|
||||
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++) {
|
||||
if (anns[i].length > 0) {
|
||||
for (Annotation ann : anns[i]) {
|
||||
if (ann.annotationType() == SncpParam.class) {
|
||||
SncpParam sncpParam = (SncpParam) ann;
|
||||
if (sncpParam.value() == SncpParamType.TargetAddress && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||
targetAddrIndex = i;
|
||||
} else if (sncpParam.value() == SncpParamType.SourceAddress && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||
sourceAddrIndex = i;
|
||||
}
|
||||
if (ann.annotationType() == DynAttachment.class) {
|
||||
handlerAttachIndex = i;
|
||||
} else if (ann.annotationType() == DynTargetAddress.class && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||
targetAddrIndex = i;
|
||||
} else if (ann.annotationType() == DynSourceAddress.class && SocketAddress.class.isAssignableFrom(params[i])) {
|
||||
sourceAddrIndex = i;
|
||||
}
|
||||
}
|
||||
for (Annotation ann : anns[i]) {
|
||||
if (ann.annotationType() == SncpCall.class) {
|
||||
if (ann.annotationType() == DynCall.class) {
|
||||
try {
|
||||
atts[i + 1] = ((SncpCall) ann).value().newInstance();
|
||||
atts[i + 1] = ((DynCall) ann).value().newInstance();
|
||||
hasattr = true;
|
||||
} 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;
|
||||
}
|
||||
@@ -86,9 +99,12 @@ public final class SncpClient {
|
||||
}
|
||||
}
|
||||
}
|
||||
this.targetAddressParamIndex = targetAddrIndex;
|
||||
this.sourceAddressParamIndex = sourceAddrIndex;
|
||||
this.addressTargetParamIndex = targetAddrIndex;
|
||||
this.addressSourceParamIndex = sourceAddrIndex;
|
||||
this.handlerFuncParamIndex = handlerFuncIndex;
|
||||
this.handlerAttachParamIndex = handlerAttachIndex;
|
||||
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
|
||||
@@ -209,10 +225,13 @@ public final class SncpClient {
|
||||
}
|
||||
|
||||
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();
|
||||
try {
|
||||
final SncpAction action = actions[index];
|
||||
in.setBytes(future.get(5, TimeUnit.SECONDS));
|
||||
byte i;
|
||||
while ((i = in.readByte()) != 0) {
|
||||
@@ -232,7 +251,7 @@ public final class SncpClient {
|
||||
if (!run || transports == null || transports.length < 1) return;
|
||||
remote(convert, transports[0], index, params);
|
||||
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 (executor != null) {
|
||||
executor.accept(() -> {
|
||||
remote(convert, transports[0], index, params);
|
||||
for (int i = 1; i < transports.length; i++) {
|
||||
remote(convert, transports[i], actions[index], params);
|
||||
}
|
||||
remote(convert, transports, run, index, params);
|
||||
});
|
||||
} else {
|
||||
remote(convert, transports[0], index, params);
|
||||
for (int i = 1; i < transports.length; i++) {
|
||||
remote(convert, transports[i], actions[index], params);
|
||||
}
|
||||
remote(convert, transports, run, 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;
|
||||
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写入
|
||||
writer.writeTo(DEFAULT_HEADER);
|
||||
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 long seqid = System.nanoTime();
|
||||
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);
|
||||
if (conn == null || !conn.isOpen()) {
|
||||
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);
|
||||
transport.offerBuffer(buffer);
|
||||
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
|
||||
@@ -364,6 +395,10 @@ public final class SncpClient {
|
||||
future.set(new RuntimeException(action.method + " sncp remote exec failed"));
|
||||
transport.offerBuffer(buffer);
|
||||
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.service.*;
|
||||
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++) {
|
||||
if (anns[i].length > 0) {
|
||||
for (Annotation ann : anns[i]) {
|
||||
if (ann.annotationType() == SncpCall.class) {
|
||||
if (ann.annotationType() == DynCall.class) {
|
||||
try {
|
||||
atts[i + 1] = ((SncpCall) ann).value().newInstance();
|
||||
atts[i + 1] = ((DynCall) ann).value().newInstance();
|
||||
hasattr = true;
|
||||
} 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;
|
||||
}
|
||||
|
||||
@@ -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.lang.reflect.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.function.*;
|
||||
@@ -165,6 +166,11 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
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
|
||||
public <T> T get(Serializable key) {
|
||||
if (key == null) return null;
|
||||
@@ -173,6 +179,11 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
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
|
||||
@MultiRun
|
||||
public <T> T getAndRefresh(Serializable key) {
|
||||
@@ -183,6 +194,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
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
|
||||
@MultiRun
|
||||
public void refresh(Serializable key) {
|
||||
@@ -192,6 +209,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
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
|
||||
@MultiRun
|
||||
public <T> void set(Serializable key, T value) {
|
||||
@@ -208,12 +231,9 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
}
|
||||
|
||||
@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;
|
||||
public <T> void set(final CompletionHandler<Void, Serializable> handler, @DynAttachment final Serializable key, final T value) {
|
||||
set(key, value);
|
||||
if (handler != null) handler.completed(null, key);
|
||||
}
|
||||
|
||||
@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
|
||||
@MultiRun
|
||||
public void remove(Serializable key) {
|
||||
@@ -238,6 +279,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
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
|
||||
@MultiRun
|
||||
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
|
||||
@MultiRun
|
||||
public <V> void removeListItem(Serializable key, V value) {
|
||||
@@ -263,6 +316,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
((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
|
||||
@MultiRun
|
||||
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
|
||||
@MultiRun
|
||||
public <V> void removeSetItem(Serializable key, V value) {
|
||||
@@ -288,6 +353,12 @@ public class CacheSourceService implements CacheSource, Service, AutoCloseable {
|
||||
((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 class CacheEntryCreator implements Creator<CacheEntry> {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.redkale.service;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.*;
|
||||
import org.redkale.net.sncp.*;
|
||||
@@ -35,12 +36,18 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void insert(@SncpCall(DataCallArrayAttribute.class) T... values) {
|
||||
public <T> void insert(@DynCall(DataCallArrayAttribute.class) T... values) {
|
||||
source.insert(values);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@@ -49,26 +56,44 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
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
|
||||
public <T> void delete(DataConnection conn, T... values) {
|
||||
source.delete(conn, values);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(Class<T> clazz, FilterNode node) {
|
||||
public <T> void delete(final Class<T> clazz, FilterNode 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
|
||||
public <T> void delete(DataConnection conn, Class<T> clazz, FilterNode node) {
|
||||
source.delete(conn, clazz, node);
|
||||
@@ -79,139 +104,277 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
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
|
||||
public <T> void update(DataConnection conn, T... values) {
|
||||
source.update(conn, values);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumns(T value, String... columns) {
|
||||
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) {
|
||||
public <T> void updateColumnIncrement(final Class<T> clazz, final Serializable id, final String column, long incvalue) {
|
||||
source.updateColumnIncrement(clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T find(Class<T> clazz, FilterNode node) {
|
||||
return source.find(clazz, node);
|
||||
public <T> void findByColumn(final CompletionHandler<T, Serializable> handler, final Class<T> clazz, final String column, @DynAttachment final Serializable key) {
|
||||
T rs = source.findByColumn(clazz, column, key);
|
||||
if (handler != null) handler.completed(rs, key);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean exists(Class<T> clazz, FilterNode node) {
|
||||
return source.exists(clazz, node);
|
||||
public <T> void exists(final CompletionHandler<Boolean, Serializable> handler, final Class<T> clazz, @DynAttachment final Serializable pk) {
|
||||
boolean rs = source.exists(clazz, pk);
|
||||
if (handler != null) handler.completed(rs, pk);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return source.queryColumnSet(selectedColumn, clazz, 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) {
|
||||
HashSet<V> rs = source.queryColumnSet(selectedColumn, clazz, column, key);
|
||||
if (handler != null) handler.completed(rs, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -220,13 +383,30 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return source.queryColumnList(selectedColumn, clazz, 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) {
|
||||
List<V> rs = source.queryColumnList(selectedColumn, clazz, column, key);
|
||||
if (handler != null) handler.completed(rs, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -235,53 +415,19 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, String column, Serializable key) {
|
||||
return source.queryList(clazz, column, 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) {
|
||||
queryColumnList(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, FilterNode node) {
|
||||
return source.queryList(clazz, node);
|
||||
public <T, V extends Serializable> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return source.queryColumnList(selectedColumn, clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> List<T> queryList(Class<T> clazz, FilterBean bean) {
|
||||
return queryList(clazz, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@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));
|
||||
public <T, V extends Serializable> void queryColumnList(final CompletionHandler<List<V>, FilterNode> handler, final String selectedColumn, final Class<T> clazz, @DynAttachment final FilterNode node) {
|
||||
List<V> rs = source.queryColumnList(selectedColumn, clazz, node);
|
||||
if (handler != null) handler.completed(rs, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -289,31 +435,170 @@ public class DataSourceService implements DataSource, Service, AutoCloseable {
|
||||
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
|
||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, Flipper flipper, FilterNode node) {
|
||||
return source.queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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
|
||||
public void close() throws Exception {
|
||||
source.getClass().getMethod("close").invoke(source);
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.redkale.net.sncp;
|
||||
package org.redkale.service;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import static java.lang.annotation.ElementType.PARAMETER;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* SNCP协议中Service方法的参数标记。 只有Service的方法为远程模式或@MultiRun时该注解才有效。
|
||||
* SNCP协议中用于CompletionHandler回调函数中的attach字段。
|
||||
*
|
||||
*
|
||||
* @see http://www.redkale.org
|
||||
@@ -20,7 +20,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
@Documented
|
||||
@Target({PARAMETER})
|
||||
@Retention(RUNTIME)
|
||||
public @interface SncpParam {
|
||||
public @interface DynAttachment {
|
||||
|
||||
SncpParamType value();
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.redkale.net.sncp;
|
||||
package org.redkale.service;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
@@ -19,7 +19,7 @@ import org.redkale.util.*;
|
||||
@Documented
|
||||
@Target({ElementType.PARAMETER})
|
||||
@Retention(RUNTIME)
|
||||
public @interface SncpCall {
|
||||
public @interface DynCall {
|
||||
|
||||
Class<? extends Attribute> value();
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.redkale.net.sncp;
|
||||
package org.redkale.service;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import static java.lang.annotation.ElementType.*;
|
||||
@@ -19,6 +19,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
@Documented
|
||||
@Target({FIELD})
|
||||
@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.util.*;
|
||||
import org.redkale.net.http.*;
|
||||
import org.redkale.net.sncp.*;
|
||||
import org.redkale.util.*;
|
||||
|
||||
/**
|
||||
@@ -32,7 +31,7 @@ public class WebSocketNodeService extends WebSocketNode implements Service {
|
||||
}
|
||||
|
||||
@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);
|
||||
if (engineids == null || engineids.isEmpty()) return RETCODE_GROUP_EMPTY;
|
||||
int code = RETCODE_GROUP_EMPTY;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.redkale.source;
|
||||
|
||||
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 void setExpireSeconds(Serializable key, int expireSeconds);
|
||||
|
||||
public void setExpireSeconds(final Serializable key, final int expireSeconds);
|
||||
|
||||
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.lang.reflect.*;
|
||||
import java.net.*;
|
||||
import java.nio.channels.*;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
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对象
|
||||
*
|
||||
@@ -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
|
||||
public <T> void delete(final DataConnection conn, T... values) {
|
||||
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
|
||||
public <T> void delete(final DataConnection conn, Class<T> clazz, Serializable... 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
|
||||
public <T> void delete(final DataConnection conn, Class<T> clazz, FilterNode 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
|
||||
public <T> void update(final DataConnection conn, T... values) {
|
||||
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
|
||||
public <T> void updateColumn(DataConnection conn, Class<T> clazz, Serializable id, String column, Serializable 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
|
||||
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, Serializable id, String column, long 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
|
||||
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, Serializable id, String column, long 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
|
||||
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, Serializable id, String column, long 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
|
||||
public <T> void updateColumns(final DataConnection conn, final T value, final String... 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);
|
||||
}
|
||||
|
||||
@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
|
||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, FilterBean 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
|
||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final String column, final FilterNode node) {
|
||||
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-----------------------------
|
||||
@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 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
|
||||
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));
|
||||
}
|
||||
|
||||
@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
|
||||
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();
|
||||
@@ -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----------------------------
|
||||
/**
|
||||
* 根据主键获取对象
|
||||
@@ -1169,6 +1264,12 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
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
|
||||
public <T> T find(Class<T> clazz, final SelectColumn selects, Serializable pk) {
|
||||
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
|
||||
public <T> T findByColumn(final Class<T> clazz, final String column, final Serializable 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
|
||||
public <T> T find(final Class<T> clazz, final FilterBean 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
|
||||
public <T> T find(final Class<T> clazz, final FilterNode 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) {
|
||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||
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
|
||||
public <T> boolean exists(Class<T> clazz, Serializable pk) {
|
||||
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
|
||||
public <T> boolean exists(final Class<T> clazz, final FilterBean 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
|
||||
public <T> boolean exists(final Class<T> clazz, final FilterNode node) {
|
||||
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----------------------------
|
||||
@Override
|
||||
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
|
||||
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));
|
||||
}
|
||||
|
||||
@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
|
||||
public <T, V extends Serializable> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return new LinkedHashSet<>(queryColumnList(selectedColumn, clazz, node));
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
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<>();
|
||||
if (list == null || list.isEmpty()) return map;
|
||||
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
|
||||
*/
|
||||
@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));
|
||||
}
|
||||
|
||||
@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查询对象集合
|
||||
*
|
||||
@@ -1356,11 +1609,24 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
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
|
||||
public <T> List<T> queryList(final Class<T> clazz, final FilterNode 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指定的字段
|
||||
*
|
||||
@@ -1375,19 +1641,33 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
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
|
||||
public <T> List<T> queryList(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||
return queryList(clazz, selects, (Flipper) null, node);
|
||||
}
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
return queryList(clazz, null, flipper, node);
|
||||
public <T> void queryList(final CompletionHandler<List<T>, Serializable> handler, final Class<T> clazz, final Flipper flipper, final String column, final Serializable key) {
|
||||
List<T> rs = queryList(clazz, flipper, column, key);
|
||||
if (handler != null) handler.completed(rs, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1396,8 +1676,21 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
}
|
||||
|
||||
@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);
|
||||
public <T> void queryList(final CompletionHandler<List<T>, FilterNode> handler, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
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
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@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----------------------------
|
||||
/**
|
||||
* 根据指定参数查询对象某个字段的集合
|
||||
* <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查询一页的数据
|
||||
*
|
||||
@@ -1448,15 +1727,28 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
* @return
|
||||
*/
|
||||
@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);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@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指定的字段
|
||||
*
|
||||
@@ -1468,16 +1760,29 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
* @return
|
||||
*/
|
||||
@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));
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
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 EntityCache<T> cache = info.getCache();
|
||||
if (readcache && cache != null) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.redkale.source;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.channels.*;
|
||||
import java.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 CompletionHandler<Void, T[]> handler, final T... values);
|
||||
|
||||
//-------------------------delete--------------------------
|
||||
/**
|
||||
* 删除对象, 必须是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 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---------------------------
|
||||
/**
|
||||
* 更新对象, 必须是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 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 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 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-----------------------------
|
||||
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 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----------------------------
|
||||
/**
|
||||
* 根据主键获取对象
|
||||
@@ -120,15 +157,40 @@ public interface DataSource {
|
||||
|
||||
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 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 FilterBean bean);
|
||||
|
||||
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----------------------------
|
||||
/**
|
||||
@@ -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 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 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 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 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> 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 FilterNode node);
|
||||
|
||||
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 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 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 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----------------------------
|
||||
/**
|
||||
* 根据指定参数查询对象某个对象的集合页
|
||||
@@ -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> 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