Skip to content

Commit edf9869

Browse files
author
huyibing
committed
提交demo
1 parent 0023306 commit edf9869

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+2817
-186
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
node_modules/
2+
.idea

demo/.docker/database/Dockerfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM mysql:8
2+
ENV LANG zh_CN.UTF-8
3+
ENV MYSQL_DATABASE rare_characters
4+
ENV MYSQL_ROOT_PASSWORD root123456
5+
ADD init.sql ./docker-entrypoint-initdb.d
6+
EXPOSE 3306

demo/.docker/database/init.sql

+987
Large diffs are not rendered by default.

demo/.docker/server/Dockerfile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# jdk版本
2+
FROM moxm/java:1.8-full
3+
4+
# 临时文件目录
5+
VOLUME /tmp
6+
ADD rarecharacterdemo-0.0.1-SNAPSHOT.jar app.jar
7+
EXPOSE 8088
8+
9+
# ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 "/dev/urandom" 作为 Entropy Source.
10+
ENTRYPOINT ["java","-jar","app.jar","-Xms512m","-Xmx1024m","-Djava.security.egd=file:/dev/./urandom"]
Binary file not shown.

demo/.docker/web/Dockerfile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# # jdk版本
2+
# FROM moxm/java:1.8-full
3+
4+
# # 临时文件目录
5+
# VOLUME /tmp
6+
# ADD rarecharacterdemo-0.0.1-SNAPSHOT.jar app.jar
7+
# EXPOSE 8088
8+
9+
# # ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 "/dev/urandom" 作为 Entropy Source.
10+
# ENTRYPOINT ["java","-jar","app.jar","-Xms512m","-Xmx1024m","-Djava.security.egd=file:/dev/./urandom"]

demo/.gitignore

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/
34+
35+
### mvn ###
36+
.mvn

demo/docker-compose.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: '3'
2+
services:
3+
mysql:
4+
build:
5+
context: ./.docker/database
6+
dockerfile: Dockerfile
7+
ports:
8+
- "3306:3306"
9+
container_name: rare-mysql
10+
environment:
11+
- LANG=zh_CN.UTF-8
12+
web:
13+
build:
14+
context: ./.docker/server
15+
dockerfile: Dockerfile
16+
container_name: rare-server
17+
ports:
18+
- "8088:8088"
19+
depends_on:
20+
- mysql

demo/pom.xml

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>2.7.8</version>
9+
<relativePath/> <!-- lookup parent from repository -->
10+
</parent>
11+
<groupId>com.example</groupId>
12+
<artifactId>rarecharacterdemo</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<name>rarecharacterdemo</name>
15+
<description>Demo project for Spring Boot</description>
16+
<properties>
17+
<java.version>1.8</java.version>
18+
</properties>
19+
<dependencies>
20+
<dependency>
21+
<groupId>org.springframework.boot</groupId>
22+
<artifactId>spring-boot-starter-web</artifactId>
23+
</dependency>
24+
25+
<dependency>
26+
<groupId>org.springframework.boot</groupId>
27+
<artifactId>spring-boot-starter-test</artifactId>
28+
<scope>test</scope>
29+
</dependency>
30+
31+
<dependency>
32+
<groupId>com.alipay.rarecharacter</groupId>
33+
<artifactId>rarecharacter</artifactId>
34+
<version>1.0.0.20230220</version>
35+
</dependency>
36+
37+
<dependency>
38+
<groupId>org.springframework</groupId>
39+
<artifactId>spring-test</artifactId>
40+
</dependency>
41+
42+
<dependency>
43+
<groupId>org.springframework.boot</groupId>
44+
<artifactId>spring-boot-test</artifactId>
45+
</dependency>
46+
47+
<dependency>
48+
<groupId>org.springframework.boot</groupId>
49+
<artifactId>spring-boot-starter-jdbc</artifactId>
50+
</dependency>
51+
52+
<dependency>
53+
<groupId>mysql</groupId>
54+
<artifactId>mysql-connector-java</artifactId>
55+
<version>8.0.21</version>
56+
<scope>runtime</scope>
57+
</dependency>
58+
59+
<!--lombok注解简化代码-->
60+
<dependency>
61+
<groupId>org.projectlombok</groupId>
62+
<artifactId>lombok</artifactId>
63+
</dependency>
64+
65+
</dependencies>
66+
67+
<build>
68+
<plugins>
69+
<plugin>
70+
<groupId>org.springframework.boot</groupId>
71+
<artifactId>spring-boot-maven-plugin</artifactId>
72+
</plugin>
73+
</plugins>
74+
</build>
75+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
package com.example.rarecharacterdemo;
2+
3+
import com.alipay.rarecharacter.core.manager.RareNameTransferManagerImpl;
4+
import com.alipay.rarecharacter.dal.dao.spi.RareCharacterDAO;
5+
import com.alipay.rarecharacter.dal.dataobject.RareCharacterDO;
6+
import org.apache.commons.lang3.StringUtils;
7+
import org.apache.logging.log4j.LogManager;
8+
import org.apache.logging.log4j.Logger;
9+
import org.junit.Test;
10+
import org.junit.runner.RunWith;
11+
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.boot.test.context.SpringBootTest;
13+
import org.springframework.test.context.junit4.SpringRunner;
14+
import org.springframework.util.CollectionUtils;
15+
16+
import java.io.*;
17+
import java.util.ArrayList;
18+
import java.util.Date;
19+
import java.util.List;
20+
import java.util.UUID;
21+
22+
23+
/**
24+
* 将csv数据初始化到数据库rare_characters表中
25+
*
26+
* @author huyibing
27+
* @version $Id: InitRareCharactersData.java, v 0.1 2022年05月06日 下午14:23 huyibing Exp $
28+
*/
29+
@RunWith(SpringRunner.class)
30+
@SpringBootTest(classes = {RarecharacterdemoApplication.class, InitRareCharactersData.class})
31+
public class InitRareCharactersData {
32+
33+
/**
34+
* logger
35+
*/
36+
private final static Logger logger = LogManager
37+
.getLogger(RareNameTransferManagerImpl.class);
38+
39+
@Autowired
40+
private RareCharacterDAO rareCharacterDAO;
41+
42+
private static final String FILE_PATH = "src/main/resources/static/z_data.csv";
43+
44+
@Test
45+
public void test() throws FileNotFoundException, UnsupportedEncodingException {
46+
writeDBFromCsv(FILE_PATH);
47+
}
48+
49+
/**
50+
* writeDBFromCsv 读取数据文件并写入数据库
51+
*
52+
* @param filePath
53+
* @return
54+
*/
55+
public void writeDBFromCsv(String filePath) throws FileNotFoundException, UnsupportedEncodingException {
56+
try {
57+
File csv = new File(FILE_PATH);
58+
csv.setReadable(true);
59+
csv.setWritable(true);
60+
InputStreamReader isr = new InputStreamReader(new FileInputStream(csv), "UTF-8");
61+
BufferedReader br = new BufferedReader(isr);
62+
63+
String line = "";
64+
int lineNum = 0;
65+
while ((line = br.readLine()) != null) {
66+
if (lineNum != 0) {
67+
RareCharacterDO rareCharacterDO = parseCsvLine(line, lineNum);
68+
insert(rareCharacterDO);
69+
logger.info("initData insert one line, lineNum = " + lineNum);
70+
}
71+
lineNum++;
72+
}
73+
logger.info("initData finish, lineNum = " + lineNum);
74+
} catch (IOException e) {
75+
logger.info("initData exception, e = ", e);
76+
}
77+
}
78+
79+
/**
80+
* 解析csv文件,转换为数据模型
81+
*
82+
* @param line
83+
* @param lineNum
84+
* @return
85+
*/
86+
public RareCharacterDO parseCsvLine(String line, int lineNum) {
87+
if (StringUtils.isBlank(line)) {
88+
logger.info("parseCsvLine line is blank, lineNum = " + lineNum);
89+
return null;
90+
}
91+
92+
String[] columns = line.split("[,]", -1);
93+
if (columns.length < 13) {
94+
logger.info("parseCsvLine line lack column, lineNum = " + lineNum);
95+
return null;
96+
}
97+
98+
RareCharacterDO rareCharacterDO = new RareCharacterDO();
99+
rareCharacterDO.setId(String.valueOf(lineNum));
100+
rareCharacterDO.setCharId(columns[1]);
101+
rareCharacterDO.setEncodeType(columns[2]);
102+
rareCharacterDO.setCode(columns[3]);
103+
rareCharacterDO.setNcrCode(columns[4]);
104+
rareCharacterDO.setTone(columns[5]);
105+
rareCharacterDO.setPic(columns[6]);
106+
rareCharacterDO.setExtInfo(columns[7]);
107+
rareCharacterDO.setGmtCreate(new Date());
108+
rareCharacterDO.setGmtModified(new Date());
109+
rareCharacterDO.setCodePoint(columns[10]);
110+
rareCharacterDO.setFont(columns[11]);
111+
rareCharacterDO.setWeight(columns[12]);
112+
113+
if (StringUtils.isBlank(columns[1])) {
114+
rareCharacterDO.setCharId(genCharId());
115+
}
116+
117+
return rareCharacterDO;
118+
}
119+
120+
private String genCharId() {
121+
String charId = "";
122+
while (true) {
123+
charId = UUID.randomUUID().toString();
124+
if (StringUtils.isNotBlank(charId)) {
125+
charId = charId.substring(0, 10);
126+
}
127+
128+
List<String> charIds = new ArrayList<>();
129+
charIds.add(charId);
130+
List<RareCharacterDO> rareCharacters = rareCharacterDAO.findByCharIds(charIds);
131+
if (CollectionUtils.isEmpty(rareCharacters)) {
132+
break;
133+
}
134+
}
135+
return charId;
136+
}
137+
138+
/**
139+
* 写入数据库
140+
*
141+
* @param rareCharacterDO
142+
*/
143+
public void insert(RareCharacterDO rareCharacterDO) {
144+
if (rareCharacterDO == null) {
145+
logger.info("insert, rareCharacterDO is null");
146+
return;
147+
}
148+
149+
try {
150+
rareCharacterDAO.insert(rareCharacterDO);
151+
} catch (Exception e) {
152+
logger.info("insert rareCharacterDO exception, e = ", e);
153+
}
154+
}
155+
}
156+

0 commit comments

Comments
 (0)