content: /*
   *  Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
   *
   *  This file is part of Akvo FLOW.
   *
   *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
   *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
   *  either version 3 of the License or any later version.
   *
   *  Akvo FLOW 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 Affero General Public License included below for more details.
   *
   *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
   */
  
  package com.gallatinsystems.common.util;
  
  import java.util.Calendar;
  import java.util.Date;
  import java.util.GregorianCalendar;
  
  /**
   * string manipulation utility methods
   * 
   * @author Christopher Fagiani
   */
  public class StringUtil {
  
      /**
       * capitalizes the first letter of each word in the string. Leaves case alone for all others
       * 
       * @param string
       * @return
       */
      public static String capitalizeString(String string) {
          char[] chars = string.toCharArray();
          boolean isFirst = true;
          for (int i = 0; i < chars.length; i++) {
              if (isFirst && Character.isLetter(chars[i])) {
                  chars[i] = Character.toUpperCase(chars[i]);
                  isFirst = false;
              } else if (Character.isWhitespace(chars[i]) || chars[i] == '.'
                      || chars[i] == '\'') {
                  isFirst = true;
              } else {
                  chars[i] = Character.toLowerCase(chars[i]);
              }
          }
          return String.valueOf(chars);
      }
  
      /**
       * returns the four digit year as a string or an empty string if the date is null
       * 
       * @param date
       * @return
       */
      public static String getYearString(Date date) {
          String yearString = "";
          if (date != null) {
              GregorianCalendar cal = new GregorianCalendar();
              cal.setTime(date);
              yearString = cal.get(Calendar.YEAR) + "";
          }
          return yearString;
      }
  
      public static String capitalizeFirstCharacterString(String item) {
          String attributeField = item;
          String firstChar = attributeField.substring(0, 1);
          firstChar = firstChar.toUpperCase();
          return firstChar + attributeField.substring(1);
      }
  
      /**
       * takes a byte array and outputs it as a string of hex digits
       * 
       * @param bytes
       * @return
       */
      public static String toHexString(byte[] bytes) {
          StringBuffer hexString = new StringBuffer();
          for (int i = 0; i < bytes.length; i++) {
              hexString.append(Integer.toHexString(0xFF & bytes[i]));
          }
          return hexString.toString();
      }
  }
  