From ab787900cfc379c2d3d229440f0db860efb332e8 Mon Sep 17 00:00:00 2001 From: Isaac Parenteau Date: Sun, 6 Oct 2019 14:29:14 -0500 Subject: [PATCH] started migrating to a database --- pom.xml | 254 +++++++++++++++--- .../eighttrack/handlers/Mp3UploadHandler.java | 60 +++++ .../eighttrack/handlers/Mp3UploadResults.java | 15 ++ .../{Entry.java => EightTrackLauncher.java} | 11 +- .../Tables/V01_000_000__initial_tables.sql | 8 + .../migration/mariadb/afterMigrate.sql | 34 +++ 6 files changed, 349 insertions(+), 33 deletions(-) create mode 100644 src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadHandler.java create mode 100644 src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadResults.java rename src/main/java/net/locusworks/discord/eighttrack/main/{Entry.java => EightTrackLauncher.java} (84%) create mode 100644 src/main/resources/database/migration/mariadb/Tables/V01_000_000__initial_tables.sql create mode 100644 src/main/resources/database/migration/mariadb/afterMigrate.sql diff --git a/pom.xml b/pom.xml index 4831a91..6e99497 100644 --- a/pom.xml +++ b/pom.xml @@ -18,11 +18,18 @@ - 2.11.2 - 1.7.26 - http://nexus.locusworks.net + 6.0.3 + 2.4.4 + 5.4.4.Final + 5.1.9.RELEASE + 2.1.8.RELEASE + 2.1.10.RELEASE + 2.12.1 + 1.7.28 + 3.0.0-M2 5.2.2 3.0 + http://nexus.locusworks.net @@ -64,33 +71,18 @@ - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} - package - shade + repackage - EightTrack-${project.version} - - - net.locusworks.discord.eighttrack.main.Entry - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - + EightTrackApp + JAR + @@ -118,21 +110,78 @@ + + org.flywaydb + flyway-maven-plugin + ${flyway.version} + + jdbc:mariadb://devops.locusworks.net:3306/ + false + + eighttrack + + _flyway_migration
+ + filesystem:${basedir}/src/main/resources/database/migration + +
+ + + + org.mariadb.jdbc + mariadb-java-client + ${mariadb.version} + + +
- - net.dv8tion - JDA - 4.0.0_46 + net.locusworks + applogger + 1.0.3-RELEASE net.locusworks - applogger - 1.0.1-RELEASE + crypto + 1.0.3-RELEASE + + + + org.apache.tika + tika-core + 1.22 + + + + org.apache.tika + tika-parsers + 1.22 + + + + + net.dv8tion + JDA + 4.0.0_47 + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + @@ -141,6 +190,149 @@ 1.3.22 + + + org.flywaydb + flyway-core + ${flyway.version} + + + + org.mariadb.jdbc + mariadb-java-client + ${mariadb.version} + + + + + mysql + mysql-connector-java + 8.0.17 + + + + org.hibernate + hibernate-entitymanager + ${hibernate.version} + + + + + org.apache.commons + commons-dbcp2 + 2.7.0 + + + + + + org.springframework.boot + spring-boot + ${spring.boot.version} + + + org.springframework + spring-context + + + org.springframework + spring-core + + + org.hibernate + hibernate-core + + + + + + + org.springframework.boot + spring-boot-autoconfigure + ${spring.boot.version} + + + + + org.springframework + spring-core + ${spring.version} + + + org.springframework + spring-aop + ${spring.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-jdbc + ${spring.version} + + + org.springframework + spring-tx + ${spring.version} + + + org.springframework.data + spring-data-jpa + ${spring.data.version} + + + + + javax.annotation + javax.annotation-api + 1.3.2 + + + + + com.fasterxml.jackson.core + jackson-core + 2.10.0.pr3 + + + + + com.fasterxml.jackson.core + jackson-databind + 2.10.0.pr3 + + + + + com.fasterxml.jackson.core + jackson-annotations + 2.10.0.pr3 + + + + javax.xml.bind + jaxb-api + 2.2.11 + + + com.sun.xml.bind + jaxb-core + 2.2.11 + + + com.sun.xml.bind + jaxb-impl + 2.2.11 + + + javax.activation + activation + 1.1.1 + + diff --git a/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadHandler.java b/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadHandler.java new file mode 100644 index 0000000..294ae90 --- /dev/null +++ b/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadHandler.java @@ -0,0 +1,60 @@ +package net.locusworks.discord.eighttrack.handlers; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.tika.exception.TikaException; +import org.apache.tika.metadata.Metadata; +import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.mp3.LyricsHandler; +import org.apache.tika.parser.mp3.Mp3Parser; +import org.apache.tika.sax.BodyContentHandler; +import org.xml.sax.SAXException; + +public class Mp3UploadHandler { + + private Path file; + + public Mp3UploadHandler(Path file) { + this.file = file; + } + + public void parse() throws IOException, SAXException, TikaException { + + InputStream is = Files.newInputStream(file); + + BodyContentHandler handler = new BodyContentHandler(); + Metadata metadata = new Metadata(); + ParseContext context = new ParseContext(); + + Mp3Parser parser = new Mp3Parser(); + + parser.parse(is, handler, metadata, context); + + LyricsHandler lyrics = new LyricsHandler(is, handler); + + while(lyrics.hasLyrics()) { + System.out.println(lyrics.toString()); + } + + System.out.println("Contents of the document:" + handler.toString()); + System.out.println("Metadata of the document:"); + String[] metadataNames = metadata.names(); + + for(String name : metadataNames) { + System.out.println(name + ": " + metadata.get(name)); + } + } + + public static void main(String args[]) throws IOException, SAXException, TikaException { + String file = "S:\\Music\\Alan Walker\\01 Diamond Heart.mp3"; + Path path = Paths.get(file); + + Mp3UploadHandler fuh = new Mp3UploadHandler(path); + fuh.parse(); + } + +} diff --git a/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadResults.java b/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadResults.java new file mode 100644 index 0000000..138351e --- /dev/null +++ b/src/main/java/net/locusworks/discord/eighttrack/handlers/Mp3UploadResults.java @@ -0,0 +1,15 @@ +package net.locusworks.discord.eighttrack.handlers; + +import org.apache.tika.metadata.Metadata; + +public class Mp3UploadResults { + + public Mp3UploadResults( Metadata metadata) { + parseResults(metadata); + } + + private void parseResults(Metadata metadata) { + + } + +} diff --git a/src/main/java/net/locusworks/discord/eighttrack/main/Entry.java b/src/main/java/net/locusworks/discord/eighttrack/main/EightTrackLauncher.java similarity index 84% rename from src/main/java/net/locusworks/discord/eighttrack/main/Entry.java rename to src/main/java/net/locusworks/discord/eighttrack/main/EightTrackLauncher.java index 259ef27..1f2f2d7 100644 --- a/src/main/java/net/locusworks/discord/eighttrack/main/Entry.java +++ b/src/main/java/net/locusworks/discord/eighttrack/main/EightTrackLauncher.java @@ -31,6 +31,10 @@ import java.io.IOException; import java.nio.file.Paths; import javax.security.auth.login.LoginException; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + import net.dv8tion.jda.api.AccountType; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; @@ -38,12 +42,15 @@ import net.locusworks.discord.eighttrack.adaptors.MusicListenerAdaptor; import net.locusworks.logger.ApplicationLogger; import net.locusworks.logger.ApplicationLoggerFactory; -public class Entry { +@SpringBootApplication(scanBasePackages = {"net.locusworks.discord.pseudobot"}) +@EnableAutoConfiguration +@EnableScheduling +public class EightTrackLauncher { public static void main(String[] args) throws LoginException, IOException { if (args.length < 1) throw new RuntimeException("no token provided"); - ApplicationLogger logger = ApplicationLoggerFactory.getLogger(Entry.class); + ApplicationLogger logger = ApplicationLoggerFactory.getLogger(EightTrackLauncher.class); logger.info("Starting Eight-Track"); JDA client = new JDABuilder(AccountType.BOT).setToken(args[0]).build(); diff --git a/src/main/resources/database/migration/mariadb/Tables/V01_000_000__initial_tables.sql b/src/main/resources/database/migration/mariadb/Tables/V01_000_000__initial_tables.sql new file mode 100644 index 0000000..6aa1706 --- /dev/null +++ b/src/main/resources/database/migration/mariadb/Tables/V01_000_000__initial_tables.sql @@ -0,0 +1,8 @@ +CREATE TABLE eighttrack.discord_guild ( + id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Auto increment primary key', + guild_id bigint(20) NOT NULL COMMENT 'id of the discord guild', + guild_name varchar(100) NOT NULL COMMENT 'name of the discord guild', + date_joined datetime DEFAULT NULL COMMENT 'date the guild joined', + PRIMARY KEY (id), + UNIQUE KEY guild_UN (guild_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Information about discord guild'; diff --git a/src/main/resources/database/migration/mariadb/afterMigrate.sql b/src/main/resources/database/migration/mariadb/afterMigrate.sql new file mode 100644 index 0000000..629d102 --- /dev/null +++ b/src/main/resources/database/migration/mariadb/afterMigrate.sql @@ -0,0 +1,34 @@ +USE pseudobot; + +DELIMITER $$ +CREATE PROCEDURE set_optimizer_switch_on() +BEGIN +IF SUBSTRING(@@version,1,3) = '5.7' THEN + SET optimizer_switch = 'derived_merge=on'; +END IF; +END;$$ + +CREATE PROCEDURE create_user() +BEGIN + DECLARE foo BIGINT DEFAULT 0; + SELECT COUNT(*) INTO foo FROM mysql.user WHERE User = 'eighttrackAdmin' and Host = 'localhost'; + IF foo = 0 THEN + CREATE USER 'eighttrackAdmin'@'localhost' IDENTIFIED BY 'eighttrackAdmin2017!'; + END IF; + SELECT COUNT(*) INTO foo FROM mysql.user WHERE User = 'eighttrackAdmin' and Host = '%'; + IF foo = 0 THEN + CREATE USER 'eighttrackAdmin'@'%' IDENTIFIED BY 'eighttrackAdmin2017!'; + END IF; +END ;$$ + +DELIMITER ; + +CALL set_optimizer_switch_on(); +DROP PROCEDURE set_optimizer_switch_on; + +CALL create_user(); +DROP PROCEDURE create_user; + +GRANT SELECT,INSERT,UPDATE,DELETE ON pseudobot.* TO 'eighttrackAdmin'@'localhost'; +GRANT SELECT,INSERT,UPDATE,DELETE ON pseudobot.* TO 'eighttrackAdmin'@'%'; +FLUSH PRIVILEGES; \ No newline at end of file