/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2013-2015 ForgeRock AS. */ package org.opends.server.replication.plugin; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.replication.common.CSN; /** AttrValueHistorical is the historical information of the modification of one attribute value. */ public class AttrValueHistorical { private ByteString value; private CSN valueDeleteTime; private CSN valueUpdateTime; /** * Build an AttrValueHistorical for a provided attribute value, providing * the last time the provided value is either updated or deleted. * @param value the provided attributeValue * @param csnUpdate last time when this value was updated * @param csnDelete last time when this value for deleted */ public AttrValueHistorical(ByteString value, CSN csnUpdate, CSN csnDelete) { this.value = value; this.valueUpdateTime = csnUpdate; this.valueDeleteTime = csnDelete; } @Override public boolean equals(Object obj) { if (obj instanceof AttrValueHistorical) { AttrValueHistorical objVal = (AttrValueHistorical) obj; return value.equals(objVal.getAttributeValue()); } return false; } @Override public int hashCode() { return value.hashCode(); } /** * Get the last time when the value was deleted. * @return the last time when the value was deleted */ public CSN getValueDeleteTime() { return valueDeleteTime; } /** * Get the last time when the value was updated. * @return the last time when the value was updated */ public CSN getValueUpdateTime() { return valueUpdateTime; } /** * Get the attributeValue for which this object was generated. * @return the value for which this object was generated */ public ByteString getAttributeValue() { return value; } /** * Check if the value associated with this object was updated. * @return true if the value associated with this object was updated */ public boolean isUpdate() { return valueUpdateTime != null; } @Override public String toString() { if (valueUpdateTime != null) { return valueDeleteTime != null // valueUpdateTime and valueDeleteTime should have the same value ? valueUpdateTime + ":replace:" + value : valueUpdateTime + ":add:" + value; } else { return valueDeleteTime != null ? valueDeleteTime + ":delete:" + value : "????:" + value; } } }