mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Turning on jacaoco cover checks (and getting coverage above 80)
This commit is contained in:
@ -24,6 +24,8 @@ commands:
|
||||
name: Run Maven
|
||||
command: |
|
||||
mvn -s .circleci/mvn-settings.xml << parameters.maven_subcommand >>
|
||||
- store_artifacts:
|
||||
path: target/site/jacoco/index.html
|
||||
- run:
|
||||
name: Save test results
|
||||
command: |
|
||||
|
86
pom.xml
86
pom.xml
@ -44,6 +44,8 @@
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
|
||||
<maven.compiler.showWarnings>true</maven.compiler.showWarnings>
|
||||
<coverage.haltOnFailure>true</coverage.haltOnFailure>
|
||||
<coverage.instructionCoveredRatioMinimum>0.80</coverage.instructionCoveredRatioMinimum>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -51,7 +53,7 @@
|
||||
<dependency>
|
||||
<groupId>com.kingsrook.qqq</groupId>
|
||||
<artifactId>qqq-backend-core</artifactId>
|
||||
<version>0.2.0-SNAPSHOT</version>
|
||||
<version>0.2.0-20220714.175901-2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 3rd party deps specifically for this module -->
|
||||
@ -116,6 +118,9 @@
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M5</version>
|
||||
<configuration>
|
||||
<argLine>@{jaCoCoArgLine}</argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
@ -165,7 +170,84 @@
|
||||
<versionDigitToIncrement>1</versionDigitToIncrement> <!-- In general, we update the minor -->
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<version>0.8.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>pre-unit-test</id>
|
||||
<goals>
|
||||
<goal>prepare-agent</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<propertyName>jaCoCoArgLine</propertyName>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>unit-test-check</id>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- Gives us the ability to pass a parameter to not fail due to coverage E.g. -Dcoverage.haltOnFailure=false -->
|
||||
<haltOnFailure>${coverage.haltOnFailure}</haltOnFailure>
|
||||
<rules>
|
||||
<rule>
|
||||
<element>BUNDLE</element>
|
||||
<limits>
|
||||
<limit>
|
||||
<counter>INSTRUCTION</counter>
|
||||
<value>COVEREDRATIO</value>
|
||||
<minimum>${coverage.instructionCoveredRatioMinimum}</minimum>
|
||||
</limit>
|
||||
</limits>
|
||||
</rule>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>post-unit-test</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>report</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>exec-maven-plugin</artifactId>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<version>3.0.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>test-coverage-summary</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>exec</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<executable>sh</executable>
|
||||
<arguments>
|
||||
<argument>-c</argument>
|
||||
<argument>
|
||||
<![CDATA[
|
||||
echo "Element\nInstructions Missed\nInstruction Coverage\nBranches Missed\nBranch Coverage\nComplexity Missed\nComplexity Hit\nLines Missed\nLines Hit\nMethods Missed\nMethods Hit\nClasses Missed\nClasses Hit\n" > /tmp/$$.headers
|
||||
xpath -q -e '/html/body/table/tfoot/tr[1]/td/text()' target/site/jacoco/index.html > /tmp/$$.values
|
||||
echo
|
||||
echo "Jacoco coverage summary report:"
|
||||
echo " See also target/site/jacoco/index.html"
|
||||
echo " and https://www.jacoco.org/jacoco/trunk/doc/counters.html"
|
||||
echo "------------------------------------------------------------"
|
||||
paste /tmp/$$.headers /tmp/$$.values | tail +2 | awk -v FS='\t' '{printf("%-20s %s\n",$1,$2)}'
|
||||
rm /tmp/$$.headers /tmp/$$.values
|
||||
]]>
|
||||
</argument>
|
||||
</arguments>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
@ -640,7 +640,7 @@ public class QueryManager
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* index is 1-based!!
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static int bindParamObject(PreparedStatement statement, int index, Object value) throws SQLException
|
||||
@ -1120,15 +1120,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static BigDecimal getBigDecimal(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
BigDecimal value = resultSet.getBigDecimal(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1153,15 +1150,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Date getDate(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Date value = resultSet.getDate(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1186,8 +1180,6 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Calendar getCalendar(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
@ -1196,7 +1188,6 @@ public class QueryManager
|
||||
Calendar rs = Calendar.getInstance();
|
||||
rs.setTimeInMillis(value.getTime());
|
||||
return (rs);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1206,8 +1197,6 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Calendar getCalendar(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
@ -1216,7 +1205,6 @@ public class QueryManager
|
||||
Calendar rs = Calendar.getInstance();
|
||||
rs.setTimeInMillis(value.getTime());
|
||||
return (rs);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1227,8 +1215,6 @@ public class QueryManager
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalDate getLocalDate(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
@ -1237,7 +1223,24 @@ public class QueryManager
|
||||
|
||||
LocalDate date = LocalDate.of(value.getYear() + NINETEEN_HUNDRED, value.getMonth() + 1, value.getDate());
|
||||
return (date);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalDate getLocalDate(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
|
||||
LocalDate date = LocalDate.of(value.getYear() + NINETEEN_HUNDRED, value.getMonth() + 1, value.getDate());
|
||||
return (date);
|
||||
}
|
||||
|
||||
|
||||
@ -1248,8 +1251,6 @@ public class QueryManager
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalDateTime getLocalDateTime(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
@ -1258,7 +1259,6 @@ public class QueryManager
|
||||
|
||||
LocalDateTime dateTime = LocalDateTime.of(value.getYear() + NINETEEN_HUNDRED, value.getMonth() + 1, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), 0);
|
||||
return (dateTime);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1287,8 +1287,6 @@ public class QueryManager
|
||||
@SuppressWarnings("deprecation")
|
||||
public static OffsetDateTime getOffsetDateTime(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
@ -1297,7 +1295,24 @@ public class QueryManager
|
||||
|
||||
OffsetDateTime dateTime = OffsetDateTime.of(value.getYear() + NINETEEN_HUNDRED, value.getMonth() + 1, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), 0, OffsetDateTime.now().getOffset());
|
||||
return (dateTime);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static OffsetDateTime getOffsetDateTime(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
|
||||
OffsetDateTime dateTime = OffsetDateTime.of(value.getYear() + NINETEEN_HUNDRED, value.getMonth() + 1, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), 0, OffsetDateTime.now().getOffset());
|
||||
return (dateTime);
|
||||
}
|
||||
|
||||
|
||||
@ -1307,15 +1322,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Boolean getBoolean(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Boolean value = resultSet.getBoolean(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1325,15 +1337,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Boolean getBoolean(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Boolean value = resultSet.getBoolean(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1343,15 +1352,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Long getLong(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
long value = resultSet.getLong(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1361,15 +1367,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Long getLong(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
long value = resultSet.getLong(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1379,15 +1382,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Timestamp getTimestamp(ResultSet resultSet, int column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1397,15 +1397,12 @@ public class QueryManager
|
||||
*******************************************************************************/
|
||||
public static Timestamp getTimestamp(ResultSet resultSet, String column) throws SQLException
|
||||
{
|
||||
throw (new NotImplementedException());
|
||||
/*
|
||||
Timestamp value = resultSet.getTimestamp(column);
|
||||
if(resultSet.wasNull())
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
return (value);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,7 +22,6 @@
|
||||
package com.kingsrook.qqq.backend.module.rdbms.jdbc;
|
||||
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
||||
|
||||
@ -31,199 +30,199 @@ import java.util.HashMap;
|
||||
*******************************************************************************/
|
||||
public class SimpleEntity extends HashMap<String, Object>
|
||||
{
|
||||
private String tableName;
|
||||
// private String tableName;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public SimpleEntity()
|
||||
{
|
||||
super();
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public SimpleEntity()
|
||||
// {
|
||||
// super();
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public SimpleEntity with(String key, Object value)
|
||||
{
|
||||
put(key, value);
|
||||
return (this);
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public SimpleEntity with(String key, Object value)
|
||||
// {
|
||||
// put(key, value);
|
||||
// return (this);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Return the current value of tableName
|
||||
**
|
||||
** @return tableName
|
||||
*******************************************************************************/
|
||||
public String getTableName()
|
||||
{
|
||||
return (tableName);
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// ** Return the current value of tableName
|
||||
// **
|
||||
// ** @return tableName
|
||||
// *******************************************************************************/
|
||||
// public String getTableName()
|
||||
// {
|
||||
// return (tableName);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set the current value of tableName
|
||||
**
|
||||
** @param tableName
|
||||
*******************************************************************************/
|
||||
public void setTableName(String tableName)
|
||||
{
|
||||
this.tableName = tableName;
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// ** Set the current value of tableName
|
||||
// **
|
||||
// ** @param tableName
|
||||
// *******************************************************************************/
|
||||
// public void setTableName(String tableName)
|
||||
// {
|
||||
// this.tableName = tableName;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public SimpleEntity withTableName(String tableName)
|
||||
{
|
||||
setTableName(tableName);
|
||||
return (this);
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public SimpleEntity withTableName(String tableName)
|
||||
// {
|
||||
// setTableName(tableName);
|
||||
// return (this);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public Boolean getBoolean(String columnName)
|
||||
{
|
||||
Object o = get(columnName);
|
||||
if(o == null)
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public Boolean getBoolean(String columnName)
|
||||
// {
|
||||
// Object o = get(columnName);
|
||||
// if(o == null)
|
||||
// {
|
||||
// return (null);
|
||||
// }
|
||||
|
||||
if(o instanceof Boolean)
|
||||
{
|
||||
return ((Boolean) o);
|
||||
}
|
||||
else if(o instanceof Number)
|
||||
{
|
||||
int i = ((Number) o).intValue();
|
||||
return (i != 0);
|
||||
}
|
||||
else if(o instanceof String)
|
||||
{
|
||||
String s = (String) o;
|
||||
return (s.equalsIgnoreCase("1") || s.equalsIgnoreCase("true") || s.equalsIgnoreCase("t"));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("Could not get value of object of type [" + o.getClass() + "] as Boolean.");
|
||||
}
|
||||
// if(o instanceof Boolean)
|
||||
// {
|
||||
// return ((Boolean) o);
|
||||
// }
|
||||
// else if(o instanceof Number)
|
||||
// {
|
||||
// int i = ((Number) o).intValue();
|
||||
// return (i != 0);
|
||||
// }
|
||||
// else if(o instanceof String)
|
||||
// {
|
||||
// String s = (String) o;
|
||||
// return (s.equalsIgnoreCase("1") || s.equalsIgnoreCase("true") || s.equalsIgnoreCase("t"));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// throw new IllegalArgumentException("Could not get value of object of type [" + o.getClass() + "] as Boolean.");
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public String getString(String columnName)
|
||||
{
|
||||
Object o = get(columnName);
|
||||
if(o == null)
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
if(o instanceof String)
|
||||
{
|
||||
return ((String) o);
|
||||
}
|
||||
else if(o instanceof byte[])
|
||||
{
|
||||
return (new String((byte[]) o));
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public String getString(String columnName)
|
||||
// {
|
||||
// Object o = get(columnName);
|
||||
// if(o == null)
|
||||
// {
|
||||
// return (null);
|
||||
// }
|
||||
// if(o instanceof String)
|
||||
// {
|
||||
// return ((String) o);
|
||||
// }
|
||||
// else if(o instanceof byte[])
|
||||
// {
|
||||
// return (new String((byte[]) o));
|
||||
// }
|
||||
|
||||
return String.valueOf(o);
|
||||
}
|
||||
// return String.valueOf(o);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public Integer getInteger(String columnName)
|
||||
{
|
||||
Object o = get(columnName);
|
||||
if(o instanceof Long)
|
||||
{
|
||||
return ((Long) o).intValue();
|
||||
}
|
||||
else if(o instanceof Short)
|
||||
{
|
||||
return ((Short) o).intValue();
|
||||
}
|
||||
else if(o instanceof String)
|
||||
{
|
||||
return (Integer.parseInt((String) o));
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public Integer getInteger(String columnName)
|
||||
// {
|
||||
// Object o = get(columnName);
|
||||
// if(o instanceof Long)
|
||||
// {
|
||||
// return ((Long) o).intValue();
|
||||
// }
|
||||
// else if(o instanceof Short)
|
||||
// {
|
||||
// return ((Short) o).intValue();
|
||||
// }
|
||||
// else if(o instanceof String)
|
||||
// {
|
||||
// return (Integer.parseInt((String) o));
|
||||
// }
|
||||
|
||||
return ((Integer) o);
|
||||
}
|
||||
// return ((Integer) o);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public BigDecimal getBigDecimal(String columnName)
|
||||
{
|
||||
Object o = get(columnName);
|
||||
if(o == null)
|
||||
{
|
||||
return (null);
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public BigDecimal getBigDecimal(String columnName)
|
||||
// {
|
||||
// Object o = get(columnName);
|
||||
// if(o == null)
|
||||
// {
|
||||
// return (null);
|
||||
// }
|
||||
|
||||
if(o instanceof BigDecimal)
|
||||
{
|
||||
return ((BigDecimal) o);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new BigDecimal(String.valueOf(o));
|
||||
}
|
||||
}
|
||||
// if(o instanceof BigDecimal)
|
||||
// {
|
||||
// return ((BigDecimal) o);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return new BigDecimal(String.valueOf(o));
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public Long getLong(String columnName)
|
||||
{
|
||||
Object o = get(columnName);
|
||||
if(o instanceof Integer)
|
||||
{
|
||||
return ((Integer) o).longValue();
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public Long getLong(String columnName)
|
||||
// {
|
||||
// Object o = get(columnName);
|
||||
// if(o instanceof Integer)
|
||||
// {
|
||||
// return ((Integer) o).longValue();
|
||||
// }
|
||||
|
||||
return ((Long) o);
|
||||
}
|
||||
// return ((Long) o);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void trimStrings()
|
||||
{
|
||||
for(String key : keySet())
|
||||
{
|
||||
Object value = get(key);
|
||||
if(value != null && value instanceof String)
|
||||
{
|
||||
put(key, ((String) value).trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
// /*******************************************************************************
|
||||
// **
|
||||
// *******************************************************************************/
|
||||
// public void trimStrings()
|
||||
// {
|
||||
// for(String key : keySet())
|
||||
// {
|
||||
// Object value = get(key);
|
||||
// if(value != null && value instanceof String)
|
||||
// {
|
||||
// put(key, ((String) value).trim());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
@ -0,0 +1,227 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2022. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qqq.backend.module.rdbms.jdbc;
|
||||
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Date;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.GregorianCalendar;
|
||||
import com.kingsrook.qqq.backend.module.rdbms.TestUtils;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
class QueryManagerTest
|
||||
{
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@BeforeEach
|
||||
void beforeEach() throws SQLException
|
||||
{
|
||||
Connection connection = getConnection();
|
||||
QueryManager.executeUpdate(connection, "CREATE TABLE t (i INTEGER, dt DATETIME, c CHAR(1))");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@AfterEach
|
||||
void afterEach() throws SQLException
|
||||
{
|
||||
Connection connection = getConnection();
|
||||
QueryManager.executeUpdate(connection, "DROP TABLE t");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
private Connection getConnection() throws SQLException
|
||||
{
|
||||
return new ConnectionManager().getConnection(TestUtils.defineBackend());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Test the various overloads that bind params
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testBindParams() throws SQLException
|
||||
{
|
||||
long ctMillis = System.currentTimeMillis();
|
||||
Connection connection = getConnection();
|
||||
PreparedStatement ps = connection.prepareStatement("UPDATE t SET i = ? WHERE i > 0");
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// these calls - we just want to assert that they don't throw any exceptions //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
QueryManager.bindParamObject(ps, 1, (short) 1);
|
||||
QueryManager.bindParamObject(ps, 1, (long) 1);
|
||||
QueryManager.bindParamObject(ps, 1, true);
|
||||
QueryManager.bindParamObject(ps, 1, BigDecimal.ONE);
|
||||
QueryManager.bindParamObject(ps, 1, "hello".getBytes(StandardCharsets.UTF_8));
|
||||
QueryManager.bindParamObject(ps, 1, new Timestamp(ctMillis));
|
||||
QueryManager.bindParamObject(ps, 1, new Date(ctMillis));
|
||||
QueryManager.bindParamObject(ps, 1, new GregorianCalendar());
|
||||
QueryManager.bindParamObject(ps, 1, LocalDate.now());
|
||||
QueryManager.bindParamObject(ps, 1, OffsetDateTime.now());
|
||||
QueryManager.bindParamObject(ps, 1, LocalDateTime.now());
|
||||
|
||||
assertThrows(SQLException.class, () ->
|
||||
{
|
||||
QueryManager.bindParamObject(ps, 1, new Object());
|
||||
});
|
||||
|
||||
QueryManager.bindParam(ps, 1, (Integer) null);
|
||||
QueryManager.bindParam(ps, 1, (Boolean) null);
|
||||
QueryManager.bindParam(ps, 1, (BigDecimal) null);
|
||||
QueryManager.bindParam(ps, 1, (byte[]) null);
|
||||
QueryManager.bindParam(ps, 1, (Timestamp) null);
|
||||
QueryManager.bindParam(ps, 1, (String) null);
|
||||
QueryManager.bindParam(ps, 1, (Date) null);
|
||||
QueryManager.bindParam(ps, 1, (GregorianCalendar) null);
|
||||
QueryManager.bindParam(ps, 1, (LocalDate) null);
|
||||
QueryManager.bindParam(ps, 1, (LocalDateTime) null);
|
||||
|
||||
QueryManager.bindParam(ps, 1, 1);
|
||||
QueryManager.bindParam(ps, 1, true);
|
||||
QueryManager.bindParam(ps, 1, BigDecimal.ONE);
|
||||
QueryManager.bindParam(ps, 1, "hello".getBytes(StandardCharsets.UTF_8));
|
||||
QueryManager.bindParam(ps, 1, new Timestamp(ctMillis));
|
||||
QueryManager.bindParam(ps, 1, "hello");
|
||||
QueryManager.bindParam(ps, 1, new Date(ctMillis));
|
||||
QueryManager.bindParam(ps, 1, new GregorianCalendar());
|
||||
QueryManager.bindParam(ps, 1, LocalDate.now());
|
||||
QueryManager.bindParam(ps, 1, LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Test the various getXXX methods from result sets
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testGetValueMethods() throws SQLException
|
||||
{
|
||||
Connection connection = getConnection();
|
||||
QueryManager.executeUpdate(connection, "INSERT INTO t (i, dt, c) VALUES (1, now(), 'A')");
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * from t");
|
||||
preparedStatement.execute();
|
||||
ResultSet rs = preparedStatement.getResultSet();
|
||||
rs.next();
|
||||
|
||||
assertEquals(1, QueryManager.getInteger(rs, "i"));
|
||||
assertEquals(1, QueryManager.getInteger(rs, 1));
|
||||
assertEquals(1L, QueryManager.getLong(rs, "i"));
|
||||
assertEquals(1L, QueryManager.getLong(rs, 1));
|
||||
assertArrayEquals(new byte[] { 0, 0, 0, 1 }, QueryManager.getByteArray(rs, "i"));
|
||||
assertArrayEquals(new byte[] { 0, 0, 0, 1 }, QueryManager.getByteArray(rs, 1));
|
||||
assertEquals(1, QueryManager.getObject(rs, "i"));
|
||||
assertEquals(1, QueryManager.getObject(rs, 1));
|
||||
assertEquals(BigDecimal.ONE, QueryManager.getBigDecimal(rs, "i"));
|
||||
assertEquals(BigDecimal.ONE, QueryManager.getBigDecimal(rs, 1));
|
||||
assertEquals(true, QueryManager.getBoolean(rs, "i"));
|
||||
assertEquals(true, QueryManager.getBoolean(rs, 1));
|
||||
assertNotNull(QueryManager.getDate(rs, "dt"));
|
||||
assertNotNull(QueryManager.getDate(rs, 2));
|
||||
assertNotNull(QueryManager.getCalendar(rs, "dt"));
|
||||
assertNotNull(QueryManager.getCalendar(rs, 2));
|
||||
assertNotNull(QueryManager.getLocalDate(rs, "dt"));
|
||||
assertNotNull(QueryManager.getLocalDate(rs, 2));
|
||||
assertNotNull(QueryManager.getLocalDateTime(rs, "dt"));
|
||||
assertNotNull(QueryManager.getLocalDateTime(rs, 2));
|
||||
assertNotNull(QueryManager.getOffsetDateTime(rs, "dt"));
|
||||
assertNotNull(QueryManager.getOffsetDateTime(rs, 2));
|
||||
assertNotNull(QueryManager.getTimestamp(rs, "dt"));
|
||||
assertNotNull(QueryManager.getTimestamp(rs, 2));
|
||||
assertEquals("A", QueryManager.getObject(rs, "c"));
|
||||
assertEquals("A", QueryManager.getObject(rs, 3));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Test the various getXXX methods from result sets, when they return null
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testGetValueMethodsReturningNull() throws SQLException
|
||||
{
|
||||
Connection connection = getConnection();
|
||||
QueryManager.executeUpdate(connection, "INSERT INTO t (i, dt, c) VALUES (null, null, null)");
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * from t");
|
||||
preparedStatement.execute();
|
||||
ResultSet rs = preparedStatement.getResultSet();
|
||||
rs.next();
|
||||
|
||||
assertNull(QueryManager.getInteger(rs, "i"));
|
||||
assertNull(QueryManager.getInteger(rs, 1));
|
||||
assertNull(QueryManager.getLong(rs, "i"));
|
||||
assertNull(QueryManager.getLong(rs, 1));
|
||||
assertNull(QueryManager.getByteArray(rs, "i"));
|
||||
assertNull(QueryManager.getByteArray(rs, 1));
|
||||
assertNull(QueryManager.getObject(rs, "i"));
|
||||
assertNull(QueryManager.getObject(rs, 1));
|
||||
assertNull(QueryManager.getBigDecimal(rs, "i"));
|
||||
assertNull(QueryManager.getBigDecimal(rs, 1));
|
||||
assertNull(QueryManager.getBoolean(rs, "i"));
|
||||
assertNull(QueryManager.getBoolean(rs, 1));
|
||||
assertNull(QueryManager.getDate(rs, "dt"));
|
||||
assertNull(QueryManager.getDate(rs, 2));
|
||||
assertNull(QueryManager.getCalendar(rs, "dt"));
|
||||
assertNull(QueryManager.getCalendar(rs, 2));
|
||||
assertNull(QueryManager.getLocalDate(rs, "dt"));
|
||||
assertNull(QueryManager.getLocalDate(rs, 2));
|
||||
assertNull(QueryManager.getLocalDateTime(rs, "dt"));
|
||||
assertNull(QueryManager.getLocalDateTime(rs, 2));
|
||||
assertNull(QueryManager.getOffsetDateTime(rs, "dt"));
|
||||
assertNull(QueryManager.getOffsetDateTime(rs, 2));
|
||||
assertNull(QueryManager.getTimestamp(rs, "dt"));
|
||||
assertNull(QueryManager.getTimestamp(rs, 2));
|
||||
assertNull(QueryManager.getObject(rs, "c"));
|
||||
assertNull(QueryManager.getObject(rs, 3));
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user