1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package com.sun.star.filter.config.tools.merge;
25 
26 //_______________________________________________
27 
28 import java.lang.*;
29 import java.util.*;
30 import java.io.*;
31 import com.sun.star.filter.config.tools.utils.*;
32 
33 //_______________________________________________
34 
35 /**
36  *  Its a simple command line tool, which can merge different XML fragments
37  *  together. Such fragments must exist as files on disk, will be moved into
38  *  one file together on disk.
39  *
40  *
41  */
42 public class FCFGMerge
43 {
44     //___________________________________________
45     // const
46 
47     private static final java.lang.String CFGFILE = "com/sun/star/filter/config/tools/merge/FCFGMerge.cfg";
48     private static final java.lang.String PROP_LOGLEVEL = "loglevel";
49 
50     //___________________________________________
51     // main
52 
main(java.lang.String[] sCmdLine)53     public static void main(java.lang.String[] sCmdLine)
54     {
55         FCFGMerge.printCopyright();
56 
57         // create log object in default mode "WARNINGS"
58         // If a command line parameter indicates another
59         // level - change it!
60         Logger aLog = new Logger();
61 
62         try
63         {
64             // merge config file and overwrite properties
65             // via command line
66             ConfigHelper aCfg = null;
67             aCfg = new ConfigHelper(CFGFILE, sCmdLine);
68 
69             // update log level
70             int nLogLevel = aCfg.getInt(PROP_LOGLEVEL, Logger.LEVEL_WARNINGS);
71             aLog = new Logger(nLogLevel);
72 
73             // help requested?
74             if (aCfg.isHelp())
75             {
76                 FCFGMerge.printHelp();
77                 System.exit(-1);
78             }
79 
80             // create new merge object and start operation
81             Merger aMerger = new Merger(aCfg, aLog);
82             aMerger.merge();
83         }
84         catch(java.lang.Throwable ex)
85         {
86             aLog.setException(ex);
87             System.exit(-1);
88         }
89 
90         System.exit(0);
91     }
92 
93     //___________________________________________
94 
95     /** prints out a copyright message on stdout.
96      */
printCopyright()97     private static void printCopyright()
98     {
99         java.lang.StringBuffer sOut = new java.lang.StringBuffer(256);
100         sOut.append("FCFGMerge\n");
101         sOut.append("Copyright: 2003 by Sun Microsystems, Inc.\n");
102         sOut.append("All Rights Reserved.\n");
103         System.out.println(sOut.toString());
104     }
105 
106     //___________________________________________
107 
108     /** prints out a help message on stdout.
109      */
printHelp()110     private static void printHelp()
111     {
112         java.lang.StringBuffer sOut = new java.lang.StringBuffer(256);
113         sOut.append("____________________________________________________________\n");
114         sOut.append("usage: FCFGMerge cfg=<file name>\n"                            );
115         sOut.append("parameters:\n"                                                 );
116         sOut.append("\tcfg=<file name>\n"                                           );
117         sOut.append("\t\tmust point to a system file, which contains\n"             );
118         sOut.append("\t\tall necessary configuration data for the merge process.\n");
119         sOut.append("\n\tFurther cou can specify every parameter allowed in the\n"  );
120         sOut.append("\n\tconfig file as command line parameter too, to overwrite\n" );
121         sOut.append("\n\tthe value from the file.\n"                                );
122         System.out.println(sOut.toString());
123     }
124 }
125