public HashMap<String,FileDiff> parseGitDiff() { HashMap<String,FileDiff> fileMap=new HashMap<String,FileDiff>(); ArrayList<String> curFile=new ArrayList<String>(); for (int i = 0; i < diffList.size(); i++) { curFile.add(diffList.get(i)); if((i+1)==diffList.size()||diffList.get(i+1).startsWith(GIT_FLAG)) { FileDiff diff=new FileDiff(curFile); fileMap.put(diff.getId(), diff); curFile=new ArrayList<String>(); } } return fileMap; } public ArrayList<LineDiff> parseLineDiff(ArrayList<String> files) { ArrayList<LineDiff> diff=new ArrayList<LineDiff>(); boolean isStart=false; String frontLine=""; for (int i = 0; i < block.size(); i++) { String line=block.get(i); if((i+1)<block.size()&&block.get(i+1).startsWith(MINUS_FLAG)&&!isStart) { isStart=true; frontLine=block.get(i); } if(line.startsWith(MINUS_FLAG)&&isStart) { LineDiff lineDiff=new LineDiff(frontLine, line,LineDiff.Type.Minus); diff.add(lineDiff); } if(i>1&&!block.get(i-1).startsWith(MINUS_FLAG)&&!line.startsWith(MINUS_FLAG)) { frontLine=block.get(i-1); isStart=false; } if(line.startsWith(PLUS_FLAG)) { LineDiff lineDiff=new LineDiff(frontLine,line,LineDiff.Type.Plus); diff.add(lineDiff); } } return diff; } |