/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.expression;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Implementation class for {@link WriteExpressionList}.
*
* @param <W> type of the write payload
* @author carcassi
*/
public class WriteExpressionListImpl<W> implements WriteExpressionList<W> {
private List<WriteExpression<W>> writeExpressions;
final void addThis() {
writeExpressions.add((WriteExpression<W>) this);
}
/**
* Creates a new empty expression list.
*/
public WriteExpressionListImpl() {
this.writeExpressions = new ArrayList<WriteExpression<W>>();
}
WriteExpressionListImpl(Collection<? extends WriteExpression<W>> writeExpressions) {
this.writeExpressions = new ArrayList<WriteExpression<W>>(writeExpressions);
}
@Override
public final WriteExpressionListImpl<W> and(WriteExpressionList<? extends W> expressions) {
@SuppressWarnings("unchecked")
WriteExpressionList<W> newExpression = (WriteExpressionList<W>) (WriteExpressionList) expressions;
writeExpressions.addAll(newExpression.getWriteExpressions());
return this;
}
@Override
public final List<WriteExpression<W>> getWriteExpressions() {
return writeExpressions;
}
}