package org.tei.mvcbinding;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@SpringBootApplication
public class MvcBindingApplication {
public static void main(String[] args) throws IOException {
String originalFilePath = "/Users/XXX/IdeaProjects/mvc-binding/src/main/java/org/XXX/mvcbinding/controller/Admin.java";
Map<String, MyJavaField> originalMap = getFieldMap(originalFilePath);
String targetFilePath = "/Users/XXX/IdeaProjects/mvc-binding/src/main/java/org/XXX/mvcbinding/controller/User.java";
Map<String, MyJavaField> targetMap = getFieldMap(targetFilePath);
Set<String> originalSet = new HashSet<>(originalMap.keySet());
Set<String> targetSet = new HashSet<>(targetMap.keySet());
targetSet.removeAll(originalSet);
// display result
for (String key : targetSet) {
MyJavaField myJavaField = targetMap.get(key);
System.out.print(myJavaField.getComment());
System.out.println(myJavaField.getContent());
}
}
private static Map<String, MyJavaField> getFieldMap(String filePath) throws IOException {
FileInputStream inputStream = new FileInputStream(filePath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
boolean readyToParse = false;
Map<String, MyJavaField> propertyMap = new HashMap<>();
StringBuilder comment = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
line = line.trim();
if (line.isBlank()) {
continue;
}
if (line.contains("}")) {
break;
}
if (readyToParse) {
if (!line.startsWith("//") && !line.startsWith("/*") && !line.startsWith("*")) {
int endIndex = line.indexOf(";");
if (endIndex > 0) {
int j = 0;
for (int i = endIndex; i >= 0; i--) {
if (' ' == (line.charAt(i))) {
j = i;
break;
}
}
String fieldName = line.substring(j, endIndex).trim();
MyJavaField field = new MyJavaField(line, comment.toString());
comment.delete(0, comment.length());
propertyMap.put(fieldName, field);
}
} else {
comment.append(line).append("\n");
}
}
if (line.contains("{")) {
readyToParse = true;
}
}
//todo debug
// System.out.println("propertyMap => " + propertyMap);
//close
inputStream.close();
bufferedReader.close();
return propertyMap;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class MyJavaField {
private String content;
private String comment;
}
}
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme