blob: 18f2c03941fe8a5d275b7e56fb52df8ef0484ce3 [file] [log] [blame]
/*
* Copyright (c) 2013 DataTorrent, Inc. ALL Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.datatorrent.demos.frauddetect;
import com.datatorrent.lib.util.TimeBucketKey;
import java.io.Serializable;
import java.util.Calendar;
/**
* A time-based key for merchant data.
*
* @since 0.9.0
*/
public class MerchantKey implements Serializable
{
public String merchantId;
public Integer terminalId;
public Integer zipCode;
public String country;
public MerchantTransaction.MerchantType merchantType;
public Long time;
public boolean userGenerated;
public MerchantKey()
{
}
@Override
public int hashCode()
{
int key = 0;
if (merchantId != null) {
key |= (1 << 1);
key |= (merchantId.hashCode());
}
if (terminalId != null) {
key |= (1 << 2);
key |= (terminalId << 2);
}
if (zipCode != null) {
key |= (1 << 3);
key |= (zipCode << 3);
}
if (country != null) {
key |= (1 << 4);
key |= (country.hashCode());
}
if (merchantType != null) {
key |= (1 << 5);
key |= (merchantType.hashCode());
}
return key;
}
@Override
public boolean equals(Object obj)
{
if (!(obj instanceof MerchantKey)) {
return false;
}
MerchantKey mkey = (MerchantKey)obj;
return checkStringEqual(this.merchantId, mkey.merchantId)
&& checkIntEqual(this.terminalId, mkey.terminalId)
&& checkIntEqual(this.zipCode, mkey.zipCode)
&& checkStringEqual(this.country, mkey.country)
&& checkIntEqual(this.merchantType.ordinal(), mkey.merchantType.ordinal());
}
private boolean checkIntEqual(Integer a, Integer b)
{
if ((a == null) && (b == null)) {
return true;
}
if ((a != null) && (b != null) && a.intValue() == b.intValue()) {
return true;
}
return false;
}
private boolean checkStringEqual(String a, String b)
{
if ((a == null) && (b == null)) {
return true;
}
if ((a != null) && a.equals(b)) {
return true;
}
return false;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
if (merchantId != null) {
sb.append("|1:").append(merchantId);
}
if (terminalId != null) {
sb.append("|2:").append(terminalId);
}
if (zipCode != null) {
sb.append("|3:").append(zipCode);
}
if (country != null) {
sb.append("|4:").append(country);
}
if (merchantType != null) {
sb.append("|5:").append(merchantType);
}
return sb.toString();
}
}