diff --git a/pom.xml b/pom.xml
index 0872d2f..03e72ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,6 +150,11 @@
hibernate-ehcache
${lib.hibernate.version}
+
+ org.hibernate
+ hibernate-c3p0
+ ${lib.hibernate.version}
+
diff --git a/src/includes/logback.xml b/src/includes/logback.xml
index 713ce5d..4d0b07f 100644
--- a/src/includes/logback.xml
+++ b/src/includes/logback.xml
@@ -1,5 +1,7 @@
+
+
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 41bd007..96f1af7 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -7,10 +7,12 @@
- org.h2.Driver
-
- org.hibernate.dialect.H2Dialect
- false
+ org.h2.Driver
+
+ org.hibernate.dialect.H2Dialect
+ false
+
+
@@ -19,10 +21,19 @@
update
- thread
+ thread
-
-
+
+ org.hibernate.cache.ehcache.EhCacheRegionFactory
+ org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
+ true
+
+ 1
+ 100
+ 50
+ 0
+ 5
+ 100
diff --git a/src/main/scala/com/sothr/imagetools/hash/AHash.scala b/src/main/scala/com/sothr/imagetools/hash/AHash.scala
index cfec911..a2e7cd3 100644
--- a/src/main/scala/com/sothr/imagetools/hash/AHash.scala
+++ b/src/main/scala/com/sothr/imagetools/hash/AHash.scala
@@ -7,10 +7,10 @@ import grizzled.slf4j.Logging
*/
object AHash extends PerceptualHasher with Logging {
def getHash(imageData: Array[Array[Int]]): Long = {
- debug("Generating AHash")
+ //debug("Generating AHash")
val width = imageData.length
val height = imageData(0).length
- debug(s"Image data size: ${width}x${height}")
+ //debug(s"Image data size: ${width}x${height}")
//calculate average pixel
var total = 0
diff --git a/src/main/scala/com/sothr/imagetools/hash/DHash.scala b/src/main/scala/com/sothr/imagetools/hash/DHash.scala
index e1d1c77..74e8529 100644
--- a/src/main/scala/com/sothr/imagetools/hash/DHash.scala
+++ b/src/main/scala/com/sothr/imagetools/hash/DHash.scala
@@ -7,10 +7,10 @@ import grizzled.slf4j.Logging
*/
object DHash extends PerceptualHasher with Logging {
def getHash(imageData: Array[Array[Int]]): Long = {
- debug("Generating DHash")
+ //debug("Generating DHash")
val width = imageData.length
val height = imageData(0).length
- debug(s"Image data size: ${width}x${height}")
+ //debug(s"Image data size: ${width}x${height}")
//calculate dhash
var hash = 0L
diff --git a/src/main/scala/com/sothr/imagetools/hash/HashService.scala b/src/main/scala/com/sothr/imagetools/hash/HashService.scala
index 880e372..acda243 100644
--- a/src/main/scala/com/sothr/imagetools/hash/HashService.scala
+++ b/src/main/scala/com/sothr/imagetools/hash/HashService.scala
@@ -23,7 +23,7 @@ object HashService extends Logging {
}
def getImageHashes(image:BufferedImage, imagePath:String):ImageHashDTO = {
- debug("Creating hashes for an image")
+ //debug("Creating hashes for an image")
var ahash:Long = 0L
var dhash:Long = 0L
@@ -50,7 +50,7 @@ object HashService extends Logging {
}
def getAhash(image:BufferedImage, alreadyGray:Boolean = false):Long = {
- debug("Started generating an AHash")
+ //debug("Started generating an AHash")
var grayImage:BufferedImage = null
if (alreadyGray) {
grayImage = image
@@ -63,7 +63,7 @@ object HashService extends Logging {
}
def getDhash(image:BufferedImage, alreadyGray:Boolean = false):Long = {
- debug("Started generating an DHash")
+ //debug("Started generating an DHash")
var grayImage:BufferedImage = null
if (alreadyGray) {
grayImage = image
@@ -76,7 +76,7 @@ object HashService extends Logging {
}
def getPhash(image:BufferedImage, alreadyGray:Boolean = false):Long = {
- debug("Started generating an PHash")
+ //debug("Started generating an PHash")
var grayImage:BufferedImage = null
if (alreadyGray) {
grayImage = image
diff --git a/src/main/scala/com/sothr/imagetools/hash/PHash.scala b/src/main/scala/com/sothr/imagetools/hash/PHash.scala
index 7e24cfd..8fe1242 100644
--- a/src/main/scala/com/sothr/imagetools/hash/PHash.scala
+++ b/src/main/scala/com/sothr/imagetools/hash/PHash.scala
@@ -11,7 +11,7 @@ object PHash extends PerceptualHasher with Logging {
//convert the imageData into a FloatArray
val width = imageData.length
val height = imageData(0).length
- debug(s"Starting with image of ${height}x${width} for PHash")
+ //debug(s"Starting with image of ${height}x${width} for PHash")
val imageDataFloat:Array[Array[Float]] = Array.ofDim[Float](height, width)
for (row <- 0 until height) {
@@ -19,13 +19,13 @@ object PHash extends PerceptualHasher with Logging {
imageDataFloat(row)(col) = imageData(row)(col).toFloat
}
}
- debug("Copied image data to float array for transform")
+ //debug("Copied image data to float array for transform")
//debug(s"\n${imageDataFloat.deep.mkString("\n")}")
//perform transform on the data
val dct:FloatDCT_2D = new FloatDCT_2D(height,width)
dct.forward(imageDataFloat, true)
- debug("Converted image data into DCT")
+ //debug("Converted image data into DCT")
//debug(s"\n${imageDataFloat.deep.mkString("\n")}")
//extract the DCT data
@@ -40,7 +40,7 @@ object PHash extends PerceptualHasher with Logging {
}
}
val mean = total / (dctDataHeight * dctDataWidth)
- debug(s"Calculated mean as $mean from ${total}/${dctDataHeight * dctDataWidth}")
+ //debug(s"Calculated mean as $mean from ${total}/${dctDataHeight * dctDataWidth}")
//calculate the hash
var hash = 0L
diff --git a/src/main/scala/com/sothr/imagetools/image/ImageService.scala b/src/main/scala/com/sothr/imagetools/image/ImageService.scala
index de49a73..3b4735b 100644
--- a/src/main/scala/com/sothr/imagetools/image/ImageService.scala
+++ b/src/main/scala/com/sothr/imagetools/image/ImageService.scala
@@ -60,6 +60,7 @@ object ImageService extends Logging {
debug(s"${file.getAbsolutePath} was already processed")
return image
} else {
+ debug(s"Processing image: ${file.getAbsolutePath}")
val bufferedImage = ImageIO.read(file)
val hashes = HashService.getImageHashes(bufferedImage, file.getAbsolutePath)
var thumbnailPath = lookupThumbnailPath(hashes.md5)
@@ -134,7 +135,7 @@ object ImageService extends Logging {
* @return
*/
def convertToGray(image:BufferedImage):BufferedImage = {
- debug("Converting an image to grayscale")
+ //debug("Converting an image to grayscale")
val grayImage = new BufferedImage(image.getWidth, image.getHeight, BufferedImage.TYPE_BYTE_GRAY)
//create a color conversion operation
@@ -152,7 +153,7 @@ object ImageService extends Logging {
}
def resize(image:BufferedImage, size:Int, forced:Boolean=false):BufferedImage = {
- debug(s"Resizing an image to size: ${size}x${size} forced: $forced")
+ //debug(s"Resizing an image to size: ${size}x${size} forced: $forced")
if (forced) {
Thumbnails.of(image).forceSize(size,size).asBufferedImage
} else {
@@ -174,15 +175,15 @@ object ImageService extends Logging {
val height = image.getHeight
val isSingleChannel = if(numPixels == (width * height)) true else false
val hasAlphaChannel = image.getAlphaRaster != null
- debug(s"Converting image to 2d. width:$width height:$height")
+ //debug(s"Converting image to 2d. width:$width height:$height")
val result = Array.ofDim[Int](height,width)
if (isSingleChannel) {
- debug(s"Processing Single Channel Image")
+ //debug(s"Processing Single Channel Image")
val pixelLength = 1
var row = 0
var col = 0
- debug(s"Processing pixels 0 until $numPixels by $pixelLength")
+ //debug(s"Processing pixels 0 until $numPixels by $pixelLength")
for (pixel <- 0 until numPixels by pixelLength) {
//debug(s"Processing pixel: $pixel/${numPixels - 1}")
val argb:Int = pixels(pixel).toInt //singleChannel
@@ -196,11 +197,11 @@ object ImageService extends Logging {
}
}
else if (hasAlphaChannel) {
- debug(s"Processing Four Channel Image")
+ //debug(s"Processing Four Channel Image")
val pixelLength = 4
var row = 0
var col = 0
- debug(s"Processing pixels 0 until $numPixels by $pixelLength")
+ //debug(s"Processing pixels 0 until $numPixels by $pixelLength")
for (pixel <- 0 until numPixels by pixelLength) {
//debug(s"Processing pixel: $pixel/${numPixels - 1}")
var argb:Int = 0
@@ -216,11 +217,11 @@ object ImageService extends Logging {
}
}
} else {
- debug(s"Processing Three Channel Image")
+ //debug(s"Processing Three Channel Image")
val pixelLength = 3
var row = 0
var col = 0
- debug(s"Processing pixels 0 until $numPixels by $pixelLength")
+ //debug(s"Processing pixels 0 until $numPixels by $pixelLength")
for (pixel <- 0 until numPixels by pixelLength) {
//debug(s"Processing pixel: $pixel/${numPixels - 1}")
var argb:Int = 0
@@ -236,8 +237,6 @@ object ImageService extends Logging {
}
}
}
-
result
}
-
}
diff --git a/src/test/resources/hibernate.cfg.xml b/src/test/resources/hibernate.cfg.xml
index 6bd87a5..829720d 100644
--- a/src/test/resources/hibernate.cfg.xml
+++ b/src/test/resources/hibernate.cfg.xml
@@ -7,9 +7,9 @@
- org.h2.Driver
- org.hibernate.dialect.H2Dialect
- true
+ org.h2.Driver
+ org.hibernate.dialect.H2Dialect
+ true
@@ -20,8 +20,17 @@
thread
-
-
+
+ org.hibernate.cache.ehcache.EhCacheRegionFactory
+ org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
+ true
+
+ 1
+ 100
+ 50
+ 0
+ 5
+ 100
diff --git a/todo b/todo
index c7718c2..e68f6af 100644
--- a/todo
+++ b/todo
@@ -1,16 +1,13 @@
Add functionality to both engines
- -Move files to new locations
- -Rename new files based on their MD5
-Add functionality to ImageService
- -Cache thumbnails
- -Generate thumbnails
+ -Move files to new locations
+ -Rename new files based on their MD5 - abandoned as bad idea
Improve functionality of the PropertiesService
- -Getters and Setters for sepcific values with proper cascading and type awareness
- -Nicer debugging?
+ -Getters and Setters for sepcific values with proper cascading and type awareness
+ -Nicer debugging?
Hibernate - H2 intergration
- - setup hibernate
- - setup h2
- - setup C3P0 connection pool
- - transfer configuration files
- - autoload configuration files?
- - map DTO's
\ No newline at end of file
+ - autoload configuration files?
+Database - How to handle directories to reduce database storage?
+ - recursive database construction
+ -Factory to handle generating directory information
+ -Directory1 -> Directory2 -> Directory3
+ -result = Directory/Directory2/Directory3
\ No newline at end of file