--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/corba/src/classes/build/tools/logutil/IndentingPrintWriter.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.logutil;
+
+import java.io.PrintWriter ;
+import java.io.Writer ;
+import java.io.OutputStream ;
+import java.io.BufferedWriter ;
+import java.io.OutputStreamWriter ;
+import java.util.StringTokenizer ;
+
+public class IndentingPrintWriter extends PrintWriter {
+ private int level = 0 ;
+ private int indentWidth = 4 ;
+ private String indentString = "" ;
+
+ public void printMsg( String msg, Object... data )
+ {
+ // System.out.println( "printMsg called with msg=" + msg + " data=" + data ) ;
+ StringTokenizer st = new StringTokenizer( msg, "@", true ) ;
+ StringBuffer result = new StringBuffer() ;
+ String token = null ;
+ int pos = 0;
+
+ while (st.hasMoreTokens()) {
+ token = st.nextToken() ;
+ if (token.equals("@")) {
+ if (pos < data.length) {
+ result.append( data[pos] );
+ ++pos;
+ } else {
+ throw new Error( "List too short for message" ) ;
+ }
+ } else {
+ result.append( token ) ;
+ }
+ }
+
+ // System.out.println( "Printing result " + result + " to file" ) ;
+ print( result ) ;
+ println() ;
+ }
+
+ public IndentingPrintWriter (Writer out) {
+ super( out, true ) ;
+ // System.out.println( "Constructing a new IndentingPrintWriter with Writer " + out ) ;
+ }
+
+ public IndentingPrintWriter(Writer out, boolean autoFlush) {
+ super( out, autoFlush ) ;
+ // System.out.println( "Constructing a new IndentingPrintWriter with Writer " + out ) ;
+ }
+
+ public IndentingPrintWriter(OutputStream out) {
+ super(out, true);
+ // System.out.println( "Constructing a new IndentingPrintWriter with OutputStream " + out ) ;
+ }
+
+ public IndentingPrintWriter(OutputStream out, boolean autoFlush) {
+ super(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);
+ // System.out.println( "Constructing a new IndentingPrintWriter with OutputStream " + out ) ;
+ }
+
+ public void setIndentWidth( int indentWidth )
+ {
+ this.indentWidth = indentWidth ;
+ updateIndentString() ;
+ }
+
+ public void indent()
+ {
+ level++ ;
+ updateIndentString() ;
+ }
+
+ public void undent()
+ {
+ if (level > 0) {
+ level-- ;
+ updateIndentString() ;
+ }
+ }
+
+ private void updateIndentString()
+ {
+ int size = level * indentWidth ;
+ StringBuffer sbuf = new StringBuffer( size ) ;
+ for (int ctr = 0; ctr<size; ctr++ )
+ sbuf.append( " " ) ;
+ indentString = sbuf.toString() ;
+ }
+
+ // overridden from PrintWriter
+ public void println()
+ {
+ super.println() ;
+
+ print( indentString ) ;
+ }
+}