Skip to content

Commit 890e660

Browse files
committed
add filters helper
1 parent f135caf commit 890e660

9 files changed

Lines changed: 163 additions & 17 deletions

File tree

.settings/org.eclipse.jdt.ui.prefs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.ui.javadoc=true
3+
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/** \r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * "License"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http\://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n *\r\n* @Title\: ${file_name} \r\n* @Package ${package_name} \r\n* @Description\: ${todo}\r\n* @author dailey.yet@outlook.com \r\n* @date ${date}\r\n* @version V1.0 \r\n*/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author dailey.yet@outlook.com\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>

bin/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
/dbconfig.properties
2+
/log4j.properties
13
/openthinks/
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/**
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*
19+
* @Title: Filters.java
20+
* @Package openthinks.libs.sql.dhibernate.support.query
21+
* @Description: TODO
22+
* @author dailey.yet@outlook.com
23+
* @date 2015-7-30
24+
* @version V1.0
25+
*/
26+
package openthinks.libs.sql.dhibernate.support.query;
27+
28+
import openthinks.libs.sql.dhibernate.support.query.impl.AbstractQueryFilter;
29+
import openthinks.libs.sql.dhibernate.support.query.impl.ContainerFilter;
30+
import openthinks.libs.sql.dhibernate.support.query.impl.EqualsFilter;
31+
import openthinks.libs.sql.dhibernate.support.query.impl.NotEqualsFilter;
32+
import openthinks.libs.sql.dhibernate.support.query.impl.QueryFilterConnects;
33+
import openthinks.libs.sql.dhibernate.support.query.impl.QueryFilterGroup;
34+
35+
/**
36+
* The helper for implemented {@link QueryFilter}
37+
* @author dailey.yet@outlook.com
38+
*
39+
*/
40+
public final class Filters {
41+
42+
public static AbstractQueryFilter<EqualsFilter> eq(Object value) {
43+
return new EqualsFilter().eq(value);
44+
}
45+
46+
public static AbstractQueryFilter<NotEqualsFilter> neq(Object value) {
47+
return new NotEqualsFilter().neq(value);
48+
}
49+
50+
public static AbstractQueryFilter<ContainerFilter> include(Object value) {
51+
return new ContainerFilter().include(value);
52+
}
53+
54+
public static AbstractQueryFilter<EqualsFilter> eq(String attributeName, Object value) {
55+
return new EqualsFilter(null, attributeName).eq(value);
56+
}
57+
58+
public static AbstractQueryFilter<NotEqualsFilter> neq(String attributeName, Object value) {
59+
return new NotEqualsFilter(null, attributeName).neq(value);
60+
}
61+
62+
public static AbstractQueryFilter<ContainerFilter> include(String attributeName, Object value) {
63+
return new ContainerFilter(null, attributeName).include(value);
64+
}
65+
66+
public static QueryFilterConnect or() {
67+
return QueryFilterConnects.or();
68+
}
69+
70+
public static QueryFilterConnect and() {
71+
return QueryFilterConnects.and();
72+
}
73+
74+
public static QueryFilterGroup group() {
75+
return new QueryFilterGroup();
76+
}
77+
}

src/openthinks/libs/sql/dhibernate/support/query/impl/AbstractQueryFilter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,10 @@ public boolean hasNext() {
113113
* @param clz Class<?>
114114
* @return QueryFilter
115115
*/
116-
QueryFilter filterClass(Class<?> clz) {
116+
@SuppressWarnings("unchecked")
117+
public E filterClass(Class<?> clz) {
117118
this.filterClass = clz;
118-
return this;
119+
return (E) this;
119120
}
120121

121122
/**

src/openthinks/libs/sql/dhibernate/support/query/impl/NotEqualsFliter.java renamed to src/openthinks/libs/sql/dhibernate/support/query/impl/NotEqualsFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*
19-
* @Title: NotEqualsFliter.java
19+
* @Title: NotEqualsFilter.java
2020
* @Package openthinks.libs.sql.dhibernate.support.query.impl
2121
* @Description: TODO
2222
* @author minjdai
@@ -29,22 +29,22 @@
2929
* NotEqual query filter as <B>!=</B> or <B><></B> in SQL statement
3030
* @author minjdai
3131
*/
32-
public class NotEqualsFliter extends AbstractQueryFilter<NotEqualsFliter> {
32+
public class NotEqualsFilter extends AbstractQueryFilter<NotEqualsFilter> {
3333

3434
private Object neqValue;
3535

36-
public NotEqualsFliter() {
36+
public NotEqualsFilter() {
3737
}
3838

39-
public NotEqualsFliter(Class<?> filterClass, String filterName) {
39+
public NotEqualsFilter(Class<?> filterClass, String filterName) {
4040
super(filterClass, filterName);
4141
}
4242

43-
public NotEqualsFliter(Class<?> filterClass) {
43+
public NotEqualsFilter(Class<?> filterClass) {
4444
super(filterClass);
4545
}
4646

47-
public NotEqualsFliter neq(Object value) {
47+
public NotEqualsFilter neq(Object value) {
4848
this.neqValue = value;
4949
return this;
5050
}

src/openthinks/libs/sql/dhibernate/support/query/impl/QueryFilterGroup.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@ public class QueryFilterGroup extends AbstractQueryFilter<QueryFilterGroup> {
4646
public QueryFilterGroup() {
4747
}
4848

49-
public QueryFilterGroup(Class<?> filterClass, String filterName) {
50-
super(filterClass, filterName);
51-
}
52-
5349
public QueryFilterGroup(Class<?> filterClass) {
5450
super(filterClass);
5551
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package openthinks.libs.sql;
2+
3+
import openthinks.libs.sql.dhibernate.support.query.Filters;
4+
import openthinks.libs.sql.dhibernate.support.query.QueryFilter;
5+
import openthinks.libs.sql.dhibernate.support.query.Relativization;
6+
import openthinks.libs.sql.dhibernate.support.query.impl.QueryFilterGroup;
7+
import openthinks.libs.sql.dhibernate.support.template.FilterTemplate;
8+
import openthinks.libs.sql.lang.reflect.ReflectEngine;
9+
10+
import org.junit.Assert;
11+
import org.junit.Before;
12+
import org.junit.Test;
13+
14+
public class FilterSqlTemplateTest2 {
15+
Class<?> queryObjectType;
16+
QueryFilter firstFilter;
17+
Relativization relativization;
18+
19+
@Before
20+
public void setUp() {
21+
queryObjectType = Message.class;
22+
}
23+
24+
@Test
25+
public void testQueryFilter() {
26+
27+
relativization = Filters.eq("").filter("messageId").filterClass(Message.class);
28+
String actual = relativization.toSQL().toString();
29+
String expected = "`message_id` = ?";
30+
Assert.assertEquals(expected.toLowerCase(), actual.toLowerCase().trim());
31+
32+
relativization = Filters.eq(null).filter("messageId").filterClass(Message.class);
33+
actual = relativization.toSQL().toString();
34+
expected = "`message_id` is null";
35+
Assert.assertEquals(expected.toLowerCase(), actual.toLowerCase().trim());
36+
}
37+
38+
@Test
39+
public void testQueryFilterGroup() {
40+
QueryFilterGroup group = Filters.group();
41+
group.push(Filters.eq("").filter("messageId"));
42+
group.push(Filters.or());
43+
group.push(Filters.eq("").filter("messageId"));
44+
this.firstFilter = group;
45+
46+
FilterTemplate template = ReflectEngine.createSQLTemplate(queryObjectType, this.firstFilter);
47+
String actual = template.generateSQL();
48+
String expected = "select * from `message` where ( `message_id` = ? or `message_id` = ? ) ";
49+
Assert.assertEquals(expected.toLowerCase(), actual.toLowerCase());
50+
}
51+
52+
@Test
53+
public void testQueryFilterGroupEmbed() {
54+
QueryFilterGroup group = Filters.group();
55+
group.push(Filters.eq("messageId", ""));
56+
group.push(Filters.or());
57+
this.firstFilter = group;
58+
QueryFilterGroup embedGrp = Filters.group();
59+
embedGrp.push(Filters.eq("messageId", ""));
60+
group.push(embedGrp);
61+
62+
FilterTemplate template = ReflectEngine.createSQLTemplate(queryObjectType, this.firstFilter);
63+
String actual = template.generateSQL();
64+
String expected = "select * from `message` where ( `message_id` = ? or ( `message_id` = ? ) ) ";
65+
Assert.assertEquals(expected.toLowerCase(), actual.toLowerCase());
66+
}
67+
}

test/openthinks/libs/sql/QueryFilterTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import openthinks.libs.sql.dhibernate.support.query.QueryFilter;
3131
import openthinks.libs.sql.dhibernate.support.query.impl.ContainerFilter;
3232
import openthinks.libs.sql.dhibernate.support.query.impl.EqualsFilter;
33-
import openthinks.libs.sql.dhibernate.support.query.impl.NotEqualsFliter;
33+
import openthinks.libs.sql.dhibernate.support.query.impl.NotEqualsFilter;
3434
import openthinks.libs.sql.dhibernate.support.query.impl.QueryFilterConnects;
3535
import openthinks.libs.sql.dhibernate.support.query.impl.QueryFilterGroup;
3636
import openthinks.libs.sql.dhibernate.support.test.TestSession;
@@ -55,9 +55,9 @@ void testEqual() {
5555

5656
lasted = new ContainerFilter().filter("content").startWith("BEGIN");
5757
appended1.push(lasted);
58-
lasted = new NotEqualsFliter().filter("messageId").neq("234");
58+
lasted = new NotEqualsFilter().filter("messageId").neq("234");
5959
appended1.push(lasted);
60-
lasted = new NotEqualsFliter().filter("locale").neq("CN");
60+
lasted = new NotEqualsFilter().filter("locale").neq("CN");
6161
appended1.push(lasted);
6262

6363
query.addFilter(appended1);

test/openthinks/libs/sql/QueryTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import openthinks.libs.sql.dhibernate.support.SessionFactory;
3333
import openthinks.libs.sql.dhibernate.support.query.Query;
3434
import openthinks.libs.sql.dhibernate.support.query.impl.EqualsFilter;
35-
import openthinks.libs.sql.dhibernate.support.query.impl.NotEqualsFliter;
35+
import openthinks.libs.sql.dhibernate.support.query.impl.NotEqualsFilter;
3636

3737
import org.junit.After;
3838
import org.junit.Assert;
@@ -98,7 +98,7 @@ public void simpleQuerytest2() {
9898
Query<Message> query = session.createQuery(Message.class);
9999

100100
List<Message> msgs = query.addFilter(new EqualsFilter().filter("messageId").eq(testMsg.getMessageId()))
101-
.addFilter(new NotEqualsFliter().filter("locale").neq(Locale.CHINA.toString())).execute();
101+
.addFilter(new NotEqualsFilter().filter("locale").neq(Locale.CHINA.toString())).execute();
102102

103103
Assert.assertEquals(1, msgs.size());
104104

0 commit comments

Comments
 (0)