Coverage Report - net.sf.snmpadaptor4j.object.SnmpTrap
 
Classes in this File Line Coverage Branch Coverage Complexity
SnmpTrap
100 %
24/24
100 %
18/18
1,778
 
 1  
 package net.sf.snmpadaptor4j.object;
 2  
 
 3  
 import java.io.Serializable;
 4  
 import java.util.Collections;
 5  
 import java.util.HashMap;
 6  
 import java.util.Map;
 7  
 import org.apache.log4j.Logger;
 8  
 
 9  
 /**
 10  
  * Object representing a specific or generic SNMP trap.
 11  
  * @author <a href="http://fr.linkedin.com/in/jpminetti/">Jean-Philippe MINETTI</a>
 12  
  */
 13  
 public abstract class SnmpTrap
 14  
                 implements Serializable {
 15  
 
 16  
         /**
 17  
          * Serial number.
 18  
          */
 19  
         private static final long serialVersionUID = -2950288105650647983L;
 20  
 
 21  
         /**
 22  
          * Elapsed time in <b>100th of second</b> since the application launch.
 23  
          */
 24  
         private final long timeStamp;
 25  
 
 26  
         /**
 27  
          * OID indexing the source of the trap.
 28  
          */
 29  
         private final SnmpOid source;
 30  
 
 31  
         /**
 32  
          * Map of "interesting" information.
 33  
          */
 34  
         private final Map<SnmpOid, SnmpTrapData> dataMap;
 35  
 
 36  
         /**
 37  
          * Creates and returns an object representing a specific SNMP trap.
 38  
          * @param timeStamp Elapsed time in <b>100th of second</b> since the application launch.
 39  
          * @param source OID indexing the source of the trap (must not be <code>NULL</code>).
 40  
          * @param type Trap type.
 41  
          * @param dataMap Map of "interesting" information.
 42  
          * @return Object representing a specific SNMP trap.
 43  
          */
 44  
         public static SpecificSnmpTrap newInstance (final long timeStamp, final SnmpOid source, final int type, final Map<SnmpOid, SnmpTrapData> dataMap) {
 45  36
                 return new SpecificSnmpTrap(timeStamp, source, type, dataMap);
 46  
         }
 47  
 
 48  
         /**
 49  
          * Creates and returns an object representing a generic SNMP trap.
 50  
          * @param timeStamp Elapsed time in <b>100th of second</b> since the application launch.
 51  
          * @param source OID indexing the source of the trap (must not be <code>NULL</code>).
 52  
          * @param type Trap type (must not be <code>NULL</code>).
 53  
          * @param dataMap Map of "interesting" information.
 54  
          * @return Object representing a generic SNMP trap.
 55  
          */
 56  
         public static GenericSnmpTrap newInstance (final long timeStamp, final SnmpOid source, final GenericSnmpTrapType type, final Map<SnmpOid, SnmpTrapData> dataMap) {
 57  71
                 return new GenericSnmpTrap(timeStamp, source, type, dataMap);
 58  
         }
 59  
 
 60  
         /**
 61  
          * Hidden constructor (abstract class).
 62  
          * @param timeStamp Elapsed time in <b>100th of second</b> since the application launch.
 63  
          * @param source OID indexing the source of the trap.
 64  
          * @param dataMap Map of "interesting" information.
 65  
          */
 66  
         protected SnmpTrap (final long timeStamp, final SnmpOid source, final Map<SnmpOid, SnmpTrapData> dataMap) {
 67  109
                 super();
 68  109
                 this.timeStamp = timeStamp;
 69  109
                 this.source = source;
 70  109
                 this.dataMap = Collections.unmodifiableMap(dataMap != null ? dataMap : new HashMap<SnmpOid, SnmpTrapData>());
 71  109
         }
 72  
 
 73  
         /**
 74  
          * Returns the elapsed time in <b>100th of second</b> since the application launch.
 75  
          * @return Elapsed time in <b>100th of second</b> since the application launch.
 76  
          */
 77  
         public final long getTimeStamp () {
 78  29
                 return this.timeStamp;
 79  
         }
 80  
 
 81  
         /**
 82  
          * Returns the OID indexing the source of the trap.
 83  
          * @return OID indexing the source of the trap.
 84  
          */
 85  
         public final SnmpOid getSource () {
 86  60
                 return this.source;
 87  
         }
 88  
 
 89  
         /**
 90  
          * Returns the map of "interesting" information.
 91  
          * @return Map of "interesting" information (never <code>NULL</code>).
 92  
          */
 93  
         public final Map<SnmpOid, SnmpTrapData> getDataMap () {
 94  23
                 return this.dataMap;
 95  
         }
 96  
 
 97  
         /**
 98  
          * Traces the content of SNMP trap to logs.
 99  
          * @param logger Logger (must not be <code>NULL</code>).
 100  
          */
 101  
         public abstract void traceTo (Logger logger);
 102  
 
 103  
         /*
 104  
          * {@inheritDoc}
 105  
          * @see java.lang.Object#hashCode()
 106  
          */
 107  
         @Override
 108  
         public int hashCode () {
 109  
                 final int prime = 31;
 110  60
                 int result = 1;
 111  60
                 result = prime * result + this.dataMap.hashCode();
 112  60
                 result = prime * result + ((this.source == null) ? 0 : this.source.hashCode());
 113  60
                 result = prime * result + (int) (this.timeStamp ^ (this.timeStamp >>> 32));
 114  60
                 return result;
 115  
         }
 116  
 
 117  
         /*
 118  
          * {@inheritDoc}
 119  
          * @see java.lang.Object#equals(java.lang.Object)
 120  
          */
 121  
         @Override
 122  
         public boolean equals (final Object obj) {
 123  44
                 boolean result = false;
 124  44
                 if ((obj != null) && getClass().equals(obj.getClass())) {
 125  38
                         final SnmpTrap other = (SnmpTrap) obj;
 126  38
                         result = (this.timeStamp == other.timeStamp);
 127  38
                         if (result) {
 128  36
                                 result = (this.source != null ? this.source.equals(other.source) : (other.source == null));
 129  
                         }
 130  38
                         if (result) {
 131  30
                                 result = this.dataMap.equals(other.dataMap);
 132  
                         }
 133  
                 }
 134  44
                 return result;
 135  
         }
 136  
 
 137  
 }