KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > batik > apps > svgpp > Main


1 /*
2
3    Copyright 1999-2003 The Apache Software Foundation
4
5    Licensed under the Apache License, Version 2.0 (the "License");
6    you may not use this file except in compliance with the License.
7    You may obtain a copy of the License at
8
9        http://www.apache.org/licenses/LICENSE-2.0
10
11    Unless required by applicable law or agreed to in writing, software
12    distributed under the License is distributed on an "AS IS" BASIS,
13    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14    See the License for the specific language governing permissions and
15    limitations under the License.
16
17 */

18
19 package org.apache.batik.apps.svgpp;
20
21 import java.util.HashMap JavaDoc;
22 import java.util.Iterator JavaDoc;
23 import java.util.Map JavaDoc;
24
25 import org.apache.batik.i18n.LocalizableSupport;
26 import org.apache.batik.transcoder.Transcoder;
27 import org.apache.batik.transcoder.TranscoderInput;
28 import org.apache.batik.transcoder.TranscoderOutput;
29 import org.apache.batik.transcoder.svg2svg.SVGTranscoder;
30
31 /**
32  * This class is the main class of the svgpp application.
33  * <p>
34  * svgpp is a pretty-printer for SVG source files.
35  *
36  * @author <a HREF="mailto:stephane@hillion.org">Stephane Hillion</a>
37  * @version $Id: Main.java,v 1.8 2004/10/30 18:38:04 deweese Exp $
38  */

39 public class Main {
40
41     /**
42      * The application main method.
43      * @param args The command-line arguments.
44      */

45     public static void main(String JavaDoc[] args) {
46         new Main(args).run();
47     }
48
49     /**
50      * The default resource bundle base name.
51      */

52     public final static String JavaDoc BUNDLE_CLASSNAME =
53     "org.apache.batik.apps.svgpp.resources.Messages";
54
55     /**
56      * The localizable support.
57      */

58     protected static LocalizableSupport localizableSupport =
59         new LocalizableSupport(BUNDLE_CLASSNAME, Main.class.getClassLoader());
60
61     /**
62      * The arguments.
63      */

64     protected String JavaDoc[] arguments;
65
66     /**
67      * The current index.
68      */

69     protected int index;
70
71     /**
72      * The option handlers.
73      */

74     protected Map JavaDoc handlers = new HashMap JavaDoc();
75     {
76         handlers.put("-doctype", new DoctypeHandler());
77         handlers.put("-doc-width", new DocWidthHandler());
78         handlers.put("-newline", new NewlineHandler());
79         handlers.put("-public-id", new PublicIdHandler());
80         handlers.put("-no-format", new NoFormatHandler());
81         handlers.put("-system-id", new SystemIdHandler());
82         handlers.put("-tab-width", new TabWidthHandler());
83         handlers.put("-xml-decl", new XMLDeclHandler());
84     }
85
86     /**
87      * The transcoder.
88      */

89     protected Transcoder transcoder = new SVGTranscoder();
90
91     /**
92      * Initializes the application.
93      * @param args The command-line arguments.
94      */

95     public Main(String JavaDoc[] args) {
96         arguments = args;
97     }
98
99     /**
100      * Runs the pretty printer.
101      */

102     public void run() {
103         if (arguments.length == 0) {
104             printUsage();
105             return;
106         }
107         try {
108             for (;;) {
109                 OptionHandler oh = (OptionHandler)handlers.get(arguments[index]);
110                 if (oh == null) {
111                     break;
112                 }
113                 oh.handleOption();
114             }
115             TranscoderInput in;
116             in = new TranscoderInput(new java.io.FileReader JavaDoc(arguments[index++]));
117             TranscoderOutput out;
118             if (index < arguments.length) {
119                 out = new TranscoderOutput(new java.io.FileWriter JavaDoc(arguments[index]));
120             } else {
121                 out = new TranscoderOutput(new java.io.OutputStreamWriter JavaDoc(System.out));
122             }
123             transcoder.transcode(in, out);
124         } catch (Exception JavaDoc e) {
125             e.printStackTrace();
126             printUsage();
127         }
128     }
129
130     /**
131      * Prints the command usage.
132      */

133     protected void printUsage() {
134         printHeader();
135         System.out.println(localizableSupport.formatMessage("syntax", null));
136         System.out.println();
137         System.out.println(localizableSupport.formatMessage("options", null));
138         Iterator JavaDoc it = handlers.keySet().iterator();
139         while (it.hasNext()) {
140             String JavaDoc s = (String JavaDoc)it.next();
141             System.out.println(((OptionHandler)handlers.get(s)).getDescription());
142         }
143     }
144
145     /**
146      * Prints the command header.
147      */

148     protected void printHeader() {
149         System.out.println(localizableSupport.formatMessage("header", null));
150     }
151
152     /**
153      * This interface represents an option handler.
154      */

155     protected interface OptionHandler {
156         /**
157          * Handles the current option.
158          */

159         void handleOption();
160
161         /**
162          * Returns the option description.
163          */

164         String JavaDoc getDescription();
165     }
166
167     /**
168      * To handle the '-doctype' option.
169      */

170     protected class DoctypeHandler implements OptionHandler {
171         protected final Map JavaDoc values = new HashMap JavaDoc(6);
172         {
173             values.put("remove", SVGTranscoder.VALUE_DOCTYPE_REMOVE);
174             values.put("change", SVGTranscoder.VALUE_DOCTYPE_CHANGE);
175         }
176         public void handleOption() {
177             index++;
178             if (index >= arguments.length) {
179                 throw new IllegalArgumentException JavaDoc();
180             }
181             Object JavaDoc val = values.get(arguments[index++]);
182             if (val == null) {
183                 throw new IllegalArgumentException JavaDoc();
184             }
185             transcoder.addTranscodingHint(SVGTranscoder.KEY_DOCTYPE, val);
186         }
187
188         public String JavaDoc getDescription() {
189             return localizableSupport.formatMessage("doctype.description", null);
190         }
191     }
192
193     /**
194      * To handle the '-newline' option.
195      */

196     protected class NewlineHandler implements OptionHandler {
197         protected final Map JavaDoc values = new HashMap JavaDoc(6);
198         {
199             values.put("cr", SVGTranscoder.VALUE_NEWLINE_CR);
200             values.put("cr-lf", SVGTranscoder.VALUE_NEWLINE_CR_LF);
201             values.put("lf", SVGTranscoder.VALUE_NEWLINE_LF);
202         }
203         public void handleOption() {
204             index++;
205             if (index >= arguments.length) {
206                 throw new IllegalArgumentException JavaDoc();
207             }
208             Object JavaDoc val = values.get(arguments[index++]);
209             if (val == null) {
210                 throw new IllegalArgumentException JavaDoc();
211             }
212             transcoder.addTranscodingHint(SVGTranscoder.KEY_NEWLINE, val);
213         }
214
215         public String JavaDoc getDescription() {
216             return localizableSupport.formatMessage("newline.description", null);
217         }
218     }
219
220     /**
221      * To handle the '-no-format' option.
222      */

223     protected class NoFormatHandler implements OptionHandler {
224         public void handleOption() {
225             index++;
226             transcoder.addTranscodingHint(SVGTranscoder.KEY_FORMAT, Boolean.FALSE);
227         }
228
229         public String JavaDoc getDescription() {
230             return localizableSupport.formatMessage("no-format.description", null);
231         }
232     }
233
234     /**
235      * To handle the '-public-id' option.
236      */

237     protected class PublicIdHandler implements OptionHandler {
238         public void handleOption() {
239             index++;
240             if (index >= arguments.length) {
241                 throw new IllegalArgumentException JavaDoc();
242             }
243             String JavaDoc s = arguments[index++];
244             transcoder.addTranscodingHint(SVGTranscoder.KEY_PUBLIC_ID, s);
245         }
246
247         public String JavaDoc getDescription() {
248             return localizableSupport.formatMessage("public-id.description", null);
249         }
250     }
251
252     /**
253      * To handle the '-system-id' option.
254      */

255     protected class SystemIdHandler implements OptionHandler {
256         public void handleOption() {
257             index++;
258             if (index >= arguments.length) {
259                 throw new IllegalArgumentException JavaDoc();
260             }
261             String JavaDoc s = arguments[index++];
262             transcoder.addTranscodingHint(SVGTranscoder.KEY_SYSTEM_ID, s);
263         }
264
265         public String JavaDoc getDescription() {
266             return localizableSupport.formatMessage("system-id.description", null);
267         }
268     }
269
270     /**
271      * To handle the '-xml-decl' option.
272      */

273     protected class XMLDeclHandler implements OptionHandler {
274         public void handleOption() {
275             index++;
276             if (index >= arguments.length) {
277                 throw new IllegalArgumentException JavaDoc();
278             }
279             String JavaDoc s = arguments[index++];
280             transcoder.addTranscodingHint(SVGTranscoder.KEY_XML_DECLARATION, s);
281         }
282
283         public String JavaDoc getDescription() {
284             return localizableSupport.formatMessage("xml-decl.description", null);
285         }
286     }
287
288     /**
289      * To handle the '-tab-width' option.
290      */

291     protected class TabWidthHandler implements OptionHandler {
292         public void handleOption() {
293             index++;
294             if (index >= arguments.length) {
295                 throw new IllegalArgumentException JavaDoc();
296             }
297             transcoder.addTranscodingHint(SVGTranscoder.KEY_TABULATION_WIDTH,
298                                           new Integer JavaDoc(arguments[index++]));
299         }
300
301         public String JavaDoc getDescription() {
302             return localizableSupport.formatMessage("tab-width.description", null);
303         }
304     }
305
306     /**
307      * To handle the '-doc-width' option.
308      */

309     protected class DocWidthHandler implements OptionHandler {
310         public void handleOption() {
311             index++;
312             if (index >= arguments.length) {
313                 throw new IllegalArgumentException JavaDoc();
314             }
315             transcoder.addTranscodingHint(SVGTranscoder.KEY_DOCUMENT_WIDTH,
316                                           new Integer JavaDoc(arguments[index++]));
317         }
318
319         public String JavaDoc getDescription() {
320             return localizableSupport.formatMessage("doc-width.description", null);
321         }
322     }
323 }
324
Popular Tags