KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > commandline > Java2HtmlDirectoryConversion


1 package de.java2html.commandline;
2
3 import java.io.File JavaDoc;
4 import java.io.IOException JavaDoc;
5
6 import de.java2html.converter.IJavaSourceConverter;
7 import de.java2html.options.JavaSourceConversionOptions;
8 import de.java2html.util.Ensure;
9 import de.java2html.util.IoUtilities;
10
11 /**
12  * @author Markus Gebhard
13  */

14 public class Java2HtmlDirectoryConversion extends AbstractJava2HtmlConversion {
15
16   private final File JavaDoc sourceDirectory;
17   private final File JavaDoc targetDirectory;
18   private final String JavaDoc fileMask;
19   private final boolean copyUnprocessedFiles;
20
21   public Java2HtmlDirectoryConversion(
22       File JavaDoc sourceDirectory,
23       IJavaSourceConverter converter,
24       File JavaDoc targetDirectory,
25       String JavaDoc fileMask,
26       boolean copyUnprocessedFiles, JavaSourceConversionOptions options) {
27     super(converter, options);
28     Ensure.ensureArgumentNotNull(fileMask);
29     Ensure.ensureArgumentNotNull(sourceDirectory);
30
31     this.sourceDirectory = sourceDirectory;
32     if (targetDirectory == null) {
33       targetDirectory = sourceDirectory;
34     }
35     this.targetDirectory = targetDirectory;
36     this.fileMask = fileMask;
37     this.copyUnprocessedFiles = copyUnprocessedFiles;
38   }
39
40   public void execute() {
41     convertDirectory(sourceDirectory, targetDirectory);
42   }
43
44   /**
45    * Converts the specified source directory into the target directory
46    * including subdirectories using the specified converter.
47    *
48    * @param sourceDirectory may not be <code>null</code>
49    * @param targetDirectory may not be <code>null</code>
50    */

51   private void convertDirectory(File JavaDoc sourceDirectory, File JavaDoc targetDirectory) {
52     File JavaDoc[] files = sourceDirectory.listFiles();
53     for (int i = 0; i < files.length; i++) {
54       File JavaDoc file = files[i];
55       if (file.isDirectory()) {
56         File JavaDoc newTargetDirectory = null;
57         if (sourceDirectory.equals(targetDirectory)) {
58           newTargetDirectory = file;
59         }
60         else {
61           newTargetDirectory = new File JavaDoc(targetDirectory, file.getAbsolutePath().substring(
62               sourceDirectory.getAbsolutePath().length()));
63         }
64         convertDirectory(file, newTargetDirectory);
65       }
66       else {
67         if (matches(file)) {
68           File JavaDoc targetFile = null;
69           if (sourceDirectory.equals(targetDirectory)) {
70             targetFile = file;
71           }
72           else {
73             targetFile = new File JavaDoc(targetDirectory, file.getAbsolutePath().substring(
74                 sourceDirectory.getAbsolutePath().length()));
75           }
76           targetFile = IoUtilities.exchangeFileExtension(targetFile, getConverter()
77               .getMetaData().getDefaultFileExtension());
78           convertFile(file, targetFile);
79         }
80         else {
81           if (copyUnprocessedFiles) {
82             if (!sourceDirectory.equals(targetDirectory)) {
83               File JavaDoc targetFile = new File JavaDoc(targetDirectory, file.getAbsolutePath().substring(
84                   sourceDirectory.getAbsolutePath().length()));
85               try {
86                 IoUtilities.copy(file, targetFile);
87               }
88               catch (IOException JavaDoc e) {
89                 System.err.println("ERROR: Could cot copy file to target: "
90                     + file.getAbsolutePath());
91               }
92             }
93           }
94         }
95       }
96     }
97   }
98
99   /**
100    * Return true if the mask matches the target
101    *
102    * e.g. valid mask is *.java, *.ext , etc...
103    */

104   private boolean matches(File JavaDoc file) {
105     return file.getAbsolutePath().toLowerCase().endsWith(fileMask.substring(1));
106   }
107 }
Popular Tags