commit 14/10/2025
Soundbank Menu beres
This commit is contained in:
@@ -254,33 +254,28 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
||||
post("Add") {
|
||||
try {
|
||||
val addvalue = objectmapper.readValue(it.body(), Soundbank::class.java)
|
||||
if (ValidString(addvalue.Description)) {
|
||||
if (ValidString(addvalue.TAG)) {
|
||||
if (ValidString(addvalue.Category)) {
|
||||
if (ValidString(addvalue.Language)) {
|
||||
if (ValidString(addvalue.Path)) {
|
||||
// check apakah TAG sudah ada untuk language dan category yang sama
|
||||
val exists = db.soundDB.List.any { sb ->
|
||||
sb.TAG == addvalue.TAG && sb.Language == addvalue.Language && sb.Category == addvalue.Category
|
||||
}
|
||||
if (!exists) {
|
||||
if (ValidFile(addvalue.Path)) {
|
||||
if (db.soundDB.Add(addvalue)) {
|
||||
db.soundDB.Resort()
|
||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||
} else it.status(500)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to add soundbank to database")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Invalid Path, file does not exist")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("TAG=${addvalue.TAG} already exists for the same Language=${addvalue.Language} and Category=${addvalue.Category}")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Path")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Language")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Category")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid TAG")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Description")))
|
||||
} catch (_: Exception) {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid request body")))
|
||||
if (addvalue.isNotEmpty()){
|
||||
// check apakah TAG sudah ada untuk language, category dan voicetype yang sama
|
||||
val exists = db.soundDB.List.any { sb ->
|
||||
sb.TAG == addvalue.TAG && sb.Language == addvalue.Language && sb.Category == addvalue.Category && sb.VoiceType == addvalue.VoiceType
|
||||
}
|
||||
if (!exists) {
|
||||
val absolutepath = Somecodes.SoundbankDirectory(Language.valueOf(addvalue.Language), VoiceType.valueOf(addvalue.VoiceType), Category.valueOf(addvalue.Category)).resolve(addvalue.Path)
|
||||
if (Files.isRegularFile(absolutepath)) {
|
||||
addvalue.Path = absolutepath.toAbsolutePath().toString()
|
||||
if (db.soundDB.Add(addvalue)) {
|
||||
db.soundDB.Resort()
|
||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||
} else it.status(500)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to add soundbank to database")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Invalid Path, file does not exist")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("TAG=${addvalue.TAG} already exists for the same Language=${addvalue.Language} and Category=${addvalue.Category}")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Some fields are empty")))
|
||||
|
||||
} catch (e: Exception) {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid request body, Message: ${e.message}")))
|
||||
}
|
||||
}
|
||||
delete("List") {
|
||||
@@ -309,68 +304,78 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
||||
patch("UpdateByIndex/{index}") {
|
||||
// update by index
|
||||
val index = it.pathParam("index").toUIntOrNull()
|
||||
if (index == null) {
|
||||
// tidak ada path param index
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index")))
|
||||
} else {
|
||||
if (index!=null){
|
||||
val sb = db.soundDB.List.find { xx -> xx.index == index }
|
||||
if (sb == null) {
|
||||
// soundbank dengan index tersebut tidak ditemukan
|
||||
it.status(404).result(objectmapper.writeValueAsString(resultMessage("Soundbank with index $index not found")))
|
||||
} else {
|
||||
// soundbank dengan index tersebut ditemukan, sekarang update
|
||||
val json: JsonNode = objectmapper.readTree(it.body())
|
||||
if (json.isEmpty) {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("UpdateByIndex with index=$index has empty body")))
|
||||
} else {
|
||||
val _description = json.get("Description").asText("")
|
||||
val _tag = json.get("TAG").asText("")
|
||||
val _category = json.get("Category").asText("")
|
||||
val _language = json.get("Language").asText("")
|
||||
val _path = json.get("Path").asText("")
|
||||
var changed = false
|
||||
if (ValidString(_description) && _description != sb.Description) {
|
||||
sb.Description = _description
|
||||
changed = true
|
||||
}
|
||||
if (ValidString(_tag) && _tag != sb.TAG) {
|
||||
sb.TAG = _tag
|
||||
changed = true
|
||||
}
|
||||
if (ValidString(_category) && _category != sb.Category) {
|
||||
if (Category.entries.any { cat ->
|
||||
cat.name == _category
|
||||
}) {
|
||||
sb.Category = _category
|
||||
changed = true
|
||||
if (sb!=null){
|
||||
try{
|
||||
//println("index=$index, body=${it.body()}")
|
||||
val newsb = objectmapper.readValue(it.body(), Soundbank::class.java)
|
||||
//println("newsb=$newsb")
|
||||
if (newsb.isNotEmpty()){
|
||||
var varchanged = false
|
||||
if (newsb.Description != sb.Description) {
|
||||
sb.Description = newsb.Description
|
||||
varchanged = true
|
||||
}
|
||||
if (newsb.TAG != sb.TAG) {
|
||||
sb.TAG = newsb.TAG
|
||||
varchanged = true
|
||||
}
|
||||
if (newsb.ValidCategory()) {
|
||||
if (newsb.Category != sb.Category){
|
||||
sb.Category = newsb.Category
|
||||
varchanged = true
|
||||
}
|
||||
} else {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Category")))
|
||||
return@patch
|
||||
}
|
||||
}
|
||||
if (ValidString(_language) && _language != sb.Language) {
|
||||
sb.Language = _language
|
||||
changed = true
|
||||
}
|
||||
if (ValidString(_path) && _path != sb.Path) {
|
||||
if (ValidFile(_path)) {
|
||||
sb.Path = _path
|
||||
changed = true
|
||||
if (newsb.ValidLanguage()) {
|
||||
if (newsb.Language != sb.Language){
|
||||
sb.Language = newsb.Language
|
||||
varchanged = true
|
||||
}
|
||||
} else {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Path, file does not exist")))
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Language")))
|
||||
return@patch
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
if (db.soundDB.UpdateByIndex(index.toInt(), sb)) {
|
||||
db.soundDB.Resort()
|
||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update soundbank with index $index")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Nothing has changed for soundbank with index $index")))
|
||||
if (newsb.ValidVoiceType()) {
|
||||
if (newsb.VoiceType != sb.VoiceType){
|
||||
sb.VoiceType = newsb.VoiceType
|
||||
varchanged = true
|
||||
}
|
||||
} else {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid VoiceType")))
|
||||
return@patch
|
||||
}
|
||||
|
||||
val newpath = Somecodes.SoundbankDirectory(newsb.Language, newsb.VoiceType, newsb.Category).resolve(newsb.Path)
|
||||
if (Files.isRegularFile(newpath)){
|
||||
if (newpath.toAbsolutePath().toString() != sb.Path) {
|
||||
sb.Path = newpath.toAbsolutePath().toString()
|
||||
varchanged = true
|
||||
}
|
||||
} else {
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid path")))
|
||||
return@patch
|
||||
}
|
||||
|
||||
if (varchanged) {
|
||||
//println("Some fields changed for index=$index, updating...")
|
||||
if (db.soundDB.UpdateByIndex(index.toInt(), sb)) {
|
||||
db.soundDB.Resort()
|
||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update soundbank with index $index")))
|
||||
} else it.status(400)
|
||||
.result(objectmapper.writeValueAsString(resultMessage("Nothing has changed for soundbank with index $index")))
|
||||
} else Exception("Some fields are empty")
|
||||
} catch(e: Exception){
|
||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Unable to parse request body to Soundbank, Message: ${e.message}")))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else it.status(404).result(objectmapper.writeValueAsString(resultMessage("Soundbank with index $index not found")))
|
||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index")))
|
||||
|
||||
}
|
||||
get("ExportXLSX") {
|
||||
val xlsxdata = db.soundDB.Export_XLSX()
|
||||
|
||||
Reference in New Issue
Block a user