/*******************************************************************************
* Copyright (c) 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.internal.registry;
/**
* Aggregated registry timestamp. Corresponds to the current contents of the registry.
* <p>
* This class may be instantiated.
* </p><p>
* This class is not indended to be subclassed.
* </p>
* @since org.eclipse.equinox.registry 3.3
*/
public final class RegistryTimestamp {
/**
* Current aggregated timestamp
*/
private long aggregateTimestamp;
private boolean modified;
/**
* Public constructor.
*/
public RegistryTimestamp() {
reset();
}
/**
* Returns value of the aggregated timestamp.
* @return value of the aggregated timestamp
*/
public long getContentsTimestamp() {
return aggregateTimestamp;
}
/**
* Set value of the aggregated timestamp.
* @param timestamp the aggregated timestamp of the current registry contents
*/
public void set(long timestamp) {
aggregateTimestamp = timestamp;
modified = false;
}
/**
* Sets aggregated timestamp to the value corresponding to an empty registry.
*/
public void reset() {
aggregateTimestamp = 0;
modified = false;
}
/**
* Determines if the aggregate timestamp was modified using add() or remove()
* methods.
* @return true: the timestamp was modified after the last set/reset
*/
public boolean isModifed() {
return modified;
}
/**
* Add individual contribution timestamp to the aggregated timestamp.
* @param timestamp the time stamp of the contribution being added to the registry
*/
public void add(long timestamp) {
aggregateTimestamp ^= timestamp;
modified = true;
}
/**
* Remove individual contribution timestamp from the aggregated timestamp.
* @param timestamp the time stamp of the contribution being removed from the registry
*/
public void remove(long timestamp) {
aggregateTimestamp ^= timestamp;
modified = true;
}
}