-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.java
More file actions
125 lines (109 loc) · 4.04 KB
/
index.java
File metadata and controls
125 lines (109 loc) · 4.04 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.HashMap;
import java.util.Map;
import java.nio.file.Files;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Index {
public static HashMap<String, String> files = new HashMap<>();
public static void init() throws IOException {
String folder = "./objects";
Path folderPath = Paths.get(folder);
if (!Files.exists(folderPath)) {
try {
Files.createDirectory(folderPath);
} catch (IOException e) {
e.printStackTrace();
}
}
Path index = Paths.get("index");
if (!Files.exists(index)) {
try {
Files.createFile(index);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void add(Tree tree) throws IOException {
tree.getContents();
String treeContents = tree.getString();
String treeSha1 = Blob.hashStringToSHA1(treeContents);
if (new File("objects/" + treeSha1).exists()) {
System.out.println("added tree with SHA-1: " + treeSha1);
}
FileWriter fw = new FileWriter("index", true);
fw.write("tree : " + treeSha1 + "\n");
fw.close();
tree.writeToObjects();
}
public static void addFile(String fileName) throws IOException {
try {
Blob b = new Blob(fileName);
String hashName = b.getSha();
files.put(fileName, hashName);
Path index = Paths.get("index");
try (BufferedWriter write = Files.newBufferedWriter(index, StandardOpenOption.CREATE,
StandardOpenOption.WRITE)) {
for (Map.Entry<String, String> entry : files.entrySet()) {
write.write(entry.getKey() + " : " + entry.getValue());
write.newLine();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void remove(String fileName) throws IOException {
try {
files.remove(fileName);
Path index = Paths.get("index");
try (BufferedWriter clear = Files.newBufferedWriter(index, StandardOpenOption.TRUNCATE_EXISTING)) {
} catch (IOException e) {
e.printStackTrace();
}
try (BufferedWriter write = Files.newBufferedWriter(index, StandardOpenOption.CREATE,
StandardOpenOption.WRITE)) {
for (Map.Entry<String, String> entry : files.entrySet()) {
write.write(entry.getKey() + " : " + entry.getValue());
write.newLine();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void updateIndexTree() throws IOException {
File indexFile = new File("index");
File temp = new File("tempind");
BufferedReader br = new BufferedReader(new FileReader(indexFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
String curr;
while ((curr = br.readLine()) != null) {
{
if (curr.startsWith("blob")) {
String[] line = curr.split(" : ");
String orginalFile = line[0].substring(5).trim();
String sha = line[1].trim();
String updated = "blob : " + sha + " : " + orginalFile;
bw.write(updated);
} else if (curr.startsWith("tree"))
bw.write(curr);
else if (curr.startsWith("*deleted*") || curr.startsWith("*edited*")) {
bw.write(curr);
}
}
}
bw.close();
bw.close();
temp.renameTo(indexFile);
}
// public boolean first() throws Exception {
// }
}