Revize 8b817e46
Přidáno uživatelem Patrik Harag před asi 6 roky(ů)
sources/imiger-core/create_table.sql | ||
---|---|---|
1 |
|
|
2 |
|
|
3 |
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; |
|
4 |
SET time_zone = "+00:00"; |
|
5 |
|
|
6 |
-- |
|
7 |
-- Databáze: `visualization_tool` |
|
8 |
-- |
|
9 |
|
|
10 |
-- -------------------------------------------------------- |
|
11 |
|
|
12 |
-- |
|
13 |
-- Struktura tabulky `user` |
|
14 |
-- |
|
15 |
|
|
16 |
CREATE TABLE IF NOT EXISTS `user` ( |
|
17 |
`id` int(11) NOT NULL AUTO_INCREMENT, |
|
18 |
`nick` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
19 |
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL DEFAULT '', |
|
20 |
`psw` varchar(60) COLLATE utf8_czech_ci NOT NULL, |
|
21 |
`session` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
22 |
`active` tinyint(1) NOT NULL, |
|
23 |
`created` datetime NOT NULL, |
|
24 |
`email` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
25 |
CONSTRAINT PK_user PRIMARY KEY (`id`) |
|
26 |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; |
|
27 |
|
|
28 |
-- |
|
29 |
-- Struktura tabulky `diagram` |
|
30 |
-- |
|
31 |
|
|
32 |
CREATE TABLE IF NOT EXISTS `diagram` ( |
|
33 |
`id` int(11) NOT NULL AUTO_INCREMENT, |
|
34 |
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL, |
|
35 |
`created` datetime NOT NULL, |
|
36 |
`last_update` datetime NOT NULL, |
|
37 |
`user_id` int(11) NOT NULL, |
|
38 |
`public` tinyint(1) NOT NULL DEFAULT '0', |
|
39 |
`graph_json` longtext COLLATE utf8_czech_ci NOT NULL DEFAULT '', |
|
40 |
CONSTRAINT PK_diagram PRIMARY KEY (`id`), |
|
41 |
CONSTRAINT FK_user_diagram FOREIGN KEY (`user_id`) REFERENCES user(`id`) |
|
42 |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; |
|
43 |
|
sources/imiger-core/src/main/java/cz/zcu/kiv/offscreen/user/MyBatisUtil.java | ||
---|---|---|
1 | 1 |
package cz.zcu.kiv.offscreen.user; |
2 | 2 |
|
3 |
import java.io.*; |
|
4 |
import java.nio.charset.StandardCharsets; |
|
5 |
import java.util.Properties; |
|
3 | 6 |
import org.apache.ibatis.io.Resources; |
7 |
import org.apache.ibatis.jdbc.ScriptRunner; |
|
8 |
import org.apache.ibatis.session.SqlSession; |
|
4 | 9 |
import org.apache.ibatis.session.SqlSessionFactory; |
5 | 10 |
import org.apache.ibatis.session.SqlSessionFactoryBuilder; |
6 | 11 |
|
7 |
import java.io.InputStream; |
|
8 |
|
|
9 | 12 |
public class MyBatisUtil { |
10 | 13 |
private static final String CONFIGURATION = "mybatis-config.xml"; |
14 |
private static final String DB_INIT_SCRIPT = "create_table.sql"; |
|
15 |
|
|
16 |
private static final String PROPERTY_INIT_DB = "INIT_DB"; |
|
17 |
private static final String PROPERTY_JDBC_DATABASE_URL = "JDBC_DATABASE_URL"; |
|
18 |
private static final String PROPERTY_JDBC_DATABASE_USERNAME = "JDBC_DATABASE_USERNAME"; |
|
19 |
private static final String PROPERTY_JDBC_DATABASE_PASSWORD = "JDBC_DATABASE_PASSWORD"; |
|
20 |
|
|
11 | 21 |
private static SqlSessionFactory sqlSessionFactory; |
12 | 22 |
|
13 | 23 |
public static SqlSessionFactory getSqlSessionFactory() { |
14 |
|
|
15 | 24 |
if (sqlSessionFactory == null) { |
16 | 25 |
try { |
17 |
InputStream inputStream = Resources.getResourceAsStream(CONFIGURATION); |
|
18 |
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); |
|
26 |
sqlSessionFactory = createFactory(); |
|
27 |
if (Boolean.parseBoolean(System.getenv(PROPERTY_INIT_DB))) { |
|
28 |
initDatabase(sqlSessionFactory); |
|
29 |
} |
|
19 | 30 |
} catch (Exception e) { |
20 | 31 |
throw new DataAccessException(e); |
21 | 32 |
} |
22 | 33 |
} |
23 | 34 |
return sqlSessionFactory; |
24 | 35 |
} |
36 |
|
|
37 |
private static SqlSessionFactory createFactory() throws IOException { |
|
38 |
Properties properties = new Properties(); |
|
39 |
properties.setProperty(PROPERTY_JDBC_DATABASE_URL, System.getenv(PROPERTY_JDBC_DATABASE_URL)); |
|
40 |
properties.setProperty(PROPERTY_JDBC_DATABASE_USERNAME, System.getenv(PROPERTY_JDBC_DATABASE_USERNAME)); |
|
41 |
properties.setProperty(PROPERTY_JDBC_DATABASE_PASSWORD, System.getenv(PROPERTY_JDBC_DATABASE_PASSWORD)); |
|
42 |
|
|
43 |
InputStream inputStream = Resources.getResourceAsStream(CONFIGURATION); |
|
44 |
return new SqlSessionFactoryBuilder().build(inputStream, properties); |
|
45 |
} |
|
46 |
|
|
47 |
private static void initDatabase(SqlSessionFactory sqlSessionFactory) { |
|
48 |
try (SqlSession session = sqlSessionFactory.openSession()) { |
|
49 |
InputStream inputStream = Resources.getResourceAsStream(DB_INIT_SCRIPT); |
|
50 |
InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); |
|
51 |
|
|
52 |
ScriptRunner sr = new ScriptRunner(session.getConnection()); |
|
53 |
sr.runScript(reader); |
|
54 |
|
|
55 |
session.commit(); |
|
56 |
} catch (Exception e) { |
|
57 |
throw new DataAccessException(e); |
|
58 |
} |
|
59 |
} |
|
25 | 60 |
} |
sources/imiger-core/src/main/resources/create_table.sql | ||
---|---|---|
1 |
|
|
2 |
|
|
3 |
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; |
|
4 |
SET time_zone = "+00:00"; |
|
5 |
|
|
6 |
-- |
|
7 |
-- Struktura tabulky `user` |
|
8 |
-- |
|
9 |
|
|
10 |
CREATE TABLE IF NOT EXISTS `user` ( |
|
11 |
`id` int(11) NOT NULL AUTO_INCREMENT, |
|
12 |
`nick` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
13 |
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL DEFAULT '', |
|
14 |
`psw` varchar(60) COLLATE utf8_czech_ci NOT NULL, |
|
15 |
`session` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
16 |
`active` tinyint(1) NOT NULL, |
|
17 |
`created` datetime NOT NULL, |
|
18 |
`email` varchar(50) COLLATE utf8_czech_ci NOT NULL, |
|
19 |
CONSTRAINT PK_user PRIMARY KEY (`id`) |
|
20 |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; |
|
21 |
|
|
22 |
-- |
|
23 |
-- Struktura tabulky `diagram` |
|
24 |
-- |
|
25 |
|
|
26 |
CREATE TABLE IF NOT EXISTS `diagram` ( |
|
27 |
`id` int(11) NOT NULL AUTO_INCREMENT, |
|
28 |
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL, |
|
29 |
`created` datetime NOT NULL, |
|
30 |
`last_update` datetime NOT NULL, |
|
31 |
`user_id` int(11) NOT NULL, |
|
32 |
`public` tinyint(1) NOT NULL DEFAULT '0', |
|
33 |
`graph_json` longtext COLLATE utf8_czech_ci NOT NULL DEFAULT '', |
|
34 |
CONSTRAINT PK_diagram PRIMARY KEY (`id`), |
|
35 |
CONSTRAINT FK_user_diagram FOREIGN KEY (`user_id`) REFERENCES user(`id`) |
|
36 |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; |
|
37 |
|
sources/imiger-core/src/main/resources/mybatis-config.xml | ||
---|---|---|
9 | 9 |
<transactionManager type="JDBC"/> |
10 | 10 |
<dataSource type="POOLED"> |
11 | 11 |
<property name="driver" value="com.mysql.cj.jdbc.Driver"/> |
12 |
<property name="url" value="jdbc:mysql://localhost/visualization_tool?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
|
|
13 |
<property name="username" value="admin"/>
|
|
14 |
<property name="password" value="admin"/>
|
|
12 |
<property name="url" value="${JDBC_DATABASE_URL}"/>
|
|
13 |
<property name="username" value="${JDBC_DATABASE_USERNAME}"/>
|
|
14 |
<property name="password" value="${JDBC_DATABASE_PASSWORD}"/>
|
|
15 | 15 |
</dataSource> |
16 | 16 |
</environment> |
17 | 17 |
</environments> |
Také k dispozici: Unified diff
Improve db configuration