8000 Add functionality to ignore null or empty adds · utPLSQL/utPLSQL-java-api@c799e6a · GitHub
[go: up one dir, main page]

Skip to content

Commit c799e6a

Browse files
committed
Add functionality to ignore null or empty adds
1 parent e6f3a57 commit c799e6a

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

src/main/java/org/utplsql/api/db/DynamicParameterList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public class DynamicParameterList {
1212

13-
LinkedHashMap<String, DynamicParameter> params;
13+
private LinkedHashMap<String, DynamicParameter> params;
1414

1515
interface DynamicParameter {
1616
void setParam( CallableStatement statement, int index ) throws SQLException;

src/main/java/org/utplsql/api/db/DynamicParameterListBuilder.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,21 @@ public DynamicParameterListBuilder onlyAddIfNotEmpty() {
1919
}
2020

2121
public DynamicParameterListBuilder add( String identifier, String value ) {
22-
params.put(identifier, new DynamicParameterList.DynamicStringParameter(value));
22+
if ( addIfNullOrEmpty || (value != null && !value.isEmpty()) ) {
23+
params.put(identifier, new DynamicParameterList.DynamicStringParameter(value));
24+
}
2325
return this;
2426
}
2527
public DynamicParameterListBuilder add( String identifier, Integer value ) {
26-
params.put(identifier, new DynamicParameterList.DynamicIntegerParameter(value));
28+
if ( addIfNullOrEmpty || (value != null)) {
29+
params.put(identifier, new DynamicParameterList.DynamicIntegerParameter(value));
30+
}
2731
return this;
2832
}
2933
public DynamicParameterListBuilder add(String identifier, Object[] value, String customTypeName, OracleConnection oraConnection ) {
30-
params.put(identifier, new DynamicParameterList.DynamicArrayParameter(value, customTypeName, oraConnection));
34+
if ( addIfNullOrEmpty || (value != null && value.length > 0 )) {
35+
params.put(identifier, new DynamicParameterList.DynamicArrayParameter(value, customTypeName, oraConnection));
36+
}
3137
return this;
3238
}
3339

src/test/java/org/utplsql/api/db/DynamicParameterListTest.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
import java.sql.SQLException;
88

99
import static org.junit.jupiter.api.Assertions.assertEquals;
10-
import static org.mockito.Mockito.mock;
11-
import static org.mockito.Mockito.verify;
10+
import static org.mockito.Mockito.*;
1211

1312
public class DynamicParameterListTest {
1413

1514
@Test
16-
void callWithThreeDifferentTypes() throws SQLException {
15+
void call_with_three_different_types() throws SQLException {
1716

1817
CallableStatement mockedStatement = mock(CallableStatement.class);
1918
OracleConnection mockedConn = mock(OracleConnection.class);
@@ -29,9 +28,31 @@ void callWithThreeDifferentTypes() throws SQLException {
2928
assertEquals("a_object_owner = ?, a_num_param = ?, a_num_array = ?", parameterList.getSql());
3029

3130
parameterList.setParamsStartWithIndex(mockedStatement, 5);
31+
3232
verify(mockedStatement).setString(5, "MyOwner");
3333
verify(mockedStatement).setInt(6, 123);
3434
verify(mockedConn).createOracleArray("MY_NUM_ARR", numArr);
3535
verify(mockedStatement).setArray(7, null);
3636
}
37+
38+
@Test
39+
void when_not_accept_empty_filter_empty_elements() throws SQLException {
40+
41+
CallableStatement mockedStatement = mock(CallableStatement.class);
42+
OracleConnection mockedConn = mock(OracleConnection.class);
43+
44+
DynamicParameterList parameterList = DynamicParameterListBuilder.create()
45+
.onlyAddIfNotEmpty()
46+
.add("a_object_owner", (String)null)
47+
.add("a_num_param", (Integer)null)
48+
.add("a_num_array", new Object[]{}, "MY_NUM_ARR", mockedConn)
49+
.build();
50+
51+
assertEquals("", parameterList.getSql());
52+
53+
parameterList.setParamsStartWithIndex(mockedStatement, 2);
54+
55+
verifyNoMoreInteractions(mockedStatement);
56+
verifyNoMoreInteractions(mockedConn);
57+
}
3758
}

0 commit comments

Comments
 (0)
0