| /* |
| * Copyright 2006 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.doctool; |
| |
| import java.io.File; |
| import java.io.PrintStream; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * Supports two-phase creation of {@link DocTool} objects. |
| */ |
| public class DocToolFactory { |
| |
| private final List classPathEntries = new ArrayList(); |
| |
| private String fileBase; |
| |
| private String fileType; |
| |
| private boolean generateHtml; |
| |
| private final List htmlFileBases = new ArrayList(); |
| |
| private final List imagePathEntries = new ArrayList(); |
| |
| private File outDir; |
| |
| private File overviewFile; |
| |
| private final List packageNameEntries = new ArrayList(); |
| |
| private final List srcPathEntries = new ArrayList(); |
| |
| private String title; |
| |
| public DocToolFactory() { |
| } |
| |
| public void addHtmlFileBase(String filebase) { |
| htmlFileBases.add(filebase); |
| } |
| |
| public void addToClassPath(String path) { |
| classPathEntries.add(new File(path)); |
| } |
| |
| public void addToImagePath(String path) { |
| imagePathEntries.add(new File(path)); |
| } |
| |
| public void addToPackages(String packageName) { |
| this.packageNameEntries.add(packageName); |
| } |
| |
| public void addToSourcePath(String path) { |
| srcPathEntries.add(new File(path)); |
| } |
| |
| public DocTool create(PrintStream out, PrintStream err) { |
| File localOutDir = outDir; |
| if (localOutDir == null) { |
| localOutDir = new File(System.getProperty("user.dir"), "out"); |
| out.println("Using default output directory: " |
| + localOutDir.getAbsolutePath()); |
| } |
| |
| File[] classPath = null; |
| File[] sourcePath = null; |
| String[] packageNames = null; |
| if (fileType != null) { |
| // Generating a doc set implies other settings. |
| // |
| if (fileBase == null) { |
| err.println("A file base must be specified when generating doc"); |
| return null; |
| } |
| // if (overviewFile == null) { |
| // err |
| // .println("An overview file must be specified when generating doc; if |
| // you don't have one, use this:"); |
| // err.println("<html><body>"); |
| // err.println(" " + fileBase + "documentation"); |
| // err.println(" @id " + fileBase + "-doc"); |
| // err.println(" @title Documentation for " + fileBase); |
| // err.println("</body></html>"); |
| // return null; |
| // } |
| classPath = (File[]) classPathEntries.toArray(new File[0]); |
| sourcePath = (File[]) srcPathEntries.toArray(new File[0]); |
| packageNames = (String[]) packageNameEntries.toArray(new String[0]); |
| } |
| |
| if (generateHtml) { |
| if (title == null) { |
| out.println("A title must be specified when generating html"); |
| return null; |
| } |
| |
| if (htmlFileBases.isEmpty()) { |
| out.println("No html filebases were specified"); |
| return null; |
| } |
| } |
| |
| String[] htmlFileBaseArray = (String[]) htmlFileBases.toArray(new String[0]); |
| |
| // Handle -imagepath |
| // |
| List localImagePathEntries = new ArrayList(imagePathEntries); |
| if (localImagePathEntries.isEmpty()) { |
| out.println("No image path specified; using only the output dir"); |
| } |
| |
| localImagePathEntries.add(localOutDir); |
| File[] imagePath = (File[]) imagePathEntries.toArray(new File[0]); |
| |
| return new DocTool(out, err, localOutDir, generateHtml, title, |
| htmlFileBaseArray, fileType, fileBase, overviewFile, sourcePath, |
| classPath, packageNames, imagePath); |
| } |
| |
| public String getFileType() { |
| return fileType; |
| } |
| |
| public void setFileBase(String fileBase) { |
| this.fileBase = fileBase; |
| } |
| |
| public void setFileType(String fileType) { |
| this.fileType = fileType; |
| } |
| |
| public void setGenerateHtml(boolean generateHtml) { |
| this.generateHtml = generateHtml; |
| } |
| |
| public void setOutDir(String outDirPath) { |
| this.outDir = new File(outDirPath); |
| } |
| |
| public void setOverviewFile(String overviewFile) { |
| this.overviewFile = new File(overviewFile); |
| } |
| |
| public void setTitle(String title) { |
| this.title = title; |
| } |
| } |