blob: 4eff29328a16326312a27b1c1feb22b40054b3d1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.usergrid.utils;
import java.text.DecimalFormat;
import java.util.Arrays;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.usergrid.utils.ConversionUtils.string;
public class StringUtils extends org.apache.commons.lang.StringUtils {
private static final Logger logger = LoggerFactory.getLogger( StringUtils.class );
public static Object lower( Object obj ) {
if ( !( obj instanceof String ) ) {
return obj;
}
return ( ( String ) obj ).toLowerCase();
}
public static String stringOrSubstringAfterLast( String str, char c ) {
if ( str == null ) {
return null;
}
int i = str.lastIndexOf( c );
if ( i != -1 ) {
return str.substring( i + 1 );
}
return str;
}
public static String stringOrSubstringBeforeLast( String str, char c ) {
if ( str == null ) {
return null;
}
int i = str.lastIndexOf( c );
if ( i != -1 ) {
return str.substring( 0, i );
}
return str;
}
public static String stringOrSubstringBeforeFirst( String str, char c ) {
if ( str == null ) {
return null;
}
int i = str.indexOf( c );
if ( i != -1 ) {
return str.substring( 0, i );
}
return str;
}
public static String stringOrSubstringAfterFirst( String str, char c ) {
if ( str == null ) {
return null;
}
int i = str.indexOf( c );
if ( i != -1 ) {
return str.substring( i + 1 );
}
return str;
}
public static String compactWhitespace( String str ) {
if ( str == null ) {
return null;
}
boolean prevWS = false;
StringBuilder builder = new StringBuilder();
for ( int i = 0; i < str.length(); i++ ) {
char c = str.charAt( i );
if ( Character.isWhitespace( c ) ) {
if ( !prevWS ) {
builder.append( ' ' );
}
prevWS = true;
}
else {
prevWS = false;
builder.append( c );
}
}
return builder.toString().trim();
}
/** @return new string with replace applied */
public static String replaceAll( String source, String find, String replace ) {
if ( source == null ) {
return null;
}
while ( true ) {
String old = source;
source = source.replaceAll( find, replace );
if ( source.equals( old ) ) {
return source;
}
}
}
public static String toString( Object obj ) {
return string( obj );
}
public static String toStringFormat( Object obj, String format ) {
if ( obj != null ) {
if ( format != null ) {
if ( obj.getClass().isArray() ) {
return String.format( format, Arrays.toString( ( Object[] ) obj ) );
}
return String.format( format, string( obj ) );
}
else {
return string( obj );
}
}
return "";
}
public static boolean isString( Object obj ) {
return obj instanceof String;
}
public static boolean isStringOrNull( Object obj ) {
if ( obj == null ) {
return true;
}
return obj instanceof String;
}
public static Boolean isNullOrEmpty(String s) {
return (s == null || s.equals(""));
}
public static String readClasspathFileAsString( String filePath ) {
try {
return IOUtils.toString( StringUtils.class.getResourceAsStream( filePath ) );
}
catch ( Exception e ) {
logger.error( "Error getting file from classpath: {}", filePath, e );
}
return null;
}
public static String readableByteSize(long size) {
if(size <= 0) return "0";
final String[] units = new String[] { "B", "kB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) + " " + units[digitGroups];
}
}