Skip to content

Commit

Permalink
TableReader and TableWriter now takes care of java.sql.Date and java.…
Browse files Browse the repository at this point in the history
…sql.Timestamp to convert to java.time.LocalDate and java.time.LocalDateTime
  • Loading branch information
sunitparekh committed Mar 5, 2018
1 parent d0ba76c commit 2cb4a22
Show file tree
Hide file tree
Showing 12 changed files with 24 additions and 23 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.dataanon</groupId>
<artifactId>data-anon</artifactId>
<version>0.9.2</version>
<version>0.9.3</version>
<packaging>jar</packaging>

<name>data-anon</name>
Expand Down
12 changes: 11 additions & 1 deletion src/main/kotlin/com/github/dataanon/jdbc/TableReader.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.github.dataanon.jdbc

import com.github.dataanon.model.*
import java.sql.Date
import java.sql.ResultSet
import java.sql.Timestamp
import java.util.logging.Logger

class TableReader(dbConfig: DbConfig, private val table: Table) : Iterator<Record> {
Expand Down Expand Up @@ -31,7 +33,15 @@ class TableReader(dbConfig: DbConfig, private val table: Table) : Iterator<Recor

private fun toField(columnName: String) = Field(columnName, columnValue(columnName))

private fun columnValue(columnName: String) = rs.getObject(columnName) ?: NullValue
private fun columnValue(columnName: String): Any {
val value = rs.getObject(columnName)
return when (value) {
is Date -> value.toLocalDate()
is Timestamp -> value.toLocalDateTime()
else -> value ?: NullValue
}

}

private fun getTotalRecords(): Int {
val rs = conn.createStatement().executeQuery(table.generateCountQuery())
Expand Down
23 changes: 12 additions & 11 deletions src/main/kotlin/com/github/dataanon/jdbc/TableWriter.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package com.github.dataanon.jdbc

import com.github.dataanon.model.DbConfig
import com.github.dataanon.model.Field
import com.github.dataanon.model.Record
import com.github.dataanon.model.Table
import com.github.dataanon.model.*
import com.github.dataanon.utils.ProgressBarGenerator
import org.reactivestreams.Subscription
import reactor.core.publisher.BaseSubscriber
import reactor.core.publisher.SignalType
import java.sql.BatchUpdateException
import java.sql.PreparedStatement
import java.sql.Types
import java.sql.*
import java.time.LocalDate
import java.time.LocalDateTime
import java.util.logging.Level
import java.util.logging.Logger

Expand Down Expand Up @@ -56,9 +53,13 @@ class TableWriter(dbConfig: DbConfig, private val table: Table, private val prog
}

private fun writeToStatement(index: Int, field: Field<Any>) {
when {
field.isNull() -> stmt.setNull(index + 1, Types.NULL)
else -> stmt.setObject(index + 1, field.newValue)
val columnIndex = index + 1
val newValue = field.newValue
when (newValue) {
is NullValue -> stmt.setNull(columnIndex, Types.NULL)
is LocalDate -> stmt.setDate(columnIndex, Date.valueOf(newValue))
is LocalDateTime -> stmt.setTimestamp(columnIndex, Timestamp.valueOf(newValue))
else -> stmt.setObject(columnIndex, newValue)
}
}

Expand Down Expand Up @@ -100,7 +101,7 @@ class TableWriter(dbConfig: DbConfig, private val table: Table, private val prog
override fun hookFinally(type: SignalType?) {
progressBar?.stop()
if (stmt != null) stmt.close()
if (conn != null) conn.close()
conn?.close()
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import com.github.dataanon.support.MoviesTableHavingGenreSize10
import com.github.dataanon.utils.DataAnonTestLogHandler
import io.kotlintest.matchers.*
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.time.LocalDate
import java.util.logging.Level

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import com.github.dataanon.strategy.string.FixedString
import com.github.dataanon.strategy.string.RandomAlphabetic
import com.github.dataanon.support.MoviesTable
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.time.LocalDate
import java.util.regex.Pattern
import kotlin.test.assertEquals
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.github.dataanon.model.DbConfig
import com.github.dataanon.strategy.string.FixedString
import com.github.dataanon.support.MoviesTable
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.time.LocalDate
import java.util.regex.Pattern
import kotlin.test.assertEquals
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import com.github.dataanon.strategy.string.FixedString
import com.github.dataanon.support.MoviesTable
import com.github.dataanon.support.RatingsTable
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.sql.Timestamp
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneOffset
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.github.dataanon.model.DbConfig
import com.github.dataanon.strategy.number.FixedInt
import com.github.dataanon.support.RatingsTable
import io.kotlintest.specs.FunSpec
import java.sql.Timestamp
import java.time.LocalDateTime
import java.time.ZoneOffset
import kotlin.test.assertEquals
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.github.dataanon.model.DbConfig
import com.github.dataanon.strategy.string.FixedString
import com.github.dataanon.support.MoviesTable
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.time.LocalDate
import java.util.regex.Pattern
import kotlin.test.assertEquals
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import com.github.dataanon.model.DbConfig
import com.github.dataanon.support.MoviesTable
import io.kotlintest.matchers.shouldBe
import io.kotlintest.specs.FunSpec
import java.sql.Date
import java.time.LocalDate

class TableReaderIntegrationTest : FunSpec() {
Expand Down
1 change: 0 additions & 1 deletion src/test/kotlin/com/github/dataanon/support/MoviesTable.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.github.dataanon.support
import com.github.dataanon.model.DbConfig
import java.sql.Connection
import java.sql.Date
import java.sql.JDBCType
import java.time.LocalDate

class MoviesTable(dbConfig: DbConfig) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.github.dataanon.support

import com.github.dataanon.model.DbConfig
import java.sql.Connection
import java.sql.JDBCType
import java.sql.Timestamp
import java.time.LocalDateTime

Expand Down

0 comments on commit 2cb4a22

Please sign in to comment.