Clover coverage report - brownies library - 1.0-beta-1
Coverage timestamp: 月 8 16 2004 17:14:42 GMT+09:00
file stats: LOC: 133   Methods: 9
NCLOC: 67   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
CollectionUtils.java 85% 91.2% 100% 90.5%
coverage coverage
 1   
 /*
 2   
  * Joey and its relative products are published under the terms
 3   
  * of the Apache Software License.
 4   
  */
 5   
 package org.asyrinx.brownie.core.collection;
 6   
 
 7   
 import java.util.ArrayList;
 8   
 import java.util.Iterator;
 9   
 import java.util.List;
 10   
 import java.util.Map;
 11   
 
 12   
 /**
 13   
  * コレクションに関するユーティリティクラスです。
 14   
  * 
 15   
  * @author Akima
 16   
  */
 17   
 public final class CollectionUtils extends
 18   
         org.apache.commons.collections.CollectionUtils {
 19   
 
 20   
     /**
 21   
      * MapされているValue群をListとして取得します。
 22   
      */
 23  1
     public static List toList(Map source) {
 24  1
         final List result = new ArrayList();
 25  1
         toList(source, result);
 26  1
         return result;
 27   
     }
 28   
 
 29   
     /**
 30   
      * MapされているValue群をListとして取得します。
 31   
      */
 32  2
     public static void toList(Map source, List dest) {
 33  2
         final Iterator iter = source.keySet().iterator();
 34  2
         while (iter.hasNext())
 35  6
             dest.add(source.get(iter.next()));
 36   
     }
 37   
 
 38   
     /**
 39   
      * 引数sourceの要素(群)をListとして取得します。
 40   
      */
 41  10
     public static List toList(Object[] source) {
 42  10
         final List result = new ArrayList();
 43  10
         toList(source, result);
 44  10
         return result;
 45   
     }
 46   
 
 47   
     /**
 48   
      * 引数sourceの要素(群)をListとして取得します。
 49   
      */
 50  11
     public static void toList(Object[] source, List dest) {
 51  11
         for (int i = 0; i < source.length; i++) {
 52  52
             dest.add(source[i]);
 53   
         }
 54   
     }
 55   
 
 56   
     /**
 57   
      * 引数hashCodeと合致するハッシュコードを保持するオブジェクトを 引数sourceから検索します。
 58   
      */
 59  3
     public static Object find(List source, int hashCode) {
 60  6
         for (int i = 0; i < source.size(); i++) {
 61  6
             if (source.get(i).hashCode() == hashCode) {
 62  3
                 return source.get(i);
 63   
             }
 64   
         }
 65  0
         return null;
 66   
     }
 67   
 
 68   
     /**
 69   
      * 引数source中に、重複する要素があるかどうかを調べます。
 70   
      */
 71  3
     public static boolean hasDuplicates(List source) {
 72  3
         final List checked = new ArrayList();
 73  3
         for (int i = source.size() - 1; i > -1; i--) {
 74  10
             if (checked.contains(source.get(i))) {
 75  2
                 return true;
 76   
             } else {
 77  8
                 checked.add(source.get(i));
 78   
             }
 79   
         }
 80  1
         return false;
 81   
     }
 82   
 
 83   
     /**
 84   
      * 指定されたListから指定された個数の要素を先頭から要素を削除します。
 85   
      * 
 86   
      * @param target
 87   
      *            対象となるList
 88   
      * @param count
 89   
      *            削除する個数
 90   
      */
 91  1
     public static void removeFromFirst(List target, int count) {
 92  1
         removeFromIndex(target, 0, Math.abs(count));
 93   
     }
 94   
 
 95   
     /**
 96   
      * 指定されたListから指定された個数の要素を末尾から要素を削除します。
 97   
      * 
 98   
      * @param target
 99   
      *            対象となるList
 100   
      * @param count
 101   
      *            削除する個数
 102   
      */
 103  1
     public static void removeFromLast(List target, int count) {
 104  1
         if (target == null)
 105  0
             return;
 106  1
         removeFromIndex(target, target.size() - 1, Math.abs(count) * -1);
 107   
     }
 108   
 
 109   
     /**
 110   
      * 指定されたListから指定された個数の要素を指定されたインデックスから順に要素を削除します。
 111   
      * 
 112   
      * @param target
 113   
      *            対象となるList
 114   
      * @param index
 115   
      *            削除を始めるインデックス
 116   
      * @param count
 117   
      *            削除する個数。マイナス値を指定した場合は逆方向に削除していきます。
 118   
      */
 119  4
     public static void removeFromIndex(List target, int index, int count) {
 120  4
         if (target == null)
 121  0
             return;
 122  4
         final boolean backward = count < 0;
 123  4
         count = Math.abs(count);
 124  4
         while (!target.isEmpty() && count > 0 && index > -1
 125   
                 && index < target.size()) {
 126  13
             target.remove(index);
 127  13
             count--;
 128  13
             if (backward)
 129  6
                 index--;
 130   
         }
 131   
     }
 132   
 
 133   
 }