aboutsummaryrefslogtreecommitdiff
path: root/juick-demo/src/main
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2016-12-19 13:41:23 +0300
committerGravatar Vitaly Takmazov2016-12-19 13:41:23 +0300
commit274de5ede59ed4023826a9db09ec60788bc950e1 (patch)
tree107dbca37f559666eb065989aa92fd81e79fef24 /juick-demo/src/main
parentacddd380e1868e28491eaf85f05e87d7a47a123f (diff)
all projects except juick-www are spring-managed now
Diffstat (limited to 'juick-demo/src/main')
-rw-r--r--juick-demo/src/main/java/com/juick/demo/Demo.java79
-rw-r--r--juick-demo/src/main/java/com/juick/demo/DemoApp.java82
-rw-r--r--juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java90
3 files changed, 187 insertions, 64 deletions
diff --git a/juick-demo/src/main/java/com/juick/demo/Demo.java b/juick-demo/src/main/java/com/juick/demo/Demo.java
index b94c9830b..db03e2e56 100644
--- a/juick-demo/src/main/java/com/juick/demo/Demo.java
+++ b/juick-demo/src/main/java/com/juick/demo/Demo.java
@@ -1,77 +1,28 @@
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;
+import com.juick.demo.configuration.DemoAppConfiguration;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.core.env.SimpleCommandLinePropertySource;
/**
* 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");
+ final AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
- Integer ugnich_id = UserQueries.createUser(jdbc, "ugnich", "secret");
- Integer ugn_mid = MessagesQueries.createMessage(jdbc, ugnich_id, "Hi, I am ugnich", null,
- new ArrayList<Tag>() {{add(TagQueries.getTag(jdbc, "yo", true)); add(TagQueries.getTag(jdbc, "people", true));}});
+ // setup configuration
+ applicationContext.register(DemoAppConfiguration.class);
+ // add CLI property source
+ applicationContext.getEnvironment().getPropertySources()
+ .addLast(new SimpleCommandLinePropertySource(args));
- Integer juick_id = UserQueries.createUser(jdbc, "juick", "secret");
- MessagesQueries.createMessage(jdbc, juick_id, "New demo juick was created", null,
- new ArrayList<Tag>() {{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();
- }
+ // setup all the dependencies (refresh) and make them run (start)
+ applicationContext.refresh();
+ applicationContext.start();
+ DemoApp demoApp = new DemoApp(applicationContext);
+ demoApp.start();
}
}
diff --git a/juick-demo/src/main/java/com/juick/demo/DemoApp.java b/juick-demo/src/main/java/com/juick/demo/DemoApp.java
new file mode 100644
index 000000000..9d1d79260
--- /dev/null
+++ b/juick-demo/src/main/java/com/juick/demo/DemoApp.java
@@ -0,0 +1,82 @@
+package com.juick.demo;
+
+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 com.juick.service.MessagesService;
+import com.juick.service.PMQueriesService;
+import com.juick.service.TagService;
+import com.juick.service.UserService;
+import jline.UnsupportedTerminal;
+import jline.console.ConsoleReader;
+import org.springframework.context.ApplicationContext;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.inject.Inject;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+
+/**
+ * Created by vitalyster on 19.12.2016.
+ */
+public class DemoApp {
+ UserService userService;
+ MessagesService messagesService;
+ PMQueriesService pmQueriesService;
+ TagService tagService;
+ JdbcTemplate jdbcTemplate;
+ JuickProtocol juickProtocol;
+
+ public DemoApp(ApplicationContext context) {
+ userService = context.getBean(UserService.class);
+ messagesService = context.getBean(MessagesService.class);
+ pmQueriesService = context.getBean(PMQueriesService.class);
+ tagService = context.getBean(TagService.class);
+ jdbcTemplate = context.getBean(JdbcTemplate.class);
+ juickProtocol = context.getBean(JuickProtocol.class);
+ }
+ public void start() {
+ Integer ugnich_id = userService.createUser("ugnich", "secret");
+ Integer ugn_mid = messagesService.createMessage(ugnich_id, "Hi, I am ugnich", null,
+ new ArrayList<Tag>() {{add(tagService.getTag("yo", true)); add(tagService.getTag("people", true));}});
+
+ Integer juick_id = userService.createUser("juick", "secret");
+ messagesService.createMessage(juick_id, "New demo juick was created", null,
+ new ArrayList<Tag>() {{add(tagService.getTag("yo", true)); add(tagService.getTag("readonly", true));}});
+ Integer freefd_id = userService.createUser("freefd", "secret");
+ messagesService.createReply(ugn_mid, 0, freefd_id, "I am freefd and this is my reply", null);
+ messagesService.recommendMessage(ugn_mid, freefd_id);
+ messagesService.recommendMessage(ugn_mid, juick_id);
+ messagesService.setMessagePopular(ugn_mid, 1);
+ pmQueriesService.createPM(freefd_id, ugnich_id, "Hi ugnich!");
+ jdbcTemplate.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 = userService.getUserByUID(ugnich_id).get();
+ out.println(String.format("logged in as @%s", ugnich.getName()));
+ out.flush();
+ String input;
+ while ((input = reader.readLine()) != null) {
+ ProtocolReply reply = juickProtocol.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();
+ }
+ }
+}
diff --git a/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java b/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java
new file mode 100644
index 000000000..6a7f697a2
--- /dev/null
+++ b/juick-demo/src/main/java/com/juick/demo/configuration/DemoAppConfiguration.java
@@ -0,0 +1,90 @@
+package com.juick.demo.configuration;
+
+import ch.vorburger.exec.ManagedProcessException;
+import ch.vorburger.mariadb4j.DB;
+import com.juick.server.protocol.JuickProtocol;
+import com.juick.service.search.SearchService;
+import org.apache.commons.dbcp2.BasicDataSource;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.TransactionManagementConfigurer;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by vitalyster on 19.12.2016.
+ */
+@Configuration
+@ComponentScan(basePackages = {"com.juick.demo", "com.juick.service", "com.juick.server.protocol"})
+public class DemoAppConfiguration implements ApplicationContextAware, TransactionManagementConfigurer {
+ private ApplicationContext applicationContext;
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+ @Bean
+ public BasicDataSource dataSource() {
+ try {
+ DB db = DB.newEmbeddedDB(33306);
+ db.start();
+ db.createDB("juick");
+ db.source("schema.sql");
+ BasicDataSource dataSource = new BasicDataSource();
+ dataSource.setDriverClassName("com.mysql.jdbc.Driver");
+ dataSource.setUrl("jdbc:mysql://localhost:33306/juick?autoReconnect=true&user=root");
+
+ dataSource.setValidationQuery("select 1");
+
+ return dataSource;
+ } catch (ManagedProcessException e) {
+ return null;
+ }
+ }
+
+ @Bean
+ public PlatformTransactionManager transactionManager() {
+ return new DataSourceTransactionManager(dataSource());
+ }
+
+ @Override
+ public PlatformTransactionManager annotationDrivenTransactionManager() {
+ return transactionManager();
+ }
+
+ @Bean
+ @DependsOn("dataSource")
+ public JdbcTemplate jdbcTemplate() {
+ return new JdbcTemplate(dataSource());
+ }
+ @Bean
+ public SearchService emptySearchService() {
+ return new SearchService() {
+ @Override
+ public void setMaxResult(int maxResult) {
+ }
+
+ @Override
+ public List<Integer> searchInAllMessages(String searchString, int messageIdBefore) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public List<Integer> searchByStringAndUser(String searchString, int userId, int messageIdBefore) {
+ return Collections.emptyList();
+ }
+ };
+ }
+ @Bean
+ public JuickProtocol juickProtocol() {
+ return new JuickProtocol("http://localhost:8080/");
+ }
+}