package com.everexample.xstream; import com.thoughtworks.xstream.XStream; import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * <br/> * ParseReview-com.baidu.navonline.parsereview.ReviewParser.java * 解析code review结果 * @author <a href="mailto:zhanghanguo@baidu.com">zhanghanguo@baidu.com</a> * @version 2013-1-22下午1:54:24 */ public class ReviewParser { private static final String FORMAT = "问题编号:%1$d\n问题描述:%2$s:%3$s\n文件:%4$s\n行号:%5$s\n修复人:%6$s\n"; private static final String INPUT_TOP_DIR = "input/"; private static final String OUTPUT_TOP_DIR = "output/"; private static final String SUFFIX_OUTPUT_FILE = ".txt"; /** * @param args */ public static void main(String[] args) { XStream stream = new XStream(); stream.processAnnotations(Review.class); File file = new File(INPUT_TOP_DIR); if (file.exists() && file.isDirectory()) { File[] files = file.listFiles(); for (File f : files) { Review review = (Review) stream.fromXML(f); int size = review.getReviewIssues().size(); StringBuilder builder = new StringBuilder(); builder.append("-------------- ").append(review.getId()) .append(" -----------").append("\n"); for (int i = 0; i < size; i++) { ReviewIssue issue = review.getReviewIssues().get(i); builder.append(String.format(FORMAT, i + 1, issue .getSummary(), issue.getDescription(), issue .getFileTag().getContent(), issue.getFileTag() .getLine(), issue.getAssignedTo())); builder.append("----------------------------\n"); } try { FileWriter writer = new FileWriter(OUTPUT_TOP_DIR + new File(f.getName() + SUFFIX_OUTPUT_FILE)); writer.write(builder.toString()); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }