diff --git a/src/main/java/com/bernard/juliabot/JuliaErrPrintStream.java b/src/main/java/com/bernard/juliabot/JuliaErrPrintStream.java new file mode 100644 index 0000000..e43f2a4 --- /dev/null +++ b/src/main/java/com/bernard/juliabot/JuliaErrPrintStream.java @@ -0,0 +1,60 @@ +package com.bernard.juliabot; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import net.dv8tion.jda.core.MessageBuilder; +import net.dv8tion.jda.core.entities.MessageChannel; + +public class JuliaErrPrintStream extends OutputStream { + + StringBuilder tas = new StringBuilder(2000);// Les 2000 caractères de Discord + + Lock cadenas; + + MessageChannel logChannel; + + public static final int maxlength = 1900; + + public JuliaErrPrintStream(MessageChannel logChan) { + this.cadenas = new ReentrantLock(); + this.logChannel = logChan; + } + + @Override + public void write(int i) throws IOException { + tas.append((char)(i)); + } + + + @Override + public void flush() { + } + + + + public void flushMessage() { + if(tas.length()==0)return; + this.cadenas.lock(); + String str = tas.toString(); + for(int i = 0; i*maxlength < tas.length();i++) { + MessageBuilder builder = new MessageBuilder(); + builder.appendCodeBlock(str.substring(i*maxlength, Math.min((i+1)*maxlength,tas.length())), ""); + logChannel.sendMessage(builder.build()).queue(); + } + tas = new StringBuilder(); + this.cadenas.unlock(); + + } + + PrintStream ps = null; + public PrintStream printStream() { + if(ps == null) + ps = new PrintStream(this); + return ps; + } + +} diff --git a/src/main/java/com/bernard/juliabot/api/JuliaConfig.java b/src/main/java/com/bernard/juliabot/api/JuliaConfig.java new file mode 100644 index 0000000..0fd072e --- /dev/null +++ b/src/main/java/com/bernard/juliabot/api/JuliaConfig.java @@ -0,0 +1,40 @@ +package com.bernard.juliabot.api; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import com.bernard.juliabot.Julia; + +public class JuliaConfig { + + public static final String get(String name) { + try { + PreparedStatement st = Julia.theJulia().getJuliaDatabase().prepareStatement("SELECT * FROM juliaConfig WHERE strID=?"); + st.setString(1, name); + ResultSet r = st.executeQuery(); + if(r.getFetchSize() == 0) + throw new IllegalArgumentException("La configuration "+name+" n'existe pas ... veuillez la rentrer avant de la demander"); + String value = r.getString("value"); + return value; + } catch (SQLException e) { + e.printStackTrace(); + throw new IllegalStateException("Impossible de faire des requetes à la bdd de julia. Est-elle initialisée au moins ?"); + } + } + + public static final void set(String name, String value) { + try { + PreparedStatement st = Julia.theJulia().getJuliaDatabase().prepareStatement("UPDATE juliaConfig SET value=? WHERE strID=?"); + st.setString(1, value); + st.setString(2, value); + int r = st.executeUpdate(); + if(r == 0) + throw new IllegalArgumentException("La configuration "+name+" n'a pas pu être modifiée ... existe-elle ?"); + } catch (SQLException e) { + e.printStackTrace(); + throw new IllegalStateException("Impossible de faire des requetes à la bdd de julia. Est-elle initialisée au moins ?"); + } + } + +}