/* * Copyright 2012 Kazumune Katagiri. (http://d.hatena.ne.jp/nemuzuka) * * Licensed 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 jp.co.nemuzuka.utils; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang.StringUtils; /** * 各種コンバートユーティリティ. * @author k-katagiri */ public class ConvertUtils { /** * String配列→Long配列変換. * @param targets 処理対象配列 * @return 生成後Long配列(処理対象配列がnullの場合、サイズ0の配列) */ public static Long[] convert(String[] targets) { if(targets == null) { return new Long[0]; } List<Long> list = new ArrayList<Long>(); for(String target : targets) { list.add(Long.valueOf(target)); } return list.toArray(new Long[0]); } /** * Long配列→String配列変換. * @param targets 処理対象配列 * @return 生成後String配列(処理対象配列がnullの場合、サイズ0の配列) */ public static String[] convert(Long[] targets) { if(targets == null) { return new String[0]; } List<String> list = new ArrayList<String>(); for(Long target : targets) { list.add(target.toString()); } return list.toArray(new String[0]); } /** * Date変換. * @param source 文字列 * @param sdf 日付変換フォーマットオブジェクト * @return Dateオブジェクト */ public static Date toDate(String source, SimpleDateFormat sdf) { if(StringUtils.isEmpty(source)) { return null; } try { return sdf.parse(source); } catch (ParseException e) { throw new RuntimeException(e); } } /** * Long変換. * @param source 文字列 * @return Longオブジェクト */ public static Long toLong(String source) { if(StringUtils.isEmpty(source)) { return null; } return Long.valueOf(source); } /** * Integer変換. * @param source 文字列 * @return Integerオブジェクト */ public static Integer toInteger(String source) { if(StringUtils.isEmpty(source)) { return null; } return Integer.valueOf(source); } /** * String→Bigdecimal変換. * @param source 文字列 * @return BigDecimalオブジェクト */ public static BigDecimal toBigDecimal(String source) { if(StringUtils.isEmpty(source)) { return null; } return new BigDecimal(source); } /** * Integer→String変換. * 変換元値がnullの場合、空文字を返却します。 * @param val 変換元 * @return 変換後文字列 */ public static String toString(Integer val) { if(val == null) { return ""; } return String.valueOf(val); } /** * Date→日付文字列変換. * 変換元がnullの場合、空文字を返却します。 * @param date 変換元 * @param sdf フォーマット * @return 日付文字列 */ public static String toString(Date date, SimpleDateFormat sdf) { if(date == null) { return ""; } return sdf.format(date); } /** * Long→String変換. * 変換元値がnullの場合、空文字を返却します。 * @param val 変換元 * @return 変換後文字列 */ public static String toString(Long val) { if(val == null) { return ""; } return String.valueOf(val); } /** * Number→String変換. * 変換元がnullの場合、空文字を返却します。 * @param val 変換元 * @param df フォーマット * @return 数値文字列 */ public static String toString(Number val, DecimalFormat df) { if(val == null) { return ""; } return df.format(val); } /** * String→String配列変換. * 改行コードを元に、String配列に変換します。 * 空文字の場合、戻り値の文字列列配列には含みません。 * @param target 変換元 * @return 変換後文字列配列 */ public static String[] toStringArray(String target) { String name = target; if(name == null) { name=""; } name = name.replaceAll("\r\n", "\n"); name = name.replaceAll("\r", "\n"); String[] names = name.split("\n"); return createTrimStrArray(names); } /** * String→String配列変換. * 分割文字列を元に、String配列に変換します。 * 空文字の場合、戻り値の文字列列配列には含みません。 * @param s 変換元 * @param splitStr 分割文字列 * @return 変換後文字列配列 */ public static String[] toStringArray(String s, String splitStr) { String target = s; if(target == null) { target = ""; } String[] array = target.split(splitStr); return createTrimStrArray(array); } /** * String配列再作成. * ・全て半角SPの文字 * ・空文字 * ・重複文字 * は除外してString配列を作成します。 * @param array 作成元String配列 * @return 作成String配列 */ private static String[] createTrimStrArray(String[] array) { Set<String> strSet = new LinkedHashSet<String>(); for(String value : array) { String target = StringUtils.trimToEmpty(value); if(StringUtils.isEmpty(target)) { continue; } strSet.add(target); } return strSet.toArray(new String[0]); } }