Skip to content

Commit 8ef19cf

Browse files
committed
finished file upload
1 parent f6325e0 commit 8ef19cf

40 files changed

Lines changed: 155 additions & 110 deletions

common/src/main/java/site/bitinit/pnd/common/util/Assert.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@ public static void notEmpty(String str, String msg){
2929
throw new IllegalDataException(msg);
3030
}
3131
}
32+
3233
}

distribution/conf/META-INFO/schema-mysql.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `pnd_resource` (
2222
`uuid` varchar(255) NOT NULL,
2323
`gmt_create` datetime DEFAULT '2019-01-01 00:00:00',
2424
`status` varchar(45) NOT NULL COMMENT '资源状态,表示是否完整等',
25-
`finger_print` varchar(32) NOT NULL,
25+
`md5` varchar(32) NOT NULL,
2626
`gmt_modified` datetime DEFAULT '2019-01-01 00:00:00',
2727
`link` int(11) DEFAULT '0',
2828
PRIMARY KEY (`id`)

distribution/conf/META-INFO/schema.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ CREATE TABLE pnd_resource (
2020
gmt_modified timestamp NOT NULL DEFAULT '2019-01-01 00:00:00',
2121
gmt_create timestamp NOT NULL DEFAULT '2019-01-01 00:00:00',
2222
status varchar(45) NOT NULL,
23-
finger_print varchar(32) NOT NULL,
23+
md5 varchar(32) NOT NULL,
2424
link int DEFAULT 0,
2525
constraint pnd_resource_id_key PRIMARY KEY (id));

web/src/main/java/site/bitinit/pnd/web/config/Properties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void init(){
5555
setDbMaxActive(Integer.parseInt(getEnvProperty(EnvironmentConstants.DB_MAX_ACTIVE, "20")));
5656
setDbMaxIdle(Integer.parseInt(getEnvProperty(EnvironmentConstants.DB_MAX_IDLE, "50")));
5757

58-
setMaxConcurrentUploadNumbers(Integer.parseInt(getEnvProperty(EnvironmentConstants.MAX_CONCURRENT_UPLOAD_NUMBERS, "4")));
58+
setMaxConcurrentUploadNumbers(Integer.parseInt(getEnvProperty(EnvironmentConstants.MAX_CONCURRENT_UPLOAD_NUMBERS, "1")));
5959
setMaxFileUploadSize(getEnvProperty(EnvironmentConstants.MAX_FILE_UPLOAD_SIZE, "12MB"));
6060
setMaxRequestSize(getEnvProperty(EnvironmentConstants.MAX_REQUEST_SIZE, "15MB"));
6161
// 10MB

web/src/main/java/site/bitinit/pnd/web/config/SystemConstants.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ public enum FileType{
1919
/**
2020
* 文件类型,例如FOLDER表示文件夹
2121
*/
22-
DEFAULT, FOLDER, PDF, COMPRESS_FILE, VIDEO, AUDIO, PICTURE, DOC, PPT, TXT, TORRENT;
22+
DEFAULT, FOLDER, PDF, COMPRESS_FILE,
23+
VIDEO, AUDIO, PICTURE, DOC, PPT, TXT,
24+
TORRENT, WEB, CODE;
2325

2426
@Override
2527
public String toString() {
@@ -71,6 +73,7 @@ public enum ResourceState {
7173
fileTypeAccordingToSuffix.put(".jpg", FileType.PICTURE);
7274
fileTypeAccordingToSuffix.put(".jpeg", FileType.PICTURE);
7375
fileTypeAccordingToSuffix.put(".gif", FileType.PICTURE);
76+
fileTypeAccordingToSuffix.put(".ico", FileType.PICTURE);
7477

7578
// doc
7679
fileTypeAccordingToSuffix.put(".doc", FileType.DOC);
@@ -85,5 +88,19 @@ public enum ResourceState {
8588

8689
// torrent
8790
fileTypeAccordingToSuffix.put(".torrent", FileType.TORRENT);
91+
92+
// web
93+
fileTypeAccordingToSuffix.put(".html", FileType.WEB);
94+
fileTypeAccordingToSuffix.put(".htm", FileType.WEB);
95+
96+
// code
97+
fileTypeAccordingToSuffix.put(".js", FileType.CODE);
98+
fileTypeAccordingToSuffix.put(".json", FileType.CODE);
99+
fileTypeAccordingToSuffix.put(".java", FileType.CODE);
100+
fileTypeAccordingToSuffix.put(".c", FileType.CODE);
101+
fileTypeAccordingToSuffix.put(".cpp", FileType.CODE);
102+
fileTypeAccordingToSuffix.put(".h", FileType.CODE);
103+
fileTypeAccordingToSuffix.put(".py", FileType.CODE);
104+
fileTypeAccordingToSuffix.put(".go", FileType.CODE);
88105
}
89106
}

web/src/main/java/site/bitinit/pnd/web/controller/ResourceController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public ResponseEntity getConfig(){
3030
}
3131

3232
@PostMapping("/rs/preparation")
33-
public ResponseEntity prepareFileUpload(String clientId, String fileFingerPrint,
33+
public ResponseEntity prepareFileUpload(String clientId, String md5,
3434
Long size, long parentId, String fileName){
35-
return ResponseUtils.ok(resourceService.prepareFileUpload(clientId, fileFingerPrint, size, parentId, fileName));
35+
return ResponseUtils.ok(resourceService.prepareFileUpload(clientId, md5, size, parentId, fileName));
3636
}
3737

3838
@GetMapping("/rs/fingerPrint")
@@ -51,8 +51,9 @@ public void resourceUpload(String clientId, Long resourceId, @RequestParam("file
5151
}
5252

5353
@PutMapping("/rs/state")
54-
public ResponseEntity pauseFileUpload(String clientId, Long resourceId){
55-
resourceService.pauseResource(clientId, resourceId);
54+
public ResponseEntity pauseFileUpload(String clientId, Long resourceId, String type){
55+
resourceService.changeResourceState(clientId, resourceId, type);
5656
return ResponseUtils.ok("");
5757
}
58+
5859
}

web/src/main/java/site/bitinit/pnd/web/dao/ResourceDao.java

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,33 +39,30 @@ public PndResource findById(long id){
3939
return daoUtils.queryForObject(sql, RESOURCE_ROW_MAPPER, id);
4040
}
4141

42-
public PndResource findByFingerPrint(String crc, SystemConstants.ResourceState state){
43-
String sql = "select " + RESOURCE_ALL_FIELDS + " from " + RESOURCE_TABLE_NAME + " where finger_print = ? and status = ?";
44-
logger.debug("[resource query] crc-{} {}", crc, sql);
45-
List<PndResource> resources = daoUtils.queryForList(sql, RESOURCE_ROW_MAPPER, crc, state.name());
42+
public PndResource findByFingerPrint(String md5, SystemConstants.ResourceState state){
43+
String sql = "select " + RESOURCE_ALL_FIELDS + " from " + RESOURCE_TABLE_NAME + " where md5 = ? and status = ?";
44+
logger.debug("[resource query] md5-{} {}", md5, sql);
45+
List<PndResource> resources = daoUtils.queryForList(sql, RESOURCE_ROW_MAPPER, md5, state.name());
4646
if (!Objects.isNull(resources) && resources.size() >= 1){
4747
return resources.get(0);
4848
}
4949
return null;
5050
}
5151

5252
public long save(PndResource resource){
53-
String sql = "insert into " + RESOURCE_TABLE_NAME + " (size, path, uuid, gmt_create, gmt_modified, status, finger_print) "
53+
String sql = "insert into " + RESOURCE_TABLE_NAME + " (size, path, uuid, gmt_create, gmt_modified, status, md5) "
5454
+ "values (?, ?, ?, ?, ?, ?, ?)";
5555
KeyHolder keyHolder = new GeneratedKeyHolder();
56-
jdbcTemplate.update(new PreparedStatementCreator() {
57-
@Override
58-
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
59-
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
60-
ps.setLong(1, resource.getSize());
61-
ps.setString(2, resource.getPath());
62-
ps.setString(3, resource.getUuid());
63-
ps.setString(4, CommonUtils.formatDate(new Date(resource.getGmtCreate())));
64-
ps.setString(5, CommonUtils.formatDate(new Date(resource.getGmtModified())));
65-
ps.setString(6, resource.getStatus());
66-
ps.setString(7, resource.getFingerPrint());
67-
return ps;
68-
}
56+
jdbcTemplate.update(con -> {
57+
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
58+
ps.setLong(1, resource.getSize());
59+
ps.setString(2, resource.getPath());
60+
ps.setString(3, resource.getUuid());
61+
ps.setString(4, CommonUtils.formatDate(new Date(resource.getGmtCreate())));
62+
ps.setString(5, CommonUtils.formatDate(new Date(resource.getGmtModified())));
63+
ps.setString(6, resource.getStatus());
64+
ps.setString(7, resource.getMd5());
65+
return ps;
6966
}, keyHolder);
7067

7168
return keyHolder.getKey().longValue();
@@ -84,7 +81,7 @@ public int updateIndex(long id, long expected, long val){
8481
}
8582

8683
public static final String RESOURCE_TABLE_NAME = " pnd_resource ";
87-
private static final String RESOURCE_ALL_FIELDS = " id, size, path, uuid, gmt_create, gmt_modified, status, finger_print, link ";
84+
private static final String RESOURCE_ALL_FIELDS = " id, size, path, uuid, gmt_create, gmt_modified, status, md5, link ";
8885
private static final ResourceRowMapper RESOURCE_ROW_MAPPER = new ResourceRowMapper();
8986
static class ResourceRowMapper implements RowMapper<PndResource> {
9087

@@ -98,7 +95,7 @@ public PndResource mapRow(ResultSet rs, int rowNum) throws SQLException {
9895
resource.setGmtCreate(rs.getTimestamp("gmt_create").getTime());
9996
resource.setGmtModified(rs.getTimestamp("gmt_modified").getTime());
10097
resource.setStatus(rs.getString("status"));
101-
resource.setFingerPrint(rs.getString("finger_print"));
98+
resource.setMd5(rs.getString("md5"));
10299
resource.setLink(rs.getInt("link"));
103100
return resource;
104101
}

web/src/main/java/site/bitinit/pnd/web/model/PndResource.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class PndResource {
1111
private Long size;
1212
private String path;
1313
private String uuid;
14-
private String fingerPrint;
14+
private String md5;
1515
private String status;
1616
private Long gmtCreate;
1717
private Long gmtModified;
@@ -49,12 +49,12 @@ public void setUuid(String uuid) {
4949
this.uuid = uuid;
5050
}
5151

52-
public String getFingerPrint() {
53-
return fingerPrint;
52+
public String getMd5() {
53+
return md5;
5454
}
5555

56-
public void setFingerPrint(String fingerPrint) {
57-
this.fingerPrint = fingerPrint;
56+
public void setMd5(String md5) {
57+
this.md5 = md5;
5858
}
5959

6060
public String getStatus() {

web/src/main/java/site/bitinit/pnd/web/model/PndResourceState.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
*/
1212
public class PndResourceState extends PndResource {
1313

14+
public static final String PAUSE = "pause";
15+
public static final String RESUME = "resume";
16+
1417
private long finishedUploadBytes = 0;
15-
private volatile boolean paused = false;
18+
private boolean paused = false;
1619
private String fileName;
1720
private long parentId;
1821
private File file;
@@ -41,11 +44,11 @@ public synchronized void addFinishedUploadBytes(long bytes){
4144
this.finishedUploadBytes += bytes;
4245
}
4346

44-
public boolean isPaused() {
47+
public synchronized boolean isPaused() {
4548
return paused;
4649
}
4750

48-
public void setPaused(boolean paused) {
51+
public synchronized void setPaused(boolean paused) {
4952
this.paused = paused;
5053
}
5154

@@ -84,7 +87,7 @@ public void setOutputStream(OutputStream outputStream) {
8487
private void fillData(PndResourceStateBuilder builder){
8588
setId(builder.id);
8689
setLink(builder.link);
87-
setFingerPrint(builder.fingerPrint);
90+
setMd5(builder.md5);
8891
setGmtModified(builder.gmtModified);
8992
setGmtCreate(builder.gmtCreate);
9093
setPath(builder.path);
@@ -114,7 +117,7 @@ public static class PndResourceStateBuilder{
114117
Long size;
115118
String path;
116119
String uuid;
117-
String fingerPrint;
120+
String md5;
118121
SystemConstants.ResourceState status;
119122
Long gmtCreate;
120123
Long gmtModified;
@@ -129,7 +132,7 @@ public PndResourceStateBuilder pndResource(PndResource resource){
129132
this.size = resource.getSize();
130133
this.path = resource.getPath();
131134
this.uuid = resource.getUuid();
132-
this.fingerPrint = resource.getFingerPrint();
135+
this.md5 = resource.getMd5();
133136
this.status = SystemConstants.ResourceState.valueOf(resource.getStatus());
134137
this.gmtCreate = resource.getGmtCreate();
135138
this.gmtModified = resource.getGmtModified();
@@ -157,8 +160,8 @@ public PndResourceStateBuilder uuid(String uuid){
157160
return this;
158161
}
159162

160-
public PndResourceStateBuilder fingerPrint(String fingerPrint){
161-
this.fingerPrint = fingerPrint;
163+
public PndResourceStateBuilder md5(String md5){
164+
this.md5 = md5;
162165
return this;
163166
}
164167

web/src/main/java/site/bitinit/pnd/web/service/PersistResourceService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public Void call() throws Exception {
4949
byte[] buffer = new byte[BUFFER_SIZE];
5050
int bytesRead = inputStream.read(buffer);
5151
if (bytesRead != -1){
52-
state.getOutputStream().write(buffer);
52+
state.getOutputStream().write(buffer, 0, bytesRead);
5353
state.addFinishedUploadBytes(bytesRead);
5454

5555
resourcePersistPools.submit(this);

0 commit comments

Comments
 (0)