2 * Copyright (C) 2014 Matt Oswalt
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 * Authors : Matt Oswalt
11 package org.opendaylight.ovsdb.lib.operations;
13 import java.util.List;
16 import org.opendaylight.ovsdb.lib.notation.Condition;
17 import org.opendaylight.ovsdb.lib.notation.Mutation;
18 import org.opendaylight.ovsdb.lib.notation.Mutator;
19 import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
20 import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
21 import org.opendaylight.ovsdb.lib.schema.TableSchema;
23 import com.google.common.base.Preconditions;
24 import com.google.common.collect.Lists;
26 public class Mutate<E extends TableSchema<E>> extends Operation<E> implements ConditionalOperation {
28 public static final String MUTATE = "mutate";
29 List<Condition> where = Lists.newArrayList();
30 private List<Mutation> mutations = Lists.newArrayList();
32 public Mutate on(TableSchema schema){
33 this.setTableSchema(schema);
37 public Mutate(TableSchema<E> schema) {
38 super(schema, MUTATE);
41 public <T extends TableSchema<T>, D> Mutate<E> addMutation(ColumnSchema<T, D> columnSchema, Mutator mutator, D value) {
42 columnSchema.validate(value);
43 Object untypedValue = null;
44 if (columnSchema.getType().isMultiValued()) {
45 Preconditions.checkArgument((value instanceof Set),"expected a set for multivalued item") ;
46 untypedValue = OvsDBSet.fromSet((Set) value);
50 mutations.add(new Mutation(columnSchema.getName(), mutator, untypedValue));
54 public List<Mutation> getMutations() {
58 public void setMutations(List<Mutation> mutations) {
59 this.mutations = mutations;
63 public void addCondition(Condition condition) {
64 this.where.add(condition);
67 public Where where(Condition condition) {
68 this.where.add(condition);
69 return new Where(this);
72 public List<Condition> getWhere() {
76 public void setWhere(List<Condition> where) {