1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.setup.for3_6;
35
36 import info.magnolia.importexport.filters.RemoveMixversionableFilter;
37 import org.apache.commons.io.FileUtils;
38 import org.apache.commons.io.IOUtils;
39 import org.apache.commons.io.filefilter.AbstractFileFilter;
40 import org.apache.commons.io.filefilter.TrueFileFilter;
41 import org.apache.xml.serialize.XMLSerializer;
42 import org.xml.sax.ContentHandler;
43 import org.xml.sax.InputSource;
44 import org.xml.sax.SAXException;
45 import org.xml.sax.XMLReader;
46 import org.xml.sax.helpers.XMLReaderFactory;
47
48 import java.io.ByteArrayOutputStream;
49 import java.io.File;
50 import java.io.FileInputStream;
51 import java.io.IOException;
52 import java.io.InputStream;
53 import java.io.OutputStream;
54 import java.util.Iterator;
55
56
57
58
59
60
61
62 public class CleanBootstrapFiles{
63
64 public static void main(String[] args) throws SAXException, IOException{
65 for (Iterator iter = findFiles(new File(".")); iter.hasNext();) {
66 File file = (File) iter.next();
67 System.out.println("Processing: " + file);
68 if(cleanFile(file)){
69 System.out.println("Cleaned: " + file);
70 }
71 else{
72 System.out.println("Nothing to clean: " + file);
73 }
74 }
75 }
76
77 public static boolean cleanFile(File file) throws IOException, SAXException {
78 FileInputStream in = new FileInputStream(file);
79 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
80 final boolean cleaned = clean(in, buffer);
81 if(cleaned){
82 IOUtils.closeQuietly(in);
83 FileUtils.writeByteArrayToFile(file, buffer.toByteArray());
84 }
85 else{
86 IOUtils.closeQuietly(in);
87 }
88 return cleaned;
89 }
90
91 public static Iterator findFiles(File root){
92 return FileUtils.iterateFiles(root, new AbstractFileFilter(){
93 public boolean accept(File file) {
94 return file.getName().endsWith(".xml");
95 }
96 }, TrueFileFilter.TRUE);
97 }
98
99 public static boolean clean(InputStream in, OutputStream out) throws IOException, SAXException{
100
101 XMLReader reader = XMLReaderFactory.createXMLReader(org.apache.xerces.parsers.SAXParser.class.getName());
102 XMLReader finalReader = new RemoveMixversionableFilter(reader);
103 ContentHandler handler = new XMLSerializer(out, null);
104 finalReader.setContentHandler(handler);
105 finalReader.parse(new InputSource(in));
106 return true;
107 }
108
109 }