/*
* Copyright 2012 Amazon Technologies, Inc.
*
* Licensed 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://aws.amazon.com/apache2.0
*
* This file 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 com.amazonaws.eclipse.dynamodb.editor;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.amazonaws.services.dynamodbv2.model.AttributeValue;
/**
* Collection type for edited items in the dynamo table editor.
*/
public class EditedItems {
/*
* Linked hash map preserves order of insertion so that iterations are made
* in the same order as insertions. This is so that updates are done in the
* same order as edits.
*/
private final Map<Map<String, AttributeValue>, EditedItem> editedItems = new LinkedHashMap<Map<String, AttributeValue>, EditedItem>();
/**
* @see java.util.Map#get(java.lang.Object)
*/
public EditedItem get(Map<String, AttributeValue> key) {
return editedItems.get(key);
}
/**
* @see java.util.Map#put(java.lang.Object, java.lang.Object)
*/
public void add(Map<String, AttributeValue> key, EditedItem value) {
editedItems.put(key, value);
}
/**
* Updates the item with the key given to contain the attributes given.
*/
public void update(Map<String, AttributeValue> key, Map<String, AttributeValue> dynamoItem) {
editedItems.get(key).setAttributes(dynamoItem);
}
/**
* @see java.util.Map#containsKey(java.lang.Object)
*/
public boolean containsKey(Object key) {
return editedItems.containsKey(key);
}
/**
* @see java.util.Map#remove(java.lang.Object)
*/
public EditedItem remove(Map<String, AttributeValue> key) {
return editedItems.remove(key);
}
/**
* @see java.util.Map#clear()
*/
public void clear() {
editedItems.clear();
}
/**
* Returns an iterator over all the entries in the collection.
*/
public Iterator<Entry<Map<String, AttributeValue>, EditedItem>> iterator() {
return editedItems.entrySet().iterator();
}
/**
* @see java.util.Map#isEmpty()
*/
public boolean isEmpty() {
return editedItems.isEmpty();
}
/**
* @see java.util.Map#size()
*/
public int size() {
return editedItems.size();
}
}