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

org.identityconnectors.googleapps.ChangeSet Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
 *
 * U.S. Government Rights - Commercial software. Government users
 * are subject to the Sun Microsystems, Inc. standard license agreement
 * and applicable provisions of the FAR and its supplements.
 *
 * Use is subject to license terms.
 *
 * This distribution may include materials developed by third parties.
 * Sun, Sun Microsystems, the Sun logo, Java and Project Identity
 * Connectors are trademarks or registered trademarks of Sun
 * Microsystems, Inc. or its subsidiaries in the U.S. and other
 * countries.
 *
 * UNIX is a registered trademark in the U.S. and other countries,
 * exclusively licensed through X/Open Company, Ltd.
 *
 * -----------
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of the Common Development
 * and Distribution License(CDDL) (the License).  You may not use this file
 * except in  compliance with the License.
 *
 * You can obtain a copy of the License at
 * http://identityconnectors.dev.java.net/CDDLv1.0.html
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * When distributing the Covered Code, include this CDDL Header Notice in each
 * file and include the License file at identityconnectors/legal/license.txt.
 * If applicable, add the following below this CDDL Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 * -----------
 */

package org.identityconnectors.googleapps;

import java.util.ArrayList;
import java.util.List;

/**
 * Helper class to compute the change set for lists
 * For example - when doing an update on nicknames, we need to compute
 * the set of names to add, and the set of names to delete.
 *
 * This can save on bandwidth. The trivial implementation is to delete
 * all of the current list items, then add in the new ones - but this
 * can cause additional traffic to the target resource. This class computes the
 * minimal change set (minimal set of things to add, and delete).
 *
 * @author warrenstrange
 */
public class ChangeSet {

    private List toAdd;
    private List toRemove;


    public ChangeSet(List existingList, List updatedList) {

        // make copies so as not to touch the orignial lists
        toAdd = new ArrayList(updatedList);
        toRemove = new ArrayList(existingList);

        // remove all the names from toAdd that already exist
        //  (there no need to add them again);
        toAdd.removeAll(existingList);


        // If a name currently exists, and is NOT
        // on the update list (list of to be names)
        // then we need to remove it
        // by subtracting the names that should be on the list
        // we are left with just the names that should NOT be on the list
        toRemove.removeAll(updatedList);

    }

    public List itemsToBeRemoved() {
        return toRemove;
    }

    public List itemsToBeAdded() {
        return toAdd;
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy