package org.n3r.eql.eqler;
import com.google.common.collect.Maps;
import org.n3r.eql.Eql;
import org.n3r.eql.EqlPage;
import org.n3r.eql.diamond.Dql;
import org.objectweb.asm.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public abstract class MyEqlerImplDemo implements MyEqler {
public abstract void doSome(String some);
public static void main(String[] args) throws IOException {
new MyEqlerImplDemo() {
public void doSome(String some) {
}
};
Class<?> declaringClass = MyEqlerImplDemo.class;
ClassLoader declaringClassLoader = declaringClass.getClassLoader();
Type declaringType = Type.getType(declaringClass);
String url = declaringType.getInternalName() + ".class";
InputStream classFileInputStream = declaringClassLoader.getResourceAsStream(url);
if (classFileInputStream == null) {
throw new IllegalArgumentException(url + " is not found");
}
ClassReader cr = new ClassReader(classFileInputStream);
cr.accept(new ClassVisitor(Opcodes.ASM5) {
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
System.out.println("Method:" + name);
return new MethodVisitor(Opcodes.ASM5) {
// only for non-abstract or non-interface methods
// when code is compiled with -g or -g:vars options (generate debug variable info).
public void visitLocalVariable(String name, String description, String signature, Label start, Label end, int index) {
System.out.println(name);
}
};
}
}, 0);
}
public String queryOne() {
return new Dql("mysql").me()
.useSqlFile(MyEqler.class)
.id("queryOne")
.returnType(String.class)
.limit(1)
.execute();
}
public String queryTwo() {
return new Eql("mysql")
.useSqlFile("org/n3r/eql/eqler/MyEqlerTwo.eql")
.id("queryTwo")
.returnType(EqlerFactory.class)
.limit(10)
.execute();
}
public int queryThree() {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.id("queryThree")
.returnType(int.class)
.limit(1)
.execute();
}
public long queryFour() {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.id("queryFour")
.returnType(long.class)
.limit(40)
.execute();
}
public boolean queryTrue() {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.id("queryTrue")
.returnType(boolean.class)
.limit(1)
.execute();
}
public boolean queryFalse() {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.id("queryFalse")
.returnType(boolean.class)
.limit(1)
.execute();
}
public String queryById(String id) {
return new Eql("mysql").me()
.useSqlFile(MyEqler.class)
.params(id)
.id("queryFalse")
.returnType(String.class)
.limit(1)
.execute();
}
public String queryByMap(Map<String, String> map) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(map)
.id("queryByMap")
.returnType(String.class)
.limit(1)
.execute();
}
public Map queryByMap(long userId, String merchantId, int id, String name) {
Map<String, Object> params = Maps.newHashMap();
params.put("userId", userId);
params.put("merchantId", merchantId);
params.put("id", id);
params.put("name", name);
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(params)
.id("queryByMap")
.returnType(Map.class)
.limit(1)
.execute();
}
public MyEqlerBean queryBean(String id) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(id)
.id("queryBean")
.returnType(MyEqlerBean.class)
.limit(1)
.execute();
}
public MyEqlerBean queryBeanX(String id) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(id)
.id("queryBean")
.returnType(MyEqlerBean.class)
.limit(1)
.execute();
}
public List<MyEqlerBean> queryBeans(String id) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(id)
.id("queryFalse")
.returnType(MyEqlerBean.class)
.execute();
}
public String queryDirectSql() {
return new Eql("mysql")
.returnType(String.class)
.limit(1)
.execute("select 1", "select2");
}
public List<MyEqlerBean> queryMoreBeans(int a, EqlPage eqlPage, int b) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(a, b)
.limit(eqlPage)
.id("queryMoreBeans")
.returnType(MyEqlerBean.class)
.execute();
}
public String queryByIds(String id1, String id2, String id3, String id4, String id5, String id6, String id7, String id8) {
return new Eql("mysql")
.useSqlFile(MyEqler.class)
.params(id1, id2, id3, id4, id5, id6, id7)
.id("queryFalse")
.returnType(boolean.class)
.limit(1)
.execute();
}
}