Added database initialization logic
This commit is contained in:
parent
3ea46b584a
commit
bb9a4c9b3a
0
chatto/.attach_pid5778
Normal file
0
chatto/.attach_pid5778
Normal file
7
chatto/config/application.properties
Normal file
7
chatto/config/application.properties
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
|
||||||
|
spring.datasource.url = jdbc:mysql://localhost:3306/chatto_db2?useSSL=false
|
||||||
|
spring.datasource.username = chatto_user
|
||||||
|
spring.datasource.password = password
|
||||||
|
database-name = chatto_db2
|
||||||
|
website-url = 192.168.1.13
|
@ -1,13 +1,29 @@
|
|||||||
package org.ros.chatto;
|
package org.ros.chatto;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import org.modelmapper.ModelMapper;
|
import org.modelmapper.ModelMapper;
|
||||||
import org.ros.chatto.security.AuthenticationSuccessHandlerImpl;
|
import org.ros.chatto.security.AuthenticationSuccessHandlerImpl;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.PropertySource;
|
||||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||||
|
|
||||||
|
@PropertySource(value = "classpath:queries.properties")
|
||||||
@Configuration
|
@Configuration
|
||||||
public class BeanConfigurations {
|
public class BeanConfigurations {
|
||||||
|
@Value("${spring.datasource.url}")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@Value("${spring.datasource.username}")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Value("${spring.datasource.password}")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public AuthenticationSuccessHandler authenticationSuccessHandler() {
|
public AuthenticationSuccessHandler authenticationSuccessHandler() {
|
||||||
@ -20,4 +36,10 @@ public class BeanConfigurations {
|
|||||||
return modelMapper;
|
return modelMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Bean
|
||||||
|
// public Connection connection() throws SQLException
|
||||||
|
// {
|
||||||
|
// return DriverManager.getConnection(url, userName, password);
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,14 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
|
|||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class ChattoApplication extends SpringBootServletInitializer {
|
public class ChattoApplication extends SpringBootServletInitializer {
|
||||||
|
|
||||||
|
|
||||||
|
// @Value("${spring.datasource.url}")
|
||||||
|
// private static String url;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(ChattoApplication.class, args);
|
SpringApplication application = new SpringApplication(ChattoApplication.class);
|
||||||
|
addInitHooks(application);
|
||||||
|
// SpringApplication.run(ChattoApplication.class, args);
|
||||||
|
application.run(args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,6 +25,13 @@ public class ChattoApplication extends SpringBootServletInitializer {
|
|||||||
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
||||||
return application.sources(ChattoApplication.class);
|
return application.sources(ChattoApplication.class);
|
||||||
}
|
}
|
||||||
|
static void addInitHooks(SpringApplication application) {
|
||||||
|
// TBD …
|
||||||
|
// System.out.println("Hello world very loooooooooooooooooooooooooooooooooooooong string");
|
||||||
|
// String url = environment.getProperty("spring.datasource.url");
|
||||||
|
// System.out.println("URL = " + url);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//public class Application extends SpringBootServletInitializer {
|
//public class Application extends SpringBootServletInitializer {
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package org.ros.chatto.controller;
|
package org.ros.chatto.controller;
|
||||||
|
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import org.ros.chatto.dto.ChatMessageDTO;
|
import org.ros.chatto.dto.ChatMessageDTO;
|
||||||
|
import org.ros.chatto.service.DBInitializerService;
|
||||||
import org.ros.chatto.service.UserService;
|
import org.ros.chatto.service.UserService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@ -12,7 +14,6 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping(value = "/test")
|
@RequestMapping(value = "/test")
|
||||||
@ -32,13 +33,24 @@ public class TestController {
|
|||||||
public class Home {
|
public class Home {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
UserService userService;
|
private UserService userService;
|
||||||
|
@Autowired
|
||||||
|
private DBInitializerService dbInitializerService;
|
||||||
|
|
||||||
|
private boolean installationChecked = false;
|
||||||
|
|
||||||
@RequestMapping("/")
|
@RequestMapping("/")
|
||||||
public ModelAndView showPage(Principal principal) {
|
public ModelAndView showPage(Principal principal) throws SQLException {
|
||||||
ModelAndView mv = new ModelAndView("home");
|
ModelAndView mv = new ModelAndView("home");
|
||||||
mv.addObject("message", "Welcome!");
|
mv.addObject("message", "Welcome!");
|
||||||
// mv.addObject("userNames", userService.findAllOtherUsers(principal.getName()));
|
// mv.addObject("userNames", userService.findAllOtherUsers(principal.getName()));
|
||||||
|
if (!installationChecked) {
|
||||||
|
dbInitializerService.connectDB();
|
||||||
|
if(dbInitializerService.getNumTables() == 0)
|
||||||
|
dbInitializerService.populateDB();
|
||||||
|
dbInitializerService.closeConnection();
|
||||||
|
installationChecked = true;
|
||||||
|
}
|
||||||
return mv;
|
return mv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,6 @@ public interface ChatMessageRepository extends JpaRepository<ChatMessage, Long>
|
|||||||
|
|
||||||
@Query("select m from ChatMessage m where (m.toUser.userName = ?1 or m.toUser.userName = ?2) and "
|
@Query("select m from ChatMessage m where (m.toUser.userName = ?1 or m.toUser.userName = ?2) and "
|
||||||
+ "(m.fromUser.userName = ?1 or m.fromUser.userName = ?2) and"
|
+ "(m.fromUser.userName = ?1 or m.fromUser.userName = ?2) and"
|
||||||
+ "(m.messageTime >= ?3) order by m.messageTime asc")
|
+ "(m.messageTime > ?3) order by m.messageTime asc")
|
||||||
public List<ChatMessage> getNewMessages(String fromUser, String toUser, Date lastMessageTime);
|
public List<ChatMessage> getNewMessages(String fromUser, String toUser, Date lastMessageTime);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
//package org.ros.chatto.repository;
|
||||||
|
//
|
||||||
|
//import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
//import org.springframework.stereotype.Repository;
|
||||||
|
//
|
||||||
|
//@Repository
|
||||||
|
//public interface DBInitializerRepostory extends JpaRepository<Integer, Integer>{
|
||||||
|
//
|
||||||
|
//}
|
@ -1,187 +0,0 @@
|
|||||||
-- Database: `chatto_db`
|
|
||||||
--
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `admins`
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE `admins` (
|
|
||||||
`admin_id` int(11) NOT NULL,
|
|
||||||
`user_id` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `admins`
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `chatmessage`
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE `chatmessage` (
|
|
||||||
`Id` int(10) UNSIGNED NOT NULL,
|
|
||||||
`Message` varchar(4000) NOT NULL,
|
|
||||||
`userName` varchar(100) NOT NULL,
|
|
||||||
`MsgTime` varchar(45) NOT NULL,
|
|
||||||
`colorSelected` varchar(45) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `chatmessage`
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `chat_messages`
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE `chat_messages` (
|
|
||||||
`m_id` bigint(20) NOT NULL,
|
|
||||||
`from_user` int(11) NOT NULL,
|
|
||||||
`to_user` int(11) NOT NULL,
|
|
||||||
`message` int(10) NOT NULL,
|
|
||||||
`message_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `chat_messages`
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `total_messages`
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE `total_messages` (
|
|
||||||
`t_id` int(101) NOT NULL,
|
|
||||||
`from_user` int(11) NOT NULL,
|
|
||||||
`to_user` int(11) NOT NULL,
|
|
||||||
`total_messages` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE `users` (
|
|
||||||
`user_id` int(11) NOT NULL,
|
|
||||||
`name` varchar(10) NOT NULL,
|
|
||||||
`password` varchar(80) NOT NULL,
|
|
||||||
`join_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for dumped tables
|
|
||||||
--
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for table `admins`
|
|
||||||
--
|
|
||||||
ALTER TABLE `admins`
|
|
||||||
ADD PRIMARY KEY (`admin_id`),
|
|
||||||
ADD UNIQUE KEY `user_id_2` (`user_id`),
|
|
||||||
ADD KEY `admin_id` (`admin_id`),
|
|
||||||
ADD KEY `user_id` (`user_id`);
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for table `chatmessage`
|
|
||||||
--
|
|
||||||
ALTER TABLE `chatmessage`
|
|
||||||
ADD PRIMARY KEY (`Id`);
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for table `chat_messages`
|
|
||||||
--
|
|
||||||
ALTER TABLE `chat_messages`
|
|
||||||
ADD PRIMARY KEY (`m_id`),
|
|
||||||
ADD UNIQUE KEY `identifier_message_number` (`m_id`),
|
|
||||||
ADD KEY `identifier_message_number_2` (`m_id`),
|
|
||||||
ADD KEY `from_user` (`from_user`,`to_user`),
|
|
||||||
ADD KEY `message` (`message`),
|
|
||||||
ADD KEY `FOREIGN KEY TO USER IN MESSAGES TABLE` (`to_user`);
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for table `total_messages`
|
|
||||||
--
|
|
||||||
ALTER TABLE `total_messages`
|
|
||||||
ADD PRIMARY KEY (`t_id`),
|
|
||||||
ADD UNIQUE KEY `identifier` (`t_id`);
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Indexes for table `users`
|
|
||||||
--
|
|
||||||
ALTER TABLE `users`
|
|
||||||
ADD PRIMARY KEY (`user_id`),
|
|
||||||
ADD UNIQUE KEY `name` (`name`),
|
|
||||||
ADD KEY `user_id` (`user_id`);
|
|
||||||
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for dumped tables
|
|
||||||
--
|
|
||||||
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for table `admins`
|
|
||||||
--
|
|
||||||
ALTER TABLE `admins`
|
|
||||||
MODIFY `admin_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for table `chatmessage`
|
|
||||||
--
|
|
||||||
ALTER TABLE `chatmessage`
|
|
||||||
MODIFY `Id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=402;
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for table `chat_messages`
|
|
||||||
--
|
|
||||||
ALTER TABLE `chat_messages`
|
|
||||||
MODIFY `m_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=30;
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for table `total_messages`
|
|
||||||
--
|
|
||||||
ALTER TABLE `total_messages`
|
|
||||||
MODIFY `t_id` int(101) NOT NULL AUTO_INCREMENT;
|
|
||||||
--
|
|
||||||
-- AUTO_INCREMENT for table `users`
|
|
||||||
--
|
|
||||||
ALTER TABLE `users`
|
|
||||||
MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
|
|
||||||
--
|
|
||||||
-- Constraints for dumped tables
|
|
||||||
--
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Constraints for table `admins`
|
|
||||||
--
|
|
||||||
ALTER TABLE `admins`
|
|
||||||
ADD CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Constraints for table `chat_messages`
|
|
||||||
--
|
|
||||||
ALTER TABLE `chat_messages`
|
|
||||||
ADD CONSTRAINT `FOREIGN KEY ENC MESSAGE TABLE` FOREIGN KEY (`message`) REFERENCES `message_ciphers` (`id`) ON UPDATE CASCADE,
|
|
||||||
ADD CONSTRAINT `FOREIGN KEY FROM USER IN MESSAGES TABLE` FOREIGN KEY (`from_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE,
|
|
||||||
ADD CONSTRAINT `FOREIGN KEY TO USER IN MESSAGES TABLE` FOREIGN KEY (`to_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE;
|
|
||||||
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,146 @@
|
|||||||
|
package org.ros.chatto.service;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.PropertySource;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.core.io.support.EncodedResource;
|
||||||
|
import org.springframework.jdbc.datasource.init.ScriptUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
//@PropertySource(name = "myProperties", value = "example.properties")
|
||||||
|
//@PropertySource(name = "appProperties", value="classpath:myapp.properties")
|
||||||
|
@PropertySource(value = "classpath:queries.properties")
|
||||||
|
|
||||||
|
public class DBInitializerService {
|
||||||
|
|
||||||
|
// @Autowired
|
||||||
|
// private Environment environment;
|
||||||
|
@Value("${spring.datasource.url}")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@Value("${spring.datasource.username}")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Value("${spring.datasource.password}")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
@Value("${database-name}")
|
||||||
|
private String dbName;
|
||||||
|
|
||||||
|
@Value("${num-tables}")
|
||||||
|
private String numTablesQuery;
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
|
||||||
|
// public DBInitializerService(Connection connection) {
|
||||||
|
// this.connection = connection;
|
||||||
|
// // TODO Auto-generated constructor stub
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Run this method when application started
|
||||||
|
// @EventListener(ApplicationReadyEvent.class)
|
||||||
|
// public ResultSet getConnection()
|
||||||
|
// {
|
||||||
|
//// String url = environment.getProperty("spring.datasource.url");
|
||||||
|
// System.out.println("URL = " + url);
|
||||||
|
////
|
||||||
|
//// //Connect to Database
|
||||||
|
//// Connection connection = null;
|
||||||
|
//// String QUERY="your sql query";
|
||||||
|
//// try {
|
||||||
|
//// DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
|
||||||
|
//// connection = DriverManager.getConnection(url, userName, password );
|
||||||
|
//// } catch (SQLException e) {
|
||||||
|
//// }
|
||||||
|
////
|
||||||
|
////
|
||||||
|
//// //Run your query
|
||||||
|
//// Statement stmt = null;
|
||||||
|
//// try {
|
||||||
|
//// stmt = connection.createStatement();
|
||||||
|
//// } catch (SQLException e1) {
|
||||||
|
//// e1.printStackTrace();
|
||||||
|
//// }
|
||||||
|
//// ResultSet rs = null;
|
||||||
|
//// try {
|
||||||
|
//// rs = stmt.executeQuery(QUERY);
|
||||||
|
//// } catch (SQLException e1) {
|
||||||
|
//// e1.printStackTrace();
|
||||||
|
//// }
|
||||||
|
////
|
||||||
|
//// return rs;
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @BeforeClass
|
||||||
|
// public static void initializeJiraDataBaseForSla() throws SQLException {
|
||||||
|
// final DataSource datasource = new SimpleDriverDataSource(new JDBCDriver(), "jdbc:hsqldb:mem:dataSource", null, null);
|
||||||
|
// final Connection connection = datasource.getConnection();
|
||||||
|
// try {
|
||||||
|
// ScriptUtils.executeSqlScript(connection, new EncodedResource(new ClassPathResource("sql/sla/jira-create.sql"), StandardCharsets.UTF_8));
|
||||||
|
// ScriptUtils.executeSqlScript(connection, new EncodedResource(new ClassPathResource("sql/sla/jira.sql"), StandardCharsets.UTF_8));
|
||||||
|
// } finally {
|
||||||
|
// connection.close();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
public void connectDB() throws SQLException {
|
||||||
|
connection = DriverManager.getConnection(url, userName, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumTables() throws SQLException {
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(numTablesQuery);
|
||||||
|
// preparedStatement.get
|
||||||
|
preparedStatement.setString(1, dbName);
|
||||||
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
// while(resultSet.next())
|
||||||
|
// {
|
||||||
|
// System.out.println(resultSet.get);
|
||||||
|
// }
|
||||||
|
resultSet.next();
|
||||||
|
int numTables = resultSet.getInt("num_tables");
|
||||||
|
// System.out.println(numTables);
|
||||||
|
return numTables;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void populateDB() throws SQLException {
|
||||||
|
// System.out.println("Database name = " + dbName);
|
||||||
|
// String sql = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '" + dbName + "' and TABLE_TYPE='BASE TABLE' ";
|
||||||
|
// String sql = numTablesQuery;
|
||||||
|
// System.out.println(numTablesQuery);
|
||||||
|
// System.out.println(sql);
|
||||||
|
// connection = DriverManager.getConnection(url, userName, password);
|
||||||
|
// PreparedStatement preparedStatement = connection.prepareStatement(numTablesQuery);
|
||||||
|
//// preparedStatement.get
|
||||||
|
// preparedStatement.setString(1, dbName);
|
||||||
|
// ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
//// while(resultSet.next())
|
||||||
|
//// {
|
||||||
|
//// System.out.println(resultSet.get);
|
||||||
|
//// }
|
||||||
|
// resultSet.next();
|
||||||
|
// int numTables = resultSet.getInt("num_tables");
|
||||||
|
// System.out.println(numTables);
|
||||||
|
// if (numTables == 0) {
|
||||||
|
ScriptUtils.executeSqlScript(connection,
|
||||||
|
new EncodedResource(new ClassPathResource("scheme.sql"), StandardCharsets.UTF_8));
|
||||||
|
ScriptUtils.executeSqlScript(connection,
|
||||||
|
new EncodedResource(new ClassPathResource("datae.sql"), StandardCharsets.UTF_8));
|
||||||
|
|
||||||
|
// }
|
||||||
|
// connection.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void closeConnection() throws SQLException {
|
||||||
|
connection.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
|
#
|
||||||
## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
|
### Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
|
||||||
spring.datasource.url = jdbc:mysql://localhost:3306/chatto_db?useSSL=false
|
#spring.datasource.url = jdbc:mysql://localhost:3306/chatto_db?useSSL=false
|
||||||
spring.datasource.username = chatto_user
|
#spring.datasource.username = chatto_user
|
||||||
spring.datasource.password = password
|
#spring.datasource.password = password
|
||||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
## Hibernate Properties
|
## Hibernate Properties
|
||||||
@ -11,7 +11,7 @@ spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDial
|
|||||||
|
|
||||||
|
|
||||||
# Hibernate ddl auto (create, create-drop, validate, update)
|
# Hibernate ddl auto (create, create-drop, validate, update)
|
||||||
spring.jpa.hibernate.ddl-auto = validate
|
spring.jpa.hibernate.ddl-auto = none
|
||||||
|
|
||||||
logging.level.org.springframework.web=DEBUG
|
logging.level.org.springframework.web=DEBUG
|
||||||
logging.level.web=DEBUG
|
logging.level.web=DEBUG
|
||||||
|
@ -37,3 +37,10 @@
|
|||||||
--(6, 'novo', '$2a$10$nLhkNrGu0/2ahSlULoQ0ROvUK2sRTEZBV014BLB/W9nBSMxy0rTGy', '2019-09-23 07:45:06'),
|
--(6, 'novo', '$2a$10$nLhkNrGu0/2ahSlULoQ0ROvUK2sRTEZBV014BLB/W9nBSMxy0rTGy', '2019-09-23 07:45:06'),
|
||||||
--(8, 'hmm', '$2a$10$k4tASmvqJ1mPA7avuzAnSO1KmWOmNhp7K8Y5Yg.dV/VXMX2L73/Ma', '2019-09-23 07:40:56'),
|
--(8, 'hmm', '$2a$10$k4tASmvqJ1mPA7avuzAnSO1KmWOmNhp7K8Y5Yg.dV/VXMX2L73/Ma', '2019-09-23 07:40:56'),
|
||||||
--(13, 'hmm2', '$2a$10$F.lMGPDXOguXWehMf1fvq.7XqzbFZWweLv3DYwB.1zpDEuPDcKBv6', '2019-09-23 13:46:33');
|
--(13, 'hmm2', '$2a$10$F.lMGPDXOguXWehMf1fvq.7XqzbFZWweLv3DYwB.1zpDEuPDcKBv6', '2019-09-23 13:46:33');
|
||||||
|
|
||||||
|
-- INSERT INTO `status` (`status`) values (true);
|
||||||
|
|
||||||
|
INSERT INTO `roles` (`role_id`, `role_name`, `description`) VALUES
|
||||||
|
(0, 'SUPER_USER', 'Most privileged'),
|
||||||
|
(1, 'ADMIN', 'Administrator'),
|
||||||
|
(2, 'USER', 'Regular user');
|
1
chatto/src/main/resources/queries.properties
Normal file
1
chatto/src/main/resources/queries.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
num-tables = SELECT COUNT(*) as num_tables FROM information_schema.tables WHERE table_schema = ? and TABLE_TYPE='BASE TABLE'
|
345
chatto/src/main/resources/scheme.sql
Normal file
345
chatto/src/main/resources/scheme.sql
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
-- -- MySQL dump 10.15 Distrib 10.0.38-MariaDB, for debian-linux-gnu (x86_64)
|
||||||
|
-- --
|
||||||
|
-- -- Host: localhost Database: chatto_db
|
||||||
|
-- -- ------------------------------------------------------
|
||||||
|
-- -- Server version 10.0.38-MariaDB-0ubuntu0.16.04.1
|
||||||
|
|
||||||
|
-- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
-- /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
-- /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
-- /*!40101 SET NAMES utf8mb4 */;
|
||||||
|
-- /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
-- /*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
-- /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
-- /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
-- /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
-- /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `admins`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `admins`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- -- CREATE TABLE IF NOT EXISTS `admins` (
|
||||||
|
-- -- `admin_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- -- `user_id` int(11) NOT NULL,
|
||||||
|
-- -- PRIMARY KEY (`admin_id`),
|
||||||
|
-- -- UNIQUE KEY `user_id_2` (`user_id`),
|
||||||
|
-- -- KEY `admin_id` (`admin_id`),
|
||||||
|
-- -- KEY `user_id` (`user_id`),
|
||||||
|
-- -- CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE
|
||||||
|
-- -- ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `chat_messages`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `chatmessage`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `chatmessage`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `chatmessage` (
|
||||||
|
-- `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `Message` varchar(4000) NOT NULL,
|
||||||
|
-- `userName` varchar(100) NOT NULL,
|
||||||
|
-- `MsgTime` varchar(45) NOT NULL,
|
||||||
|
-- `colorSelected` varchar(45) NOT NULL,
|
||||||
|
-- PRIMARY KEY (`Id`)
|
||||||
|
-- ) ENGINE=InnoDB AUTO_INCREMENT=402 DEFAULT CHARSET=latin1;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `message_ciphers`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `message_ciphers`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `message_ciphers` (
|
||||||
|
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `iv` varchar(30) NOT NULL,
|
||||||
|
-- `v` int(2) NOT NULL,
|
||||||
|
-- `iterations` int(11) NOT NULL,
|
||||||
|
-- `key_size` int(11) NOT NULL,
|
||||||
|
-- `tag_size` int(11) NOT NULL,
|
||||||
|
-- `mode` varchar(11) NOT NULL,
|
||||||
|
-- `adata` varchar(11) NOT NULL,
|
||||||
|
-- `cipher` varchar(11) NOT NULL,
|
||||||
|
-- `salt` varchar(100) NOT NULL,
|
||||||
|
-- `cipher_text` varchar(600) NOT NULL,
|
||||||
|
-- PRIMARY KEY (`id`)
|
||||||
|
-- ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `roles`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `roles`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `roles` (
|
||||||
|
-- `role_id` int(5) NOT NULL,
|
||||||
|
-- `role_name` varchar(15) NOT NULL,
|
||||||
|
-- `description` varchar(20) NOT NULL,
|
||||||
|
-- PRIMARY KEY (`role_id`)
|
||||||
|
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `total_messages`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `total_messages`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `total_messages` (
|
||||||
|
-- `t_id` int(101) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `from_user` int(11) NOT NULL,
|
||||||
|
-- `to_user` int(11) NOT NULL,
|
||||||
|
-- `total_messages` int(11) NOT NULL,
|
||||||
|
-- PRIMARY KEY (`t_id`),
|
||||||
|
-- UNIQUE KEY `identifier` (`t_id`)
|
||||||
|
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `users`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `users`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `users` (
|
||||||
|
-- `user_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `name` varchar(10) NOT NULL,
|
||||||
|
-- `password` varchar(80) NOT NULL,
|
||||||
|
-- `join_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
-- PRIMARY KEY (`user_id`),
|
||||||
|
-- UNIQUE KEY `name` (`name`),
|
||||||
|
-- KEY `user_id` (`user_id`)
|
||||||
|
-- ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- Table structure for table `users_roles`
|
||||||
|
-- --
|
||||||
|
|
||||||
|
-- --DROP TABLE IF EXISTS `users_roles`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `users_roles` (
|
||||||
|
-- `id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `user_id` int(11) NOT NULL,
|
||||||
|
-- `role_id` int(11) NOT NULL,
|
||||||
|
-- PRIMARY KEY (`id`),
|
||||||
|
-- KEY `user` (`user_id`),
|
||||||
|
-- KEY `role` (`role_id`),
|
||||||
|
-- CONSTRAINT `FOREIGN KEY USER IN USERS-ROLES TABLE` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
-- CONSTRAINT `fk_roles_roleAssignments` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
-- ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
|
||||||
|
-- /*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
-- /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
-- /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
-- /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
-- /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
-- /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
-- /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
-- /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
-- /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
-- -- Dump completed on 2019-10-03 12:37:23
|
||||||
|
-- --DROP TABLE IF EXISTS `chat_messages`;
|
||||||
|
-- /*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
-- /*!40101 SET character_set_client = utf8 */;
|
||||||
|
-- CREATE TABLE IF NOT EXISTS `chat_messages` (
|
||||||
|
-- `m_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
-- `from_user` int(11) NOT NULL,
|
||||||
|
-- `to_user` int(11) NOT NULL,
|
||||||
|
-- `message` int(10) NOT NULL,
|
||||||
|
-- `message_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
-- PRIMARY KEY (`m_id`),
|
||||||
|
-- UNIQUE KEY `identifier_message_number` (`m_id`),
|
||||||
|
-- KEY `identifier_message_number_2` (`m_id`),
|
||||||
|
-- KEY `from_user` (`from_user`,`to_user`),
|
||||||
|
-- KEY `message` (`message`),
|
||||||
|
-- KEY `FOREIGN KEY TO USER IN MESSAGES TABLE` (`to_user`),
|
||||||
|
-- CONSTRAINT `FOREIGN KEY ENC MESSAGE TABLE` FOREIGN KEY (`message`) REFERENCES `message_ciphers` (`id`) ON UPDATE CASCADE,
|
||||||
|
-- CONSTRAINT `FOREIGN KEY FROM USER IN MESSAGES TABLE` FOREIGN KEY (`from_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE,
|
||||||
|
-- CONSTRAINT `FOREIGN KEY TO USER IN MESSAGES TABLE` FOREIGN KEY (`to_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE
|
||||||
|
-- ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- MySQL dump 10.15 Distrib 10.0.38-MariaDB, for debian-linux-gnu (x86_64)
|
||||||
|
--
|
||||||
|
-- Host: localhost Database: chatto_db
|
||||||
|
-- ------------------------------------------------------
|
||||||
|
-- Server version 10.0.38-MariaDB-0ubuntu0.16.04.1
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `chat_messages`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `chat_messages`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `chatmessage`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `chatmessage`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `chatmessage` (
|
||||||
|
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`Message` varchar(4000) NOT NULL,
|
||||||
|
`userName` varchar(100) NOT NULL,
|
||||||
|
`MsgTime` varchar(45) NOT NULL,
|
||||||
|
`colorSelected` varchar(45) NOT NULL,
|
||||||
|
PRIMARY KEY (`Id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `message_ciphers`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `message_ciphers`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `message_ciphers` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`iv` varchar(30) NOT NULL,
|
||||||
|
`v` int(2) NOT NULL,
|
||||||
|
`iterations` int(11) NOT NULL,
|
||||||
|
`key_size` int(11) NOT NULL,
|
||||||
|
`tag_size` int(11) NOT NULL,
|
||||||
|
`mode` varchar(11) NOT NULL,
|
||||||
|
`adata` varchar(11) NOT NULL,
|
||||||
|
`cipher` varchar(11) NOT NULL,
|
||||||
|
`salt` varchar(100) NOT NULL,
|
||||||
|
`cipher_text` varchar(600) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `roles`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `roles`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `roles` (
|
||||||
|
`role_id` int(5) NOT NULL,
|
||||||
|
`role_name` varchar(15) NOT NULL,
|
||||||
|
`description` varchar(20) NOT NULL,
|
||||||
|
PRIMARY KEY (`role_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `total_messages`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `total_messages`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `total_messages` (
|
||||||
|
`t_id` int(101) NOT NULL AUTO_INCREMENT,
|
||||||
|
`from_user` int(11) NOT NULL,
|
||||||
|
`to_user` int(11) NOT NULL,
|
||||||
|
`total_messages` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`t_id`),
|
||||||
|
UNIQUE KEY `identifier` (`t_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `users`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `users` (
|
||||||
|
`user_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(10) NOT NULL,
|
||||||
|
`password` varchar(80) NOT NULL,
|
||||||
|
`join_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`user_id`),
|
||||||
|
UNIQUE KEY `name` (`name`),
|
||||||
|
KEY `user_id` (`user_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users_roles`
|
||||||
|
--
|
||||||
|
|
||||||
|
--DROP TABLE IF EXISTS `users_roles`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `users_roles` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` int(11) NOT NULL,
|
||||||
|
`role_id` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `user` (`user_id`),
|
||||||
|
KEY `role` (`role_id`),
|
||||||
|
CONSTRAINT `FOREIGN KEY USER IN USERS-ROLES TABLE` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT `fk_roles_roleAssignments` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `chat_messages` (
|
||||||
|
`m_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`from_user` int(11) NOT NULL,
|
||||||
|
`to_user` int(11) NOT NULL,
|
||||||
|
`message` int(10) NOT NULL,
|
||||||
|
`message_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`m_id`),
|
||||||
|
UNIQUE KEY `identifier_message_number` (`m_id`),
|
||||||
|
KEY `identifier_message_number_2` (`m_id`),
|
||||||
|
KEY `from_user` (`from_user`,`to_user`),
|
||||||
|
KEY `message` (`message`),
|
||||||
|
KEY `FOREIGN KEY TO USER IN MESSAGES TABLE` (`to_user`),
|
||||||
|
CONSTRAINT `FOREIGN KEY ENC MESSAGE TABLE` FOREIGN KEY (`message`) REFERENCES `message_ciphers` (`id`) ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT `FOREIGN KEY FROM USER IN MESSAGES TABLE` FOREIGN KEY (`from_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT `FOREIGN KEY TO USER IN MESSAGES TABLE` FOREIGN KEY (`to_user`) REFERENCES `users` (`user_id`) ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
-- Dump completed on 2019-10-03 12:37:23
|
@ -15,9 +15,9 @@ var toUserRadios = document.getElementsByName('toUser');
|
|||||||
var isCheckedUser = false;
|
var isCheckedUser = false;
|
||||||
var chatTextArea = document.getElementById('chatTextArea');
|
var chatTextArea = document.getElementById('chatTextArea');
|
||||||
var passphraseInput = document.getElementById('passphrase');
|
var passphraseInput = document.getElementById('passphrase');
|
||||||
var postNewMessageUrl = "http://192.168.1.8:8080/api/chat/post/message";
|
var postNewMessageUrl = "http://localhost:8080/api/chat/post/message";
|
||||||
var getAllMessagesUrl = "http://192.168.1.8:8080/api/chat/get/messages/";
|
var getAllMessagesUrl = "http://localhost:8080/api/chat/get/messages/";
|
||||||
var getNewMessagesUrl = "http://192.168.1.8:8080/api/chat/get/messages/";
|
var getNewMessagesUrl = "http://localhost:8080/api/chat/get/messages/";
|
||||||
// var messageLog = [];
|
// var messageLog = [];
|
||||||
var username = sessionStorage.getItem('username');
|
var username = sessionStorage.getItem('username');
|
||||||
var password = sessionStorage.getItem('password');
|
var password = sessionStorage.getItem('password');
|
||||||
@ -58,7 +58,7 @@ function handleChatForm() {
|
|||||||
// console.log('second user = ' + user);
|
// console.log('second user = ' + user);
|
||||||
let messageContent = chatInput.value;
|
let messageContent = chatInput.value;
|
||||||
let localDate = new Date();
|
let localDate = new Date();
|
||||||
let messageLine = sprintf('%s %s %s: %s', localDate.toLocaleDateString(), localDate.toLocaleTimeString() ,username, messageContent);
|
let messageLine = sprintf('%s %s %s: %s', localDate.toLocaleDateString(), localDate.toLocaleTimeString(), username, messageContent);
|
||||||
chatTextArea.append(messageLine + "\n");
|
chatTextArea.append(messageLine + "\n");
|
||||||
// let messageCipher = sjcl.encrypt("password", messageContent);
|
// let messageCipher = sjcl.encrypt("password", messageContent);
|
||||||
let messageCipher = sjcl.encrypt(passphraseInput.value, messageContent);
|
let messageCipher = sjcl.encrypt(passphraseInput.value, messageContent);
|
||||||
@ -191,6 +191,13 @@ parent.addDelegatedListener("click", "input[type='radio']", function (event) {
|
|||||||
let i = 0;
|
let i = 0;
|
||||||
let messageLog = [];
|
let messageLog = [];
|
||||||
let lastMessageTimeStamp;
|
let lastMessageTimeStamp;
|
||||||
|
// console.log("Json length = " + json.length);
|
||||||
|
//
|
||||||
|
// if(json.length == 0)
|
||||||
|
// {
|
||||||
|
// console.log("JSON LENGTH IS 0")
|
||||||
|
// }
|
||||||
|
if (json.length > 0) {
|
||||||
json.forEach(function (obj) {
|
json.forEach(function (obj) {
|
||||||
// console.log(obj.toUser);
|
// console.log(obj.toUser);
|
||||||
messageCipher = JSON.stringify(obj.messageCipher);
|
messageCipher = JSON.stringify(obj.messageCipher);
|
||||||
@ -208,13 +215,17 @@ parent.addDelegatedListener("click", "input[type='radio']", function (event) {
|
|||||||
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
||||||
chatTextArea.append(messageLine + '\n');
|
chatTextArea.append(messageLine + '\n');
|
||||||
messageLog[i++] = messageLine;
|
messageLog[i++] = messageLine;
|
||||||
|
// console.log('Message log = ' + messageLog);
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
// console.log('Message log = ' + messageLog);
|
|
||||||
sessionStorage.setItem(this.value, JSON.stringify(messageLog));
|
sessionStorage.setItem(this.value, JSON.stringify(messageLog));
|
||||||
// sessionStorage.clear();
|
// sessionStorage.clear();
|
||||||
console.log('Last message time = ' + lastMessageTimeStamp);
|
console.log('Last message time = ' + lastMessageTimeStamp);
|
||||||
sessionStorage.setItem(this.value + '-time', lastMessageTimeStamp);
|
sessionStorage.setItem(this.value + '-time', lastMessageTimeStamp);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -222,11 +233,14 @@ parent.addDelegatedListener("click", "input[type='radio']", function (event) {
|
|||||||
|
|
||||||
console.log("Stored messages = " + sessionStorage.getItem(this.value));
|
console.log("Stored messages = " + sessionStorage.getItem(this.value));
|
||||||
let storedMessages = JSON.parse(sessionStorage.getItem(this.value));
|
let storedMessages = JSON.parse(sessionStorage.getItem(this.value));
|
||||||
getNewMessages(this.value, sessionStorage.getItem(this.value + '-time'))
|
let lastMessageTime = sessionStorage.getItem(this.value + '-time');
|
||||||
|
console.log("last message time stamp = " + lastMessageTime);
|
||||||
|
if (lastMessageTime != null) {
|
||||||
|
getNewMessages(this.value, lastMessageTime)
|
||||||
.then(json => {
|
.then(json => {
|
||||||
console.log(json)
|
console.log(json)
|
||||||
json.forEach(function (obj)
|
if (json.length > 0) {
|
||||||
{
|
json.forEach(function (obj) {
|
||||||
let messageCipher = JSON.stringify(obj.messageCipher);
|
let messageCipher = JSON.stringify(obj.messageCipher);
|
||||||
let message = sjcl.decrypt(passphraseInput.value, messageCipher);
|
let message = sjcl.decrypt(passphraseInput.value, messageCipher);
|
||||||
// console.log(message);
|
// console.log(message);
|
||||||
@ -241,17 +255,30 @@ parent.addDelegatedListener("click", "input[type='radio']", function (event) {
|
|||||||
console.log(messageLine);
|
console.log(messageLine);
|
||||||
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
||||||
chatTextArea.append(messageLine + '\n');
|
chatTextArea.append(messageLine + '\n');
|
||||||
|
|
||||||
storedMessages.push(messageLine);
|
storedMessages.push(messageLine);
|
||||||
|
|
||||||
})
|
})
|
||||||
});
|
sessionStorage.setItem(this.value + '-time', lastMessageTimeStamp);
|
||||||
// sessionStorage.clear();
|
sessionStorage.setItem(this.value, JSON.stringify(storedMessages));
|
||||||
// chatTextArea.append(JSON.stringify(storedMessages));
|
console.log("this value stored" + sessionStorage.getItem(this.value))
|
||||||
|
console.log("last message time stamp = " + lastMessageTimeStamp);
|
||||||
|
console.log(sessionStorage.getItem(this.value + '-time'));
|
||||||
chatTextArea.textContent = '';
|
chatTextArea.textContent = '';
|
||||||
console.log("Stored messages 2 = " + storedMessages);
|
console.log("Stored messages 2 = " + storedMessages);
|
||||||
storedMessages.forEach(function (messageLine) {
|
storedMessages.forEach(function (messageLine) {
|
||||||
chatTextArea.append(messageLine + '\n');
|
chatTextArea.append(messageLine + '\n');
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// sessionStorage.clear();
|
||||||
|
// chatTextArea.append(JSON.stringify(storedMessages));
|
||||||
|
|
||||||
|
}
|
||||||
// sessionStorage.setItem('status', 'ready');
|
// sessionStorage.setItem('status', 'ready');
|
||||||
// sessionStorage.setItem('this.value', messageLog);
|
// sessionStorage.setItem('this.value', messageLog);
|
||||||
// console.log('Message log = ' + messageLog);
|
// console.log('Message log = ' + messageLog);
|
||||||
|
@ -20,23 +20,23 @@ import static org.mockito.Mockito.when;
|
|||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
public class ChattoApplicationTests {
|
public class ChattoApplicationTests {
|
||||||
|
|
||||||
@Autowired
|
// @Autowired
|
||||||
ChatMessageRepository chatMessageRepository;
|
// ChatMessageRepository chatMessageRepository;
|
||||||
|
//
|
||||||
@Mock
|
// @Mock
|
||||||
ChatMessageRepository mockChatMessageRepository;
|
// ChatMessageRepository mockChatMessageRepository;
|
||||||
|
//
|
||||||
@Autowired
|
// @Autowired
|
||||||
UserRepository userRepository;
|
// UserRepository userRepository;
|
||||||
|
//
|
||||||
@Test
|
@Test
|
||||||
public void contextLoads() {
|
public void contextLoads() {
|
||||||
}
|
}
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testMessageRepo() {
|
// public void testMessageRepo() {
|
||||||
chatMessageRepository.findAll().toString();
|
// chatMessageRepository.findAll().toString();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// @Test
|
// @Test
|
||||||
// public void testSave() {
|
// public void testSave() {
|
||||||
|
23
config/application.properties
Normal file
23
config/application.properties
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
|
||||||
|
spring.datasource.url = jdbc:mysql://localhost:3306/chatto_db?useSSL=false
|
||||||
|
spring.datasource.username = chatto_user
|
||||||
|
spring.datasource.password = password
|
||||||
|
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
|
## Hibernate Properties
|
||||||
|
# The SQL dialect makes Hibernate generate better SQL for the chosen database
|
||||||
|
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
|
||||||
|
|
||||||
|
|
||||||
|
# Hibernate ddl auto (create, create-drop, validate, update)
|
||||||
|
spring.jpa.hibernate.ddl-auto = validate
|
||||||
|
|
||||||
|
logging.level.org.springframework.web=DEBUG
|
||||||
|
logging.level.web=DEBUG
|
||||||
|
logging.level.org.hibernate.SQL=DEBUG
|
||||||
|
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
|
||||||
|
spring.http.log-request-details=true
|
||||||
|
#spring.jackson.date-format=yyyy-MM-d
|
||||||
|
spring.jackson.serialization.write-dates-as-timestamps=false
|
||||||
|
#spring.mvc.static-path-pattern=/static/**
|
Loading…
Reference in New Issue
Block a user