-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataAccess.java
More file actions
92 lines (79 loc) · 2.6 KB
/
DataAccess.java
File metadata and controls
92 lines (79 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.app.person;
import java.util.List;
import java.util.Vector;
import org.eclipse.jgit.api.Git;
import com.jk.core.config.JKConfig;
import com.jk.core.scm.JKGitWrapper;
import com.jk.core.util.JKIOUtil;
import com.jk.core.util.JKObjectUtil;
public class DataAccess {
private static final String ID_FIELD_NAME = "id";
private static JKGitWrapper gw = new JKGitWrapper();
private static Git git= gw.password(JKConfig.getDefaultInstance().getProperty("git-password-plain")).cloneRepo();
/////////////////////////////////////////
public <T> void insert(T record) {
List<T> list = getList((Class<T>) record.getClass());
list.add(record);
save((Class<T>)record.getClass(), list);
}
/////////////////////////////////////////
public <T> T find(Class<T> clas, Object id) {
List<T> list = getList(clas);
for (T t : list) {
if (JKObjectUtil.getFieldValue(t, ID_FIELD_NAME).equals(id)) {
return t;
}
}
return null;
}
/////////////////////////////////////////
public <T> void update(T record) {
List<T> list = (List<T>) getList(record.getClass());
for (int i=0;i<list.size();i++) {
T t = list.get(i);
Object sourceId = JKObjectUtil.getFieldValue(record, ID_FIELD_NAME);
Object currentId = JKObjectUtil.getFieldValue(t, ID_FIELD_NAME);
if (currentId.equals(sourceId)) {
list.set(i, record);
save((Class<T>)record.getClass(), list);
return;
}
}
}
/////////////////////////////////////////
public <T> void delete(T record) {
List<T> list = (List<T>) getList(record.getClass());
for (int i=0;i<list.size();i++) {
T t = list.get(i);
Object sourceId = JKObjectUtil.getFieldValue(record, ID_FIELD_NAME);
Object currentId = JKObjectUtil.getFieldValue(t, ID_FIELD_NAME);
if (currentId.equals(sourceId)) {
list.remove(i);
save((Class<T>)record.getClass(), list);
return;
}
}
}
/////////////////////////////////////////
public <T> List<T> getList(Class<T> clas) {
String filePath = getFilePath(clas);
String fileContents = JKIOUtil.readFile(filePath);
if(fileContents==null) {
return new Vector<>();
}
List<T> all = (List<T>) JKObjectUtil.jsonToObjectList(fileContents, clas);
return all;
}
/////////////////////////////////////////
protected <T> void save(Class<T> clas, List<T> list) {
String contents = JKObjectUtil.toJson(list);
JKIOUtil.writeDataToFile(contents, getFilePath(clas));
gw.addCommitPush();
}
/////////////////////////////////////////
protected <T> String getFilePath(Class<T> clas) {
String fileName = clas.getName() + ".json";
String filePath = gw.getLocalPath() + "/" + fileName;
return filePath;
}
}