/** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the reusable ccl java library * (http://www.kclee.com/clemens/java/ccl/). * * The Initial Developer of the Original Code is * Chr. Clemens Lee. * Portions created by Chr. Clemens Lee are Copyright (C) 2002 * Chr. Clemens Lee. All Rights Reserved. * * Contributor(s): Chr. Clemens Lee <clemens@kclee.com> * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * **/ package net.sourceforge.cobertura.javancss.ccl; import java.util.Vector; /** * A general purpose class with a variety of support and convenience methods. * <p/> * <p> There are different groups of methods in this class: * <br> * <br><a href="#print(char)">print methods</a> - convenience methods for System.out.print etc. that additionally make sure output is gets flushed immediately. * <br><a href="#isEmpty(java.lang.String)">string methods</a> * <br><a href="#concat(java.util.Vector)">string/vector converter methods</a> * <br><a href="#getConstantObject()">miscellaneous methods</a> * <p/> * <p/> * Some basic but none the less the most used methods by myself are:<br> * - {@link #isEmpty(java.lang.String) isEmpty}<br> * - {@link #stringToLines(java.lang.String) stringToLines}<br> * - {@link #sleep(int) sleep}<br> * <p/> * * @author <a href="http://www.kclee.com/clemens/"> * Chr. Clemens Lee</a> * <<a href="mailto:clemens@kclee.com"> * clemens@kclee.com * </a>> */ /* * cobertura - this file was moved from net.sourceforge.cobertura.javancss package. * * Mark Doliner apparently got the source from somewhere, but it is not available now. */ public class Util { public static final Object CONSTANT_OBJECT = new Object(); /** * This is an utility class, there is (should be) no need * for an instance of this class. */ private Util() { super(); } // ----------------------------------------------------- // debug methods and assertion stuff // ----------------------------------------------------- /** * panicIf <=> not assert. Throws ApplicationException if true. * It's not necessary to catch this exception. */ public static void panicIf(boolean bPanic_) { if (bPanic_) { throw (new RuntimeException()); } } /** * panicIf <=> not assert. Throws ApplicationException if true. * It's not necessary to catch this exception. * * @param sMessage_ The error message for the Exception. */ public static void panicIf(boolean bPanic_, String sMessage_) { if (bPanic_) { throw (new RuntimeException(sMessage_)); } } /** * Tests, if a given String equals null or "". */ public static boolean isEmpty(String sTest_) { if (sTest_ == null || sTest_.equals("")) { return true; } return false; } /** * This function takes a String and separates it into different * lines. The last line does not need to have a separator character. * * @param lines_ The number of lines that should be extracted. * Zero if maximum number of lines is requested. * @param cCutter_ The character that separates pString_ into * different lines * * @return The single lines do not contain the cCutter_ * character at the end. */ private static Vector stringToLines(int lines_, String pString_, char cCutter_) { int maxLines = Integer.MAX_VALUE; if (lines_ > 0) { maxLines = lines_; } Vector vRetVal = new Vector(); if (pString_ == null) { return vRetVal; } int startIndex = 0; for (; maxLines > 0; maxLines--) { int endIndex = pString_.indexOf(cCutter_, startIndex); if (endIndex == -1) { if (startIndex < pString_.length()) { endIndex = pString_.length(); } else { break; } } String sLine = pString_.substring(startIndex, endIndex); vRetVal.addElement(sLine); startIndex = endIndex + 1; } return vRetVal; } /** * This function takes a String and separates it into different * lines. The last line does not need to have a separator character. * * @param cCutter_ The character that separates pString_ into * different lines * * @return The single lines do not contain the cCutter_ character * at the end. */ public static Vector stringToLines(String pString_, char cCutter_) { return stringToLines(0, pString_, cCutter_); } /** * This function takes a String and separates it into different * lines. The last line does not need to have a '\n'. The function * can't handle dos carriage returns. * * @return The single lines do not contain the '\n' character * at the end. */ public static Vector stringToLines(String pString_) { return stringToLines(pString_, '\n'); } /** * Current thread sleeps in seconds. */ private static void sleep(int seconds_) { try { Thread.sleep(seconds_ * 1000); } catch (Exception pException) { } } public static Vector concat(Vector vFirst_, Vector vSecond_) { //cobertura Mark Doliner appears to have simplified this. vFirst_.addAll(vSecond_); return vFirst_; } public static Vector<Object> sort(Vector<Object> input) { //cobertura - apparently Mark Doliner didn't think we need to sort. return input; } // cobertura - gotten from decompile of ccl.jar. public static void debug(Object oMessage_) { if (_bDebug) printlnErr(oMessage_.toString()); } public static Object getConstantObject() { return CONSTANT_OBJECT; } // cobertura - gotten from decompile of ccl.jar. public static void setDebug(boolean bDebug_) { _bDebug = bDebug_; } // cobertura = gotten from decompile of ccl.jar. public static boolean isDebug() { return _bDebug; } // cobertura = gotten from decompile of ccl.jar. public static void println(String pString_) { System.out.println(pString_); System.out.flush(); } // cobertura = gotten from decompile of ccl.jar. public static void printErr(char c_) { System.err.print(c_); System.err.flush(); } // cobertura = gotten from decompile of ccl.jar. public static void printErr(String pString_) { System.err.print(pString_); System.err.flush(); } // cobertura = gotten from decompile of ccl.jar. public static void printlnErr() { printErr('\n'); } // cobertura = gotten from decompile of ccl.jar. public static void printlnErr(String sMessage_) { printErr(sMessage_); printlnErr(); } // cobertura = gotten from decompile of ccl.jar. private static boolean _bDebug = false; }