Skip to content

Commit

Permalink
Add external logging
Browse files Browse the repository at this point in the history
  • Loading branch information
wyskoj committed Jun 13, 2022
1 parent f3408d5 commit 16e26d3
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 2 deletions.
5 changes: 5 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,11 @@ dependencies {
// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
implementation("ch.qos.logback:logback-classic:1.3.0-alpha14")

// OS analysis
implementation("com.github.oshi:oshi-core:6.1.6")

// Database
implementation("mysql:mysql-connector-java:8.0.29")
}

tasks.withType<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar> {
Expand Down
15 changes: 13 additions & 2 deletions src/main/kotlin/org/wysko/midis2jam2/starter/Execution.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import org.wysko.midis2jam2.gui.getGraphicsSettings
import org.wysko.midis2jam2.gui.loadSettingsFromFile
import org.wysko.midis2jam2.midi.DesktopMidiFile
import org.wysko.midis2jam2.midi.MidiFile
import org.wysko.midis2jam2.util.ExternalLogging
import org.wysko.midis2jam2.util.logger
import java.awt.Dimension
import java.awt.Toolkit
Expand Down Expand Up @@ -343,14 +344,19 @@ private open class StandardExecution(
}

override fun simpleInitApp() {
val midiFile = DesktopMidiFile(File(properties.getProperty("midi_file")))
DesktopMidis2jam2(
sequencer = sequencer,
DesktopMidiFile(File(properties.getProperty("midi_file"))),
midiFile,
properties = properties,
onFinish
).also {
stateManager.attach(it)
rootNode.attachChild(it.rootNode)
}.also {
CoroutineScope(Default).launch {
ExternalLogging.log(midiFile)
}
}
}
}
Expand Down Expand Up @@ -385,14 +391,19 @@ private open class LegacyExecution(
}

override fun simpleInitApp() {
val midiFile = DesktopMidiFile(File(properties.getProperty("midi_file")))
DesktopMidis2jam2(
sequencer = sequencer,
DesktopMidiFile(File(properties.getProperty("midi_file"))),
midiFile,
properties = properties,
onFinish
).also {
stateManager.attach(it)
rootNode.attachChild(it.rootNode)
}.also {
CoroutineScope(Default).launch {
ExternalLogging.log(midiFile)
}
}
}
}
Expand Down
55 changes: 55 additions & 0 deletions src/main/kotlin/org/wysko/midis2jam2/util/ExternalLogging.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (C) 2022 Jacob Wysko
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/

package org.wysko.midis2jam2.util

import org.wysko.midis2jam2.midi.MidiFile
import org.wysko.midis2jam2.midi.MidiProgramEvent
import org.wysko.midis2jam2.midi.MidiTextEvent
import oshi.SystemInfo
import java.sql.DriverManager
import java.util.*

private val uuid = SystemInfo().hardware.computerSystem.hardwareUUID

/** Logs executions externally. */
object ExternalLogging {
/** Performs a log operation. */
fun log(midiFile: MidiFile) {
try {
Class.forName("com.mysql.cj.jdbc.Driver")
DriverManager.getConnection(String(Base64.getDecoder().decode(Utils.resourceToString("/db.conn")))).run {
val stmt = prepareStatement(String(Base64.getDecoder().decode(Utils.resourceToString("/db.stmt"))))

stmt.setString(1, uuid)
stmt.setString(2, midiFile.name)
stmt.setInt(3, midiFile.division)
stmt.setInt(4, midiFile.tracks.size)
stmt.setFloat(5, midiFile.length.toFloat())
stmt.setString(
6,
midiFile.tracks.flatMap { it.events }.filterIsInstance<MidiProgramEvent>()
.distinctBy { it.programNum }.joinToString(separator = ",") { it.programNum.toString() }
)
stmt.setInt(7, midiFile.tracks.flatMap { it.events }.count { it is MidiTextEvent })
stmt.execute()
}
} catch (e: Exception) {
logger().warn("Could not perform external log.")
}
}
}
1 change: 1 addition & 0 deletions src/main/resources/db.conn
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
amRiYzpteXNxbDovL21pZGlzMmphbTIuY3Zkb2JhcWgzNXEzLnVzLWVhc3QtMS5yZHMuYW1hem9uYXdzLmNvbTozMzA2P3VzZXI9cHVibGljJnBhc3N3b3JkPXB1YmxpYw==
1 change: 1 addition & 0 deletions src/main/resources/db.stmt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SU5TRVJUIElOVE8gbWlkaXMyamFtMi5FeGVjdXRpb24gKHV1aWQsIGZpbGVfbmFtZSwgZGl2aXNpb24sIHRyYWNrX2NvdW50LCBsZW5ndGhfc2Vjb25kcywgaW5zdHJ1bWVudHMsIGx5cmljX2V2ZW50cykKVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/KQ==

0 comments on commit 16e26d3

Please sign in to comment.