/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ /* * Created on Dec 9, 2003 * */ package org.eclipse.releng; import org.apache.tools.ant.Task; import org.apache.tools.ant.BuildException; import java.util.Vector; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * @author kmoir * * To change the template for this generated type comment go to Window - * Preferences - Java - Code Generation - Code and Comments */ public class CvsDiffParser extends Task { private String mapDiffFile; private Vector updatedMaps; /** * */ public CvsDiffParser() { super(); // TODO Auto-generated constructor stub } public static void main(String[] args) { CvsDiffParser parser = new CvsDiffParser(); parser.setMapDiffFile("d:/junk/cvsDiff.txt"); parser.execute(); } public void execute() throws BuildException { parseMapDiffFile(); sendNotice(); } /** * @return Returns the mapDiffFile. */ public String getMapDiffFile() { return mapDiffFile; } /** * @param mapDiffFile * The mapDiffFile to set. */ public void setMapDiffFile(String mapDiffFile) { this.mapDiffFile = mapDiffFile; } private void parseMapDiffFile() { updatedMaps = new Vector(); //read the contents of the Diff file, and return contents as a String if (mapDiffFile.length() == 0) updatedMaps=null; BufferedReader in = null; String aLine; try { in = new BufferedReader(new FileReader(mapDiffFile)); } catch (FileNotFoundException e) { e.printStackTrace(); } try { while ((aLine = in.readLine()) != null) { if (aLine.startsWith("RCS file")) { String mapPath = (aLine .substring(aLine.indexOf(":"), aLine.indexOf(","))) .trim(); //verification for actual changes in tags base.plugin while ((aLine = in.readLine()) != null && !aLine.startsWith("===")){ if (aLine.startsWith("< plugin")||aLine.startsWith("< fragment")||aLine.startsWith("< feature")||aLine.startsWith("< base.plugin")){ updatedMaps.add(new File(mapPath).getName()); break; } } } } } catch (IOException e) { e.printStackTrace(); } } private void sendNotice(){ if (updatedMaps==null || updatedMaps.size()==0){ throw new BuildException("Build cancelled - map files unchanged."); } Mailer mailer = new Mailer(); String subject="updated map file listing"; String message ="these map files have been updated for the build:\n\n"; for (int i=0; i