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
11
12
13 public abstract class SnmpTrap
14 implements Serializable {
15
16
17
18
19 private static final long serialVersionUID = -2950288105650647983L;
20
21
22
23
24 private final long timeStamp;
25
26
27
28
29 private final SnmpOid source;
30
31
32
33
34 private final Map<SnmpOid, SnmpTrapData> dataMap;
35
36
37
38
39
40
41
42
43
44 public static SpecificSnmpTrap newInstance (final long timeStamp, final SnmpOid source, final int type, final Map<SnmpOid, SnmpTrapData> dataMap) {
45 return new SpecificSnmpTrap(timeStamp, source, type, dataMap);
46 }
47
48
49
50
51
52
53
54
55
56 public static GenericSnmpTrap newInstance (final long timeStamp, final SnmpOid source, final GenericSnmpTrapType type, final Map<SnmpOid, SnmpTrapData> dataMap) {
57 return new GenericSnmpTrap(timeStamp, source, type, dataMap);
58 }
59
60
61
62
63
64
65
66 protected SnmpTrap (final long timeStamp, final SnmpOid source, final Map<SnmpOid, SnmpTrapData> dataMap) {
67 super();
68 this.timeStamp = timeStamp;
69 this.source = source;
70 this.dataMap = Collections.unmodifiableMap(dataMap != null ? dataMap : new HashMap<SnmpOid, SnmpTrapData>());
71 }
72
73
74
75
76
77 public final long getTimeStamp () {
78 return this.timeStamp;
79 }
80
81
82
83
84
85 public final SnmpOid getSource () {
86 return this.source;
87 }
88
89
90
91
92
93 public final Map<SnmpOid, SnmpTrapData> getDataMap () {
94 return this.dataMap;
95 }
96
97
98
99
100
101 public abstract void traceTo (Logger logger);
102
103
104
105
106
107 @Override
108 public int hashCode () {
109 final int prime = 31;
110 int result = 1;
111 result = prime * result + this.dataMap.hashCode();
112 result = prime * result + ((this.source == null) ? 0 : this.source.hashCode());
113 result = prime * result + (int) (this.timeStamp ^ (this.timeStamp >>> 32));
114 return result;
115 }
116
117
118
119
120
121 @Override
122 public boolean equals (final Object obj) {
123 boolean result = false;
124 if ((obj != null) && getClass().equals(obj.getClass())) {
125 final SnmpTrap other = (SnmpTrap) obj;
126 result = (this.timeStamp == other.timeStamp);
127 if (result) {
128 result = (this.source != null ? this.source.equals(other.source) : (other.source == null));
129 }
130 if (result) {
131 result = this.dataMap.equals(other.dataMap);
132 }
133 }
134 return result;
135 }
136
137 }