package com.juick.demo; import ch.vorburger.exec.ManagedProcessException; import ch.vorburger.mariadb4j.DB; import com.juick.Tag; import com.juick.User; import com.juick.server.MessagesQueries; import com.juick.server.PMQueries; import com.juick.server.TagQueries; import com.juick.server.UserQueries; import com.juick.server.protocol.JuickProtocol; import com.juick.server.protocol.ProtocolReply; import jline.UnsupportedTerminal; import jline.console.ConsoleReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; /** * Created by vitalyster on 30.08.2016. */ public class Demo { private static final Logger logger = LoggerFactory.getLogger(Demo.class); public static void main(String ...args) throws ManagedProcessException { DB db = DB.newEmbeddedDB(33306); db.start(); db.createDB("juick"); db.source("schema.sql"); DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:33306/juick?autoReconnect=true&user=root"); JdbcTemplate jdbc = new JdbcTemplate(dataSource); logger.info("initializing demo database"); Integer ugnich_id = UserQueries.createUser(jdbc, "ugnich", "secret"); Integer ugn_mid = MessagesQueries.createMessage(jdbc, ugnich_id, "Hi, I am ugnich", null, new ArrayList() {{add(TagQueries.getTag(jdbc, "yo", true)); add(TagQueries.getTag(jdbc, "people", true));}}); Integer juick_id = UserQueries.createUser(jdbc, "juick", "secret"); MessagesQueries.createMessage(jdbc, juick_id, "New demo juick was created", null, new ArrayList() {{add(TagQueries.getTag(jdbc, "yo", true)); add(TagQueries.getTag(jdbc, "readonly", true));}}); Integer freefd_id = UserQueries.createUser(jdbc, "freefd", "secret"); MessagesQueries.createReply(jdbc, ugn_mid, 0, freefd_id, "I am freefd and this is my reply", null); MessagesQueries.recommendMessage(jdbc, ugn_mid, freefd_id); MessagesQueries.recommendMessage(jdbc, ugn_mid, juick_id); MessagesQueries.setMessagePopular(jdbc, ugn_mid, 1); PMQueries.createPM(jdbc, freefd_id, ugnich_id, "Hi ugnich!"); jdbc.execute("UPDATE tags SET top=1"); jline.TerminalFactory.registerFlavor(jline.TerminalFactory.Flavor.WINDOWS, UnsupportedTerminal.class); try (ConsoleReader reader = new ConsoleReader()) { reader.setPrompt("ugnich>"); PrintWriter out = new PrintWriter(reader.getOutput()); User ugnich = UserQueries.getUserByUID(jdbc, ugnich_id).get(); out.println(String.format("logged in as @%s", ugnich.getName())); out.flush(); String input; JuickProtocol protocol = new JuickProtocol(jdbc, "http://localhost/"); while ((input = reader.readLine()) != null) { ProtocolReply reply = protocol.getReply(ugnich, input); out.println(reply.getDescription()); out.flush(); } } catch (IOException | NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }