View Javadoc

1   package net.sf.snmpadaptor4j.core.mapping;
2   
3   import java.util.ArrayList;
4   import java.util.Collections;
5   import java.util.List;
6   import net.sf.snmpadaptor4j.object.SnmpDataType;
7   import net.sf.snmpadaptor4j.object.SnmpOid;
8   
9   /**
10   * Object containing the mapping to build the <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap} from a <code>userData</code> field
11   * of JMX notification and as <b>map object</b>.
12   * @author <a href="http://fr.linkedin.com/in/jpminetti/">Jean-Philippe MINETTI</a>
13   */
14  public final class MapDataMapTrapMapping
15  		extends DataMapTrapMapping {
16  
17  	/**
18  	 * Serial number.
19  	 */
20  	private static final long serialVersionUID = -6097834534568446556L;
21  
22  	/**
23  	 * List of mappings to build entries of the map in <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap} from all entries of map in
24  	 * <code>userData</code> field of JMX notification.
25  	 */
26  	private final List<UserDataEntryDataMapTrapMapping> userDataEntryList = new ArrayList<UserDataEntryDataMapTrapMapping>();
27  
28  	/**
29  	 * Hidden constructor.
30  	 * @param sequenceNumberOid OID of <code>sequenceNumber</code> field of JMX notification. Is NULL if the <code>sequenceNumber</code> should not be present in
31  	 *            <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap}.
32  	 * @param messageOid OID of <code>message</code> field of JMX notification. Is NULL if the <code>message</code> should not be present in <code>dataMap</code>
33  	 *            field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap}.
34  	 * @param hasSystemInfo <code>TRUE</code> for put all system information attributes in the <code>dataMap</code> field of
35  	 *            {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap}.
36  	 * @see XmlMappingParser#newSnmpTrapMappingMap(String)
37  	 */
38  	MapDataMapTrapMapping (final SnmpOid sequenceNumberOid, final SnmpOid messageOid, final boolean hasSystemInfo) {
39  		super(sequenceNumberOid, messageOid, hasSystemInfo);
40  	}
41  
42  	/**
43  	 * Adds a mapping to build an entry of the map in <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap} from an entry of map in
44  	 * <code>userData</code> field of JMX notification.
45  	 * @param userDataKey Key for find the entry in the map of <code>userData</code> field of JMX notification (must not be <code>NULL</code>).
46  	 * @param userDataType SNMP data type of entry in the map of <code>userData</code> field of JMX notification (must not be <code>NULL</code>).
47  	 * @param userDataOid OID of entry in the map of <code>userData</code> field of JMX notification (must not be <code>NULL</code>).
48  	 * @see XmlMappingParser#newSnmpTrapMappingMap(String)
49  	 */
50  	void addUserDataEntry (final String userDataKey, final SnmpDataType userDataType, final SnmpOid userDataOid) {
51  		this.userDataEntryList.add(new UserDataEntryDataMapTrapMapping(userDataKey, userDataType, userDataOid));
52  	}
53  
54  	/**
55  	 * Returns the list of mappings to build entries of the map in <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap} from all
56  	 * entries of map in <code>userData</code> field of JMX notification.
57  	 * @return List of mappings to build entries of the map in <code>dataMap</code> field of {@link net.sf.snmpadaptor4j.object.SnmpTrap SnmpTrap} from all entries
58  	 *         of map in <code>userData</code> field of JMX notification (never <code>NULL</code>).
59  	 */
60  	public List<UserDataEntryDataMapTrapMapping> getUserDataEntryList () {
61  		return Collections.unmodifiableList(this.userDataEntryList);
62  	}
63  
64  	/*
65  	 * {@inheritDoc}
66  	 * @see net.sf.snmpadaptor4j.core.mapping.DataMapTrapMapping#hashCode()
67  	 */
68  	@Override
69  	public int hashCode () {
70  		final int prime = 31;
71  		int result = super.hashCode();
72  		result = prime * result + this.userDataEntryList.hashCode();
73  		return result;
74  	}
75  
76  	/*
77  	 * {@inheritDoc}
78  	 * @see net.sf.snmpadaptor4j.core.mapping.DataMapTrapMapping#equals(java.lang.Object)
79  	 */
80  	@Override
81  	public boolean equals (final Object obj) {
82  		boolean result = false;
83  		if (obj == this) {
84  			result = true;
85  		}
86  		else {
87  			result = super.equals(obj);
88  			if (result) {
89  				final MapDataMapTrapMapping other = (MapDataMapTrapMapping) obj;
90  				result = this.userDataEntryList.equals(other.userDataEntryList);
91  			}
92  		}
93  		return result;
94  	}
95  
96  	/*
97  	 * {@inheritDoc}
98  	 * @see java.lang.Object#toString()
99  	 */
100 	@Override
101 	public String toString () {
102 		return "MapDataMapTrapMapping[sequenceNumberOid=" + getSequenceNumberOid() + "; messageOid=" + getMessageOid() + "; hasSystemInfo=" + isHasSystemInfo()
103 				+ "; userDataEntryList=" + this.userDataEntryList + "]";
104 	}
105 
106 }