Логирование и связь с БД

* Добавли логироание Log4j
* Настроил тестовую взаимосвязь с БД MySQL
This commit is contained in:
Mark Struchkov 2018-12-21 23:14:50 +03:00
parent 6793efcc55
commit 6fa2baac7e
17 changed files with 351 additions and 12 deletions

2
.gitignore vendored
View File

@ -3,3 +3,5 @@
**/target/**
.DS_Store
/vk-bot/src/main/resources/config.properties
*.log
*.properties

View File

@ -11,5 +11,23 @@
<artifactId>consultant-core</artifactId>
<properties>
<persistence.ver>1.0.2</persistence.ver>
<lombok.ver>1.18.4</lombok.ver>
</properties>
<dependencies>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>${persistence.ver}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.ver}</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,14 @@
package org.sadtech.consultant.dao;
import lombok.Data;
import javax.persistence.Entity;
@Entity
@Data
public class NextStage {
private long id;
private long idNext;
}

View File

@ -0,0 +1,16 @@
package org.sadtech.consultant.dao;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Data
public class SaveStage {
@Id
private long id;
private long idStage;
}

View File

@ -0,0 +1,18 @@
package org.sadtech.consultant.dao;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
@Data
@Entity
public class SocialNetworks {
@Id
private long id;
private long idVk;
private long idFacebook;
private long phone;
}

View File

@ -0,0 +1,17 @@
package org.sadtech.consultant.dao;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Data
public class Stage {
@Id
private long id;
private String text;
private String wordKeys;
}

View File

@ -0,0 +1,24 @@
package org.sadtech.consultant.dao;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.List;
@Entity
@Data
public class User {
@Id
@GeneratedValue
private long id;
private String name;
private String token;
private String lastName;
private String city;
private List<SocialNetworks> socialNetworks;
}

6
vk-bot/WEB-INF/web.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>

View File

@ -22,6 +22,14 @@
<target>6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
@ -42,13 +50,11 @@
<artifactId>spring-core</artifactId>
<version>${spring.ver}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.ver}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
@ -59,11 +65,6 @@
<artifactId>spring-web</artifactId>
<version>${spring.ver}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
@ -74,6 +75,19 @@
<artifactId>spring-core</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
@ -85,7 +99,48 @@
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.0.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,77 @@
package org.sadtech.vkbot.config;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
@ComponentScan("org.sadtech.vkbot")
@EnableJpaRepositories("org.sadtech.vkbot.repo")
public class DataConfig {
private static final String PROPERTY_NAME_DATABASE_DRIVER = "com.mysql.jdbc.Driver";
private static final String PROPERTY_NAME_DATABASE_URL = "jdbc:mysql://localhost:3306/testbd"+
"?verifyServerCertificate=false"+
"&useSSL=false"+
"&requireSSL=false"+
"&useLegacyDatetimeCode=false"+
"&amp"+
"&serverTimezone=UTC";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "root";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "121314185398MAmaPApa";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "org.hibernate.dialect.MySQL5Dialect";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "true";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "org.sadtech.vkbot";
private static final String PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO = "create-drop";
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
entityManagerFactoryBean.setPackagesToScan(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN);
entityManagerFactoryBean.setJpaProperties(hibernateProp());
return entityManagerFactoryBean;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(PROPERTY_NAME_DATABASE_DRIVER);
dataSource.setUrl(PROPERTY_NAME_DATABASE_URL);
dataSource.setUsername(PROPERTY_NAME_DATABASE_USERNAME);
dataSource.setPassword(PROPERTY_NAME_DATABASE_PASSWORD);
return dataSource;
}
private Properties hibernateProp() {
Properties properties = new Properties();
properties.put("hibernate.dialect", PROPERTY_NAME_HIBERNATE_DIALECT);
properties.put("hibernate.show_sql", PROPERTY_NAME_HIBERNATE_SHOW_SQL);
properties.put("hibernate.hbm2ddl.auto", PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO);
return properties;
}
}

View File

@ -8,15 +8,20 @@ import com.vk.api.sdk.exceptions.ClientException;
import com.vk.api.sdk.httpclient.HttpTransportClient;
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
import org.sadtech.vkbot.ResponseData;
import org.sadtech.consultant.controller.Test;
import org.sadtech.vkbot.TestLogic;
import org.sadtech.vkbot.controller.Test;
import org.sadtech.vkbot.service.UserService;
import org.sadtech.vkbot.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@PropertySource("classpath:config.properties")
@ComponentScan("org.sadtech.vkbot")
public class SpringConfig {
@Value("${vk.groupID}")
@ -75,6 +80,11 @@ public class SpringConfig {
return new Test();
}
@Bean
public UserService userService() {
return new UserServiceImpl();
}
@Bean
public ResponseData responseData() {
return new ResponseData();

View File

@ -9,6 +9,7 @@ import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import javax.sql.DataSource;
@Configuration
@ComponentScan("org.sadtech.vkbot.controller")
@ -17,7 +18,7 @@ public class WebConfig implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(SpringConfig.class, WebConfig.class);
context.register(SpringConfig.class, WebConfig.class, DataConfig.class);
context.setServletContext(servletContext);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context));

View File

@ -1,4 +1,4 @@
package org.sadtech.consultant.controller;
package org.sadtech.vkbot.controller;
import com.vk.api.sdk.actions.LongPoll;
import com.vk.api.sdk.callback.longpoll.queries.GetLongPollEventsQuery;
@ -8,10 +8,20 @@ import com.vk.api.sdk.client.actors.GroupActor;
import com.vk.api.sdk.exceptions.ApiException;
import com.vk.api.sdk.exceptions.ClientException;
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
import lombok.extern.log4j.Log4j;
import org.json.JSONObject;
import org.sadtech.vkbot.ResponseData;
import org.sadtech.vkbot.dao.User;
import org.sadtech.vkbot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@Log4j
public class Test extends Thread {
@Autowired
@ -23,6 +33,9 @@ public class Test extends Thread {
@Autowired
private ResponseData responseData;
@Resource
private UserService userService;
private GetLongPollEventsResponse getLongPollEventsResponse = null;
public void run() {
@ -34,7 +47,7 @@ public class Test extends Thread {
} catch (ClientException e) {
e.printStackTrace();
}
log.info("Test");
JSONObject jObject = new JSONObject(getResponse); // json
// System.out.println(getResponse);
String key = jObject.getString("key"); // get the name from data.
@ -44,6 +57,11 @@ public class Test extends Thread {
GetLongPollEventsQuery getLongPollEventsQuery = longPoll.getEvents(server, key, ts).waitTime(5);
// Gson gson = new Gson();
User user = new User();
user.setId(1);
user.setName("Test");
userService.addUser(user);
while (true) {
try {
getLongPollEventsResponse = getLongPollEventsQuery.execute();
@ -52,7 +70,7 @@ public class Test extends Thread {
} catch (ClientException e) {
e.printStackTrace();
}
// System.out.println(getLongPollEventsResponse);
System.out.println(getLongPollEventsResponse);
if (getLongPollEventsResponse.getUpdates().toArray().length != 0) {
responseData.setJsonObjects(getLongPollEventsResponse.getUpdates());
// JsonObject updates = getLongPollEventsResponse.getUpdates().get(0);

View File

@ -0,0 +1,19 @@
package org.sadtech.vkbot.dao;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Data
public class User {
@Id
private long id;
private String name;
}

View File

@ -0,0 +1,9 @@
package org.sadtech.vkbot.repo;
import org.sadtech.vkbot.dao.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}

View File

@ -0,0 +1,11 @@
package org.sadtech.vkbot.service;
import org.sadtech.vkbot.dao.User;
public interface UserService {
User addUser(User user);
void removeUser(long id);
}

View File

@ -0,0 +1,24 @@
package org.sadtech.vkbot.service.impl;
import org.sadtech.vkbot.dao.User;
import org.sadtech.vkbot.repo.UserRepository;
import org.sadtech.vkbot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User addUser(User user) {
User savedUser = userRepository.saveAndFlush(user);
return savedUser;
}
@Override
public void removeUser(long id) {
userRepository.deleteById(id);
}
}