All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.persistence.descriptors.changetracking.CollectionChangeEvent Maven / Gradle / Ivy

There is a newer version: 5.0.0-B03
Show newest version
/*
 * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.descriptors.changetracking;

import java.beans.PropertyChangeEvent;

/**
 * 

* Purpose: Define a change event for collection types. *

* Description: For any object that wishes to use either object change tracking or * attribute change tracking, its collection attributes need to fire CollectionChangeEvent * in the add or remove methods. *

* Responsibilities: Create a CollectionChangeEvent for an object */ public class CollectionChangeEvent extends PropertyChangeEvent { public static final int ADD = 0; public static final int REMOVE = 1; /** * INTERNAL: * Change type is either add or remove */ protected int changeType; /** * INTERNAL: * index is the location of the change in the collection */ protected Integer index; /** * INTERNAL: * Set operation in IndirectList results in raising two events: removal of the old value and addition of the new one at the same index: * oldValue = list.set(i, newValue); * raiseRemoveEvent(i, oldValue, true); * raiseAddEvent(i, newValue, true); * This flag indicates whether the event was raised by set operation on the list. */ protected boolean isSet; /** * INTERNAL: * This flag will indicate if the object has already been removed or added to the collection before raising an event. * The object is not removed or added before raising an event during merge. */ protected boolean isChangeApplied = true; /** * PUBLIC: * Create a CollectionChangeEvent for an object based on the property name, old value, new value, * change type (add or remove) and change applied. * */ public CollectionChangeEvent(Object collectionOwner, String propertyName, Object collectionChanged, Object elementChanged, int changeType, boolean isChangeApplied) { this(collectionOwner, propertyName, collectionChanged, elementChanged, changeType, null, false, isChangeApplied); } /** * PUBLIC: * Create a CollectionChangeEvent for an object based on the property name, old value, new value, * change type (add or remove) and the index where the object is/was in the collection (list), * flag indicating whether the change (addition or removal) is part of a single set operation on a list, * flag indicating whether the object has already been added or removed from the collection. */ public CollectionChangeEvent(Object collectionOwner, String propertyName, Object collectionChanged, Object elementChanged, int changeType, Integer index, boolean isSet, boolean isChangeApplied) { super(collectionOwner, propertyName, collectionChanged, elementChanged); this.changeType = changeType; this.index = index; this.isSet = isSet; this.isChangeApplied = isChangeApplied; } /** * INTERNAL: * Return the change type */ public int getChangeType() { return changeType; } /** * INTERNAL: * Return whether the event was raised by set operation on the list. */ public boolean isSet() { return isSet; } /** * INTERNAL: * Return the index of the change in the collection */ public Integer getIndex() { return index; } /** * INTERNAL: * Set the index of the change in the collection */ public void setIndex(Integer index) { this.index = index; } /** * INTERNAL: * Return the value indicating if the object has been already added or removed from the collection. */ public boolean isChangeApplied() { return isChangeApplied; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy