+ public TCommandEvent(final TCommand cmd) {
+ this.cmd = cmd;
+ }
+
+ /**
+ * Comparison check. All fields must match to return true.
+ *
+ * @param rhs another TCommandEvent or TCommand instance
+ * @return true if all fields are equal
+ */
+ @Override
+ public boolean equals(final Object rhs) {
+ if (!(rhs instanceof TCommandEvent)
+ && !(rhs instanceof TCommand)
+ ) {
+ return false;
+ }
+
+ if (rhs instanceof TCommandEvent) {
+ TCommandEvent that = (TCommandEvent) rhs;
+ return (cmd.equals(that.cmd)
+ && (getTime().equals(that.getTime())));
+ }
+
+ TCommand that = (TCommand) rhs;
+ return (cmd.equals(that));
+ }
+
+ /**
+ * Hashcode uses all fields in equals().
+ *
+ * @return the hash
+ */
+ @Override
+ public int hashCode() {
+ int A = 13;
+ int B = 23;
+ int hash = A;
+ hash = (B * hash) + getTime().hashCode();
+ hash = (B * hash) + cmd.hashCode();
+ return hash;