Coverage report

  %line %branch
nl.toolforge.karma.core.cmd.CommandDescriptorMap
76% 
86% 

 1  
 /*
 2  
 * Created on Oct 17, 2004
 3  
 */
 4  
 package nl.toolforge.karma.core.cmd;
 5  
 
 6  
 import java.util.Collection;
 7  
 import java.util.HashMap;
 8  
 import java.util.HashSet;
 9  
 import java.util.Iterator;
 10  
 import java.util.Map;
 11  
 import java.util.Set;
 12  
 
 13  
 /**
 14  
  * @author W.M. Oosterom
 15  
  */
 16  
 public class CommandDescriptorMap {
 17  
 
 18  78
   private Map map = new HashMap();
 19  
 
 20  78
   public CommandDescriptorMap() {
 21  
     // Empty
 22  78
   }
 23  
 
 24  
   /**
 25  
    *
 26  95
    * @param newDescriptor
 27  
    */
 28  
   public void add(CommandDescriptor newDescriptor) {
 29  
 
 30  35
     if (newDescriptor == null) {
 31  0
       return;
 32  95
     }
 33  95
 
 34  95
     // Create a set of identifiers for this command descriptor
 35  
     //
 36  130
     Set identifiers = new HashSet();
 37  130
     if (newDescriptor.getName() != null) {
 38  35
       identifiers.add(newDescriptor.getName());
 39  95
     }
 40  35
     if (newDescriptor.getAliasList() != null) {
 41  35
       identifiers.addAll(newDescriptor.getAliasList());
 42  
     }
 43  35
     identifiers.remove(null);
 44  
 
 45  
     // If map already contains a key, that is also found in identifiers
 46  95
     // than do not add the current command descriptor, but add the current
 47  95
     // aliases that were not yet registered to the commanddescriptor that
 48  304
     // was already put in map before
 49  304
     //
 50  111
     String alreadyContainsKey = null;
 51  35
     for (Iterator i = identifiers.iterator(); i.hasNext();) {
 52  112
       String currentAlias = (String) i.next();
 53  207
       if (map.containsKey(currentAlias)) {
 54  28
         alreadyContainsKey = currentAlias;
 55  
       }
 56  
     }
 57  54
     if (alreadyContainsKey != null) {
 58  19
       // map already contains this command descriptor; add
 59  76
       // missing aliases
 60  76
       //
 61  7
       CommandDescriptor existingDescriptor = (CommandDescriptor) map.get(alreadyContainsKey);
 62  7
       for (Iterator i = identifiers.iterator(); i.hasNext();) {
 63  28
         String currentAlias = (String) i.next();
 64  28
         if (!map.containsKey(currentAlias)) {
 65  0
           map.put(currentAlias, existingDescriptor);
 66  
         }
 67  76
       }
 68  228
     } else {
 69  
       // map did not yet contains this command descriptor
 70  
       //
 71  123
       for (Iterator i = identifiers.iterator(); i.hasNext();) {
 72  84
         map.put(i.next(), newDescriptor);
 73  
       }
 74  
     }
 75  35
   }
 76  
 
 77  
   /**
 78  
    * Adds all objects in <code>anotherMap</code> to this <code>CommandDescriptorMap</code>.
 79  
    *
 80  
    * @param anotherMap A <code>CommandDescriptorMap</code> instance.
 81  
    */
 82  
   public void addAll(CommandDescriptorMap anotherMap) {
 83  
 
 84  0
     for (Iterator i = anotherMap.keySet().iterator(); i.hasNext();) {
 85  0
       String key = (String) i.next();
 86  0
       map.put(key, anotherMap.get(key));
 87  
     }
 88  0
   }
 89  
 
 90  
   /**
 91  
    * Returns this <code>CommandDescriptorMap</code>s values.
 92  
    */
 93  
   public Collection values() {
 94  0
     return map.values();
 95  
   }
 96  
 
 97  
   /**
 98  
    * Returns a Collection view of all keys in this <code>CommandDescriptorMap</code>.
 99  38
    *
 100  
    * @return A Collection view of all keys in this <code>CommandDescriptorMap</code>.
 101  
    */
 102  
   public Collection keySet() {
 103  14
     return map.keySet();
 104  
   }
 105  
 
 106  
   /**
 107  
    * Returns a <code>CommandDescriptor</code> instance identified by the key <code>name</code>.
 108  
    *
 109  
    * @param name A command descriptor name. Acts as key for the <code>CommandDescriptorMap</code>.
 110  76
    *
 111  
    * @return
 112  
    */
 113  76
   public CommandDescriptor get(String name) {
 114  28
     if (name == null) {
 115  0
       return null;
 116  
     }
 117  28
     return (CommandDescriptor) map.get(name);
 118  
   }
 119  
 
 120  
   /**
 121  
    * Returns the number of keys in this <code>CommandDescriptorMap</code>.
 122  38
    *
 123  
    * @return The number of keys in this <code>CommandDescriptorMap</code>.
 124  
    */
 125  
   public int size() {
 126  14
     return keySet().size();
 127  
 
 128  
   }
 129  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.