peer-at-code-backend/src/be/jeffcheasey88/peeratcode/parser/java/operations/SynchronizedOperation.java

49 lines
No EOL
1.5 KiB
Java

package be.jeffcheasey88.peeratcode.parser.java.operations;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import be.jeffcheasey88.peeratcode.parser.java.CleanerPool;
import be.jeffcheasey88.peeratcode.parser.java.JavaElement;
public class SynchronizedOperation extends OperationContainer{
private static Pattern PATTERN = Pattern.compile("^(\\s*synchronized\\s*)(\\^GENERIC_PARENTHESIS\\d+)(\\s*).*$");
private static Pattern PATTERN_CLEANER = Pattern.compile("^(\\^GENERIC_FUNCTION\\d+).*$");
private String include;
@Override
public int parse(String content, CleanerPool global, CleanerPool local) throws Exception{
Matcher matcher = PATTERN.matcher(content);
matcher.matches();
this.include = local.unzip(matcher.group(2), (s,p) -> s);
int index = matcher.group(1).length()+matcher.group(2).length()+matcher.group(3).length();
content = content.substring(index);
matcher = PATTERN_CLEANER.matcher(content);
matcher.matches();
content = matcher.group(1);
index += content.length();
content = local.unzipOne(content, (s,p) -> s);
content = content.substring(1, content.length()-1);
content = local.clean(content);
super.parse(content, global, local);
return index;
}
@Override
public void show(int tab){
String start = "";
for(int i = 0; i < tab; i++) start+="\t";
System.out.println(start+"synchronized"+this.include+"{");
for(JavaElement child : getChilds()) child.show(tab+1);
System.out.println(start+"}");
}
}