Home | History | Annotate | Download | only in util
      1 /*
      2  ******************************************************************************
      3  * Copyright (C) 2004, International Business Machines Corporation and        *
      4  * others. All Rights Reserved.                                               *
      5  ******************************************************************************
      6  *
      7  * in shell:  (such as .cldrrc)
      8  *   export CWDEBUG="-DCLDR_DTD_CACHE=/tmp/cldrdtd/"
      9  *   export CWDEFS="-DCLDR_DTD_CACHE_DEBUG=y ${CWDEBUG}"
     10  *
     11  *
     12  * in code:
     13  *   docBuilder.setEntityResolver(new CachingEntityResolver());
     14  *
     15  */
     16 
     17 package org.unicode.cldr.util;
     18 
     19 import java.io.IOException;
     20 import java.io.PrintWriter;
     21 import java.util.Locale;
     22 
     23 import org.unicode.cldr.draft.FileUtilities;
     24 
     25 public class Log {
     26     static private PrintWriter log;
     27 
     28     public static void logln(int test, String message) {
     29         if (log != null && test != 0) log.println(message);
     30     }
     31 
     32     public static void logln(boolean test, String message) {
     33         if (log != null && test) log.println(message);
     34     }
     35 
     36     public static void logln(Object message) {
     37         if (log != null) log.println(message);
     38     }
     39 
     40     /**
     41      * @return Returns the log.
     42      */
     43     public static PrintWriter getLog() {
     44         return log;
     45     }
     46 
     47     /**
     48      * @param newlog
     49      *            The log to set.
     50      */
     51     public static void setLog(PrintWriter newlog) {
     52         log = newlog;
     53     }
     54 
     55     /**
     56      */
     57     public static void close() {
     58         if (log != null) log.close();
     59     }
     60 
     61     public static void setLog(String dir, String file) throws IOException {
     62         log = FileUtilities.openUTF8Writer(dir, file);
     63         log.print('\uFEFF');
     64     }
     65 
     66     public static void setLog(String file) throws IOException {
     67         log = FileUtilities.openUTF8Writer(null, file);
     68         log.print('\uFEFF');
     69     }
     70 
     71     public static void setLogNoBOM(String file) throws IOException {
     72         log = FileUtilities.openUTF8Writer(null, file);
     73     }
     74 
     75     public static void setLogNoBOM(String dir, String file) throws IOException {
     76         log = FileUtilities.openUTF8Writer(dir, file);
     77     }
     78 
     79     public static void println() {
     80         log.println();
     81     }
     82 
     83     public static void println(String string) {
     84         log.println(string);
     85     }
     86 
     87     public static void print(String string) {
     88         log.print(string);
     89     }
     90 
     91     /**
     92      * format a line and print, in 80 character pieces. A bit dumb right now: doesn't handle strings.
     93      *
     94      * @param format
     95      * @param args
     96      */
     97     public static void formatln(String format, Object... args) {
     98         String value = String.format(Locale.ENGLISH, format, args);
     99         if (value.length() <= 80) {
    100             log.println(value);
    101             return;
    102         }
    103         // if it is too long, see if there is a comment
    104         int commentLocation = value.lastIndexOf("//");
    105         String comment = "";
    106         if (commentLocation > 0) {
    107             comment = value.substring(commentLocation);
    108             value = value.substring(0, commentLocation);
    109         }
    110         while (value.length() > 80) {
    111             int lastSpace = value.lastIndexOf(' ', 80);
    112             if (lastSpace == -1) {
    113                 log.println(value);
    114                 break;
    115             }
    116             log.println(value.substring(0, lastSpace));
    117             value = value.substring(lastSpace);
    118         }
    119         if (value.length() + comment.length() < 79) {
    120             log.println(value + " " + comment);
    121             return;
    122         }
    123         log.println(value);
    124         log.println("    " + comment);
    125     }
    126 }
    127