001: /* ====================================================================
002: * The JRefactory License, Version 1.0
003: *
004: * Copyright (c) 2001 JRefactory. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * 3. The end-user documentation included with the redistribution,
019: * if any, must include the following acknowledgment:
020: * "This product includes software developed by the
021: * JRefactory (http://www.sourceforge.org/projects/jrefactory)."
022: * Alternately, this acknowledgment may appear in the software itself,
023: * if and wherever such third-party acknowledgments normally appear.
024: *
025: * 4. The names "JRefactory" must not be used to endorse or promote
026: * products derived from this software without prior written
027: * permission. For written permission, please contact seguin@acm.org.
028: *
029: * 5. Products derived from this software may not be called "JRefactory",
030: * nor may "JRefactory" appear in their name, without prior written
031: * permission of Chris Seguin.
032: *
033: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
034: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
035: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
036: * DISCLAIMED. IN NO EVENT SHALL THE CHRIS SEGUIN OR
037: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
038: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
039: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
040: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
041: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
042: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
043: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
044: * SUCH DAMAGE.
045: * ====================================================================
046: *
047: * This software consists of voluntary contributions made by many
048: * individuals on behalf of JRefactory. For more information on
049: * JRefactory, please see
050: * <http://www.sourceforge.org/projects/jrefactory>.
051: */
052: package org.acm.seguin.tools.stub;
053:
054: import java.awt.Frame;
055: import java.io.File;
056: import org.acm.seguin.tools.RefactoryInstaller;
057:
058: /**
059: * Generates a stub set from a file or a directory
060: *
061: *@author Chris Seguin
062: *@created September 12, 2001
063: */
064: public class StubGenerator implements Runnable {
065: private String filename;
066: private String key;
067: private File file;
068: private Frame owner;
069:
070: /**
071: * Constructor for the StubGenerator object
072: *
073: *@param name The name of the zip file
074: *@param stubKey The key associated with this stub
075: */
076: public StubGenerator(Frame owner, String name, String stubKey) {
077: this .owner = owner;
078: filename = name;
079: key = stubKey;
080: file = null;
081: }
082:
083: /**
084: * Constructor for the StubGenerator object
085: *
086: *@param name The name of the zip file
087: *@param output Description of Parameter
088: */
089: public StubGenerator(Frame owner, String name, File output) {
090: this .owner = owner;
091: filename = name;
092: key = null;
093: file = output;
094: }
095:
096: /**
097: * Main processing method for the StubGenerator object
098: */
099: public void run() {
100: synchronized (StubGenerator.class) {
101: File sourceFile = new File(filename);
102: if (sourceFile.isDirectory()) {
103: StubGenTraversal sgt = new StubGenTraversal(owner,
104: filename, key, file);
105: new Thread(sgt).start();
106: //sgt.run();
107: } else {
108: StubGenFromZip sgt = new StubGenFromZip(owner,
109: filename, key, file);
110: new Thread(sgt).start();
111: //sgt.run();
112: }
113: }
114: }
115:
116: /**
117: * Waits until it is appropriate to allow the stub files to be loaded
118: */
119: public static synchronized void waitForLoaded() {
120: }
121:
122: /**
123: * The main program
124: *
125: *@param args the command line arguments
126: */
127: public static void main(String[] args) {
128: // Make sure everything is installed properly
129: (new RefactoryInstaller(false)).run();
130:
131: if (args.length != 2) {
132: System.out
133: .println("Syntax: java org.acm.seguin.tools.stub.StubGenerator <name> <file> ");
134: System.out
135: .println(" OR java org.acm.seguin.tools.stub.StubGenerator <name> <dir> ");
136: System.out
137: .println(" where <name> is the name of the stub file to generate");
138: System.out
139: .println(" where <file> is the jar or zip file");
140: System.out
141: .println(" where <dir> is the directory for one or more source files source file");
142: return;
143: }
144: generateStubs(null, args[0], args[1]);
145:
146: // Exit
147: System.exit(0);
148: }
149:
150: /**
151: * Generate a stub for the current file or directory
152: *
153: *@param filename the name of the directory
154: *@param stubname the name of the stub
155: */
156: public static void generateStubs(Frame owner, String stubname,
157: String filename) {
158: (new StubGenerator(owner, filename, stubname)).run();
159: }
160: }
|