Package com.eviware.soapui.support

Source Code of com.eviware.soapui.support.StringUtils

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI 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 Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.support;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;

import com.eviware.soapui.support.types.StringList;

public class StringUtils
{
  public static final String NEWLINE = System.getProperty( "line.separator" );
  public static final char DEFAULT_FILENAME_WHITESPACE_CHAR = '-';

  public static String unquote( String str )
  {
    int length = str == null ? -1 : str.length();
    if( str == null || length == 0 )
      return str;

    if( length > 1 && str.charAt( 0 ) == '\"' && str.charAt( length - 1 ) == '\"' )
    {
      str = str.substring( 1, length - 1 );
    }

    return str;
  }

  public static boolean isNullOrEmpty( String str )
  {
    return str == null || str.length() == 0 || str.trim().length() == 0;
  }

  public static int parseInt( String str, int defaultValue )
  {
    if( isNullOrEmpty( str ) )
      return defaultValue;

    try
    {
      return Integer.parseInt( str );
    }
    catch( NumberFormatException e )
    {
      return defaultValue;
    }
  }

  public static List<String> splitLines( String string )
  {
    try
    {
      ArrayList<String> list = new ArrayList<String>();

      LineNumberReader reader = new LineNumberReader( new StringReader( string ) );
      String s;
      while( ( s = reader.readLine() ) != null )
      {
        list.add( s );
      }
      return list;
    }
    catch( IOException e )
    {
      // I don't think this can really happen with a StringReader.
      throw new RuntimeException( e );
    }
  }

  public static String normalizeSpace( String str )
  {
    if( !isNullOrEmpty( str ) )
    {
      StringTokenizer st = new StringTokenizer( str );
      if( st.hasMoreTokens() )
      {

        StringBuffer sb = new StringBuffer( str.length() );
        while( true )
        {
          sb.append( st.nextToken() );
          if( st.hasMoreTokens() )
          {
            sb.append( ' ' );
          }
          else
          {
            break;
          }
        }
        return sb.toString();
      }
      else
      {
        return "";
      }
    }
    else
    {
      return str;
    }
  }

  public static boolean hasContent( String str )
  {
    return str != null && str.trim().length() > 0;
  }

  public static String stripStartAndEnd( String s, String start, String end )
  {
    if( s.startsWith( start ) && s.endsWith( end ) )
      return s.substring( start.length(), s.length() - end.length() );
    else
      return s;
  }

  public static Writer createSeparatedRow( Writer writer, StringList values, char separator, char quote )
      throws IOException
  {
    for( int c = 0; c < values.size(); c++ )
    {
      String value = values.get( c );

      if( c > 0 )
        writer.append( separator );

      if( quote > 0 )
      {
        writer.append( quote );

        if( value != null )
        {
          for( int i = 0; i < value.length(); i++ )
          {
            char ch = value.charAt( i );

            if( ch == quote )
              writer.append( '\\' );
            else if( ch == '\\' )
              writer.append( '\\' );

            writer.append( ch );
          }
        }

        writer.append( quote );
      }
      else if( value != null )
      {
        writer.append( value );
      }
    }

    return writer;
  }

  public static StringList readSeparatedRow( String row, char separator, char quote )
  {
    StringList result = new StringList();

    while( row != null && row.length() > 0 )
    {
      if( row.startsWith( String.valueOf( quote ) ) )
      {
        StringBuffer buf = new StringBuffer();
        char last = row.charAt( 0 );
        int ix = 1;
        while( ix < row.length() )
        {
          char ch = row.charAt( ix );
          if( ch == quote && last != '\\' )
          {
            result.add( buf.toString() );
            row = row.length() > ix + 1 ? row.substring( ix + 1 ) : null;
            if( row != null && row.length() > 1 && row.charAt( 0 ) == separator )
            {
              row = row.substring( 1 );
              ix = -1;
            }
            break;
          }
          else if( ch != '\\' || last == '\\' )
          {
            buf.append( ch );
          }

          last = ch;
          ix++ ;
        }

        if( row != null && ix == row.length() )
        {
          result.add( row );
          row = null;
        }
      }
      else
      {
        int ix = row.indexOf( separator );
        if( ix == -1 )
        {
          result.add( row );
          row = null;
        }
        else
        {
          result.add( row.substring( 0, ix ) );
          row = row.substring( ix + 1 );
        }
      }
    }

    return result;
  }

  /**
   * replaces only white spaces from file name
   */
  public static String createFileName( String str, char whitespaceChar )
  {
    StringBuffer result = new StringBuffer();

    for( int c = 0; c < str.length(); c++ )
    {
      char ch = str.charAt( c );

      if( Character.isWhitespace( ch ) && whitespaceChar != 0 )
        result.append( whitespaceChar );
      else if( Character.isLetterOrDigit( ch ) )
        result.append( ch );
    }

    return result.toString();
  }

  /**
   * replaces only white spaces from file name, uses the
   * DEFAULT_FILENAME_WHITESPACE_CHAR
   */

  public static String createFileName( String str )
  {
    return createFileName( str, DEFAULT_FILENAME_WHITESPACE_CHAR );
  }

  /**
   * replaces all non letter and non digit characte from file name
   *
   * @param str
   * @param replace
   * @return
   */
  public static String createFileName2( String str, char replace )
  {
    StringBuffer result = new StringBuffer();

    for( int c = 0; c < str.length(); c++ )
    {
      char ch = str.charAt( c );

      if( Character.isLetterOrDigit( ch ) )
        result.append( ch );
      else
        result.append( replace );
    }

    return result.toString();
  }

  public static String createXmlName( String str )
  {
    StringBuffer result = new StringBuffer();
    boolean skipped = false;
    boolean numbersOnly = true;

    for( int c = 0; c < str.length(); c++ )
    {
      char ch = str.charAt( c );

      if( Character.isLetter( ch ) || ch == '_' || ch == '-' || ch == '.' )
      {
        if( skipped )
          result.append( Character.toUpperCase( ch ) );
        else
          result.append( ch );
        numbersOnly = false;
        skipped = false;
      }
      else if( Character.isDigit( ch ) )
      {
        result.append( ch );
        skipped = false;
      }
      else
      {
        skipped = true;
      }
    }

    str = result.toString();
    if( numbersOnly && str.length() > 0 )
      str = "_" + str;

    return str;
  }

  public static String[] merge( String[] incomingNames, String string )
  {
    StringList result = new StringList( incomingNames );
    result.add( string );
    return result.toStringArray();
  }

  public static String quote( String str )
  {
    if( str == null )
      return str;

    if( str.length() < 2 || !str.startsWith( "\"" ) || !str.endsWith( "\"" ) )
      str = "\"" + str + "\"";

    return str;
  }

  public static String join( String[] array, String separator )
  {
    StringBuffer buf = new StringBuffer();
    for( int i = 0; i < array.length; i++ )
    {
      if( i > 0 )
        buf.append( separator );
      buf.append( array[i] );
    }
    return buf.toString();
  }

  public static String toHtml( String string )
  {
    return toHtml( string, 0 );
  }

  public static String toHtml( String string, int maxSize )
  {
    if( StringUtils.isNullOrEmpty( string ) )
      return "<html><body></body></html>";

    BufferedReader st = new BufferedReader( new StringReader( string ) );
    StringBuffer buf = new StringBuffer( "<html><body>" );

    String str = null;

    try
    {
      str = st.readLine();

      while( str != null && ( maxSize == 0 || ( buf.length() + str.length() ) < maxSize ) )
      {
        if( str.equalsIgnoreCase( "<br/>" ) )
        {
          str = "<br>";
        }

        buf.append( str );

        if( !str.equalsIgnoreCase( "<br>" ) )
        {
          buf.append( "<br>" );
        }

        str = st.readLine();
      }
    }
    catch( IOException e )
    {
      e.printStackTrace();
    }

    if( str != null )
      buf.append( "..." );

    buf.append( "</body></html>" );
    string = buf.toString();
    return string;
  }

  public static String replace( String data, String from, String to )
  {
    StringBuffer buf = new StringBuffer( data.length() );
    int pos = -1;
    int i = 0;
    while( ( pos = data.indexOf( from, i ) ) != -1 )
    {
      buf.append( data.substring( i, pos ) ).append( to );
      i = pos + from.length();
    }
    buf.append( data.substring( i ) );
    return buf.toString();
  }

  public static String fixLineSeparator( String xml ) throws UnsupportedEncodingException
  {
    if( "\r\n".equals( System.getProperty( "line.separator" ) ) )
    {
      xml = xml.replaceAll( "\r[^\n]", System.getProperty( "line.separator" ) );
    }
    else
    {
      xml = xml.replaceAll( "\r\n", System.getProperty( "line.separator" ) );
    }

    return xml;
  }

  public static String capitalize( String string )
  {
    if( isNullOrEmpty( string ) )
      return string;
    return string.toUpperCase().substring( 0, 1 ) + string.toLowerCase().substring( 1 );
  }

  public static String[] toStringArray( Object[] selectedOptions )
  {
    String[] result = new String[selectedOptions.length];
    for( int c = 0; c < selectedOptions.length; c++ )
      result[c] = String.valueOf( selectedOptions[c] );
    return result;
  }

  public static List<String> toStringList( Object[] selectedOptions )
  {
    StringList result = new StringList();

    for( Object o : selectedOptions )
    {
      result.add( o.toString() );
    }

    return result;
  }

  public static String[] sortNames( String[] names )
  {
    Arrays.sort( names );
    return names;
  }
}
TOP

Related Classes of com.eviware.soapui.support.StringUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.