TextureSync/client/src/main/kotlin/org/hso/texturesyncclient/controller/Controller.kt

79 lines
2.3 KiB
Kotlin
Raw Normal View History

package org.hso.texturesyncclient.controller
2019-06-03 17:33:23 +02:00
import javafx.collections.ObservableList
2019-06-03 16:46:57 +02:00
import org.hso.texturesyncclient.controller.net.Connection
2019-06-04 14:57:54 +02:00
import org.hso.texturesyncclient.model.Sha256
import org.hso.texturesyncclient.model.Texture
import org.hso.texturesyncclient.model.TextureFormat
2019-06-03 16:46:57 +02:00
import org.hso.texturesyncclient.view.importView.ImportViewController
import org.hso.texturesyncclient.view.mainView.MainViewController
2019-06-03 16:46:57 +02:00
import org.hso.texturesyncclient.view.startupView.StartupViewController
import tornadofx.Controller
2019-06-03 16:46:57 +02:00
import java.net.InetAddress
2019-06-03 20:42:28 +02:00
import java.util.Calendar
2019-06-03 21:40:02 +02:00
import java.io.File
import javax.imageio.ImageIO
2019-06-04 14:57:54 +02:00
import java.util.UUID
import java.nio.file.Files
2019-06-03 22:24:18 +02:00
2019-06-03 21:40:02 +02:00
2019-06-03 20:42:28 +02:00
2019-06-03 17:33:23 +02:00
class RootController : Controller() {
private val mvc: MainViewController by inject()
2019-06-03 16:46:57 +02:00
private val svc: StartupViewController by inject()
private val ivc: ImportViewController by inject()
2019-06-03 16:46:57 +02:00
private val con = Connection(InetAddress.getByName("127.0.0.1"))
2019-06-03 17:33:23 +02:00
init {
2019-06-03 16:46:57 +02:00
/*var data = Texture()
var img = con.getTexturePreview(data.textureHash)
var test = GUIModel(data, img)
test.exportItem.setOnAction {
}
2019-06-03 16:46:57 +02:00
mvc.addElement(test)
data = Texture()
img = con.getTexturePreview(data.textureHash)
test = GUIModel(data, img)
test.exportItem.setOnAction {
}
2019-06-03 16:46:57 +02:00
mvc.addElement(test)*/
}
2019-06-03 17:33:23 +02:00
/**
* calculate the resolution, get today's date -> upload to server
* @param path the absolute path of the file on the client's system
* @param name the file name
* @param tags all tags for the file
*/
fun importTexture(path: String, name: String, tags: ObservableList<String>) {
2019-06-04 14:57:54 +02:00
val data = Files.readAllBytes(File(path).toPath()) // this is the image as byte array
2019-06-03 17:33:23 +02:00
2019-06-04 14:57:54 +02:00
val uuid = UUID.randomUUID()
val format = if (File(path).extension.toLowerCase() == "png") TextureFormat.PNG else TextureFormat.JPEG
2019-06-03 21:40:02 +02:00
val bimg = ImageIO.read(File(path)) //image for obtaining resolution
2019-06-04 14:57:54 +02:00
val resolution = Pair(bimg.height, bimg.width)
val cal = Calendar.getInstance() //calendar obj with current time
val hash = Sha256(data)
//Todo free image
2019-06-03 20:42:28 +02:00
2019-06-04 14:57:54 +02:00
val newTexture = Texture(uuid, name, tags.toTypedArray(), format, resolution, cal, hash)
2019-06-03 20:42:28 +02:00
2019-06-04 14:57:54 +02:00
con.uploadTexture(newTexture, data)
2019-06-03 17:33:23 +02:00
}
2019-06-03 22:24:18 +02:00
}