1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/*******************************************************************************
2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2009 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 java.io.BufferedReader;
14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.BufferedWriter;
15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileReader;
16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileWriter;
17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.IOException;
18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.ArrayList;
19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Iterator;
20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.BuildException;
22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.Task;
23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic class GenerateExcludeListTask extends Task {
25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private ArrayList a = new ArrayList();
27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private String mapFile;
28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private String outputFile;
29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public GenerateExcludeListTask() {
31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		super();
32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public static void main(String[] args) {
35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		GenerateExcludeListTask parser = new GenerateExcludeListTask();
36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		parser.setMapFile("c:\\temp\\orbit.map");
37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		parser.setOutputFile("c:\\temp\\orbit.map.new");
38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		parser.execute();
39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public String getOutputFile() {
42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		return outputFile;
43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public void setOutputFile(String outputFile) {
46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		this.outputFile = outputFile;
47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public String getMapFile() {
50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		return mapFile;
51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public void setMapFile(String mapFile) {
54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		this.mapFile = mapFile;
55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	public void execute() throws BuildException {
58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		readMap();
59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		writeProp();
60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	// for old map file format //
63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	/* private void readMap() {
65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		try {
66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			BufferedReader r = new BufferedReader(new FileReader(mapFile));
67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			String line;
68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			while ((line = r.readLine()) != null) {
69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int start = line.lastIndexOf('/');
70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int lastcomma = line.lastIndexOf(',');
71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int end = line.length();
72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if (lastcomma > start) {
73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					end = lastcomma;
74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int lastzip = line.lastIndexOf(".zip");
76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if (lastzip > start) {
77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					String rstring = line.substring(0, lastzip);
78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					line = rstring + ".jar";
79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if ((start < end) && (start > 0)) {
81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					String substr = line.substring(start + 1, end);
82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					a.add(substr);
83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			}
85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			r.close();
86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		} catch (IOException e) {
87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			e.printStackTrace();
88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		}
89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	} */
90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private void readMap() {
92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		try {
93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			BufferedReader r = new BufferedReader(new FileReader(mapFile));
94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			String line;
95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			while ((line = r.readLine()) != null) {
96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int start = line.indexOf("plugin@") + 7;
97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int end = line.indexOf(",");
98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				String plugin = "";
99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if ((start > 0) && (end > 0)) {
100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					plugin = line.substring(start, end);
101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				String version = "";
103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int startv = line.indexOf("version=") + 8;
104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				int endv = line.indexOf(",", startv);
105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if ((startv > 0) && (endv > 0)) {
106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					version = line.substring(startv, endv);
107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if ((version != "") && (plugin != "")) {
109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				String l = plugin + "_" + version + ".jar";
110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				a.add(l);
111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			}
113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			r.close();
114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		} catch (IOException e) {
115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			e.printStackTrace();
116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		}
117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	private void writeProp() {
120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		try {
122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			BufferedWriter out = new BufferedWriter(new FileWriter(outputFile));
123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			for (Iterator iterator = a.iterator(); iterator.hasNext();) {
124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				String s = iterator.next().toString();
125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				if (iterator.hasNext()) {
126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					out.write("plugins/" + s + ",");
127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				} else {
128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll					out.write("plugins/" + s);
129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll				}
130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			}
131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			out.close();
132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		} catch (IOException e) {
133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll			e.printStackTrace();
134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll		}
135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll	}
136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll}
138