/* * Copyright 2010-2011 Ning, Inc. * * Ning licenses this file to you 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 org.killbill.billing.util.tag; import java.util.UUID; import org.joda.time.DateTime; import org.killbill.billing.ObjectType; import org.killbill.billing.util.UUIDs; public class DefaultControlTag extends DescriptiveTag implements ControlTag { private final ControlTagType controlTagType; // use to create new objects public DefaultControlTag(final ControlTagType controlTagType, final ObjectType objectType, final UUID objectId, final DateTime createdDate) { this(UUIDs.randomUUID(), controlTagType, objectType, objectId, createdDate); } // use to hydrate objects when loaded from the persistence layer public DefaultControlTag(final UUID id, final ControlTagType controlTagType, final ObjectType objectType, final UUID objectId, final DateTime createdDate) { super(id, controlTagType.getId(), objectType, objectId, createdDate); this.controlTagType = controlTagType; } @Override public ControlTagType getControlTagType() { return controlTagType; } @Override public String toString() { return "DefaultControlTag [controlTagType=" + controlTagType + ", id=" + id + "]"; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((controlTagType == null) ? 0 : controlTagType.hashCode()); return result; } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (getClass() != obj.getClass()) { return false; } final DefaultControlTag other = (DefaultControlTag) obj; if (controlTagType != other.controlTagType) { return false; } return true; } }