1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/*******************************************************************************
2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2000, 2006 IBM Corporation and others.
3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * All rights reserved. This program and the accompanying materials
4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are made available under the terms of the Eclipse Public License v1.0
5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * which accompanies this distribution, and is available at
6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * http://www.eclipse.org/legal/epl-v10.html
7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *
8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Contributors:
9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *     IBM Corporation - initial API and implementation
10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *******************************************************************************/
11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpackage org.eclipse.releng;
12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.Task;
14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.BuildException;
15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.File;
16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/*
18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * A class that strips version numbers off built plugin directory names.  This
19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * is helpful when prebuilt plugins are used in generating javadoc (on the
20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * classpath).
21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */
22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic class VersionNumberStripper extends Task {
24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	//the directory containing the directories and files from which to remove version information
26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private String directory;
27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public VersionNumberStripper() {
29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		super();
30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public void setDirectory(String dir){directory=dir;}
33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public String getDirectory(){return directory;}
35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  	public void execute() throws BuildException {
37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  		setDirectory(directory);
38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  		stripVersions();
39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll  	}
40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public static void main(String[] args) {
42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		new VersionNumberStripper().execute();
43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private void stripVersions(){
46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		/* rename directories by removing anything from an underscore onward,
47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		 * assuming that anything following the first
48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		 * occurence of an underscore is a version number
49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		 */
50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		File file=new File(directory);
52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		File [] files = file.listFiles();
54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		for (int i=0; i<files.length; i++){
56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			String absolutePath = files[i].getAbsolutePath();
57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			String path = absolutePath.substring(0, absolutePath.length()
58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					- files[i].getName().length());
59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			int underScorePos = files[i].getName().indexOf("_");
61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			int jarExtPos = files[i].getName().indexOf(".jar");
62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			if (underScorePos != -1) {
63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				String targetPath;
64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if (jarExtPos != -1) {
65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					targetPath =path
66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll							+ files[i].getName().substring(0, underScorePos)
67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll							+ ".jar";
68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				} else {
69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					targetPath = path
70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll							+ files[i].getName().substring(0, underScorePos);
71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				files[i].renameTo(new File(targetPath));
73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			}
74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		}
76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll}
78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
79