Added Mutate operation 41/7441/1
authorMatt Oswalt <matt@keepingitclassless.net>
Tue, 27 May 2014 20:56:53 +0000 (16:56 -0400)
committerMatt Oswalt <matt@keepingitclassless.net>
Tue, 27 May 2014 20:56:53 +0000 (16:56 -0400)
Signed-off-by: Matt Oswalt <matt@keepingitclassless.net>
library/src/main/java/org/opendaylight/ovsdb/lib/operations/Mutate.java [new file with mode: 0644]
library/src/main/java/org/opendaylight/ovsdb/lib/operations/Operations.java
library/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestIT.java

diff --git a/library/src/main/java/org/opendaylight/ovsdb/lib/operations/Mutate.java b/library/src/main/java/org/opendaylight/ovsdb/lib/operations/Mutate.java
new file mode 100644 (file)
index 0000000..18805aa
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2014 Matt Oswalt
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Matt Oswalt
+ *
+ */
+package org.opendaylight.ovsdb.lib.operations;
+
+import com.google.common.collect.Lists;
+import org.opendaylight.ovsdb.lib.notation.Condition;
+import org.opendaylight.ovsdb.lib.notation.Mutation;
+import org.opendaylight.ovsdb.lib.notation.Mutator;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+
+import java.util.List;
+
+public class Mutate<E extends TableSchema<E>> extends Operation<E> implements ConditionalOperation {
+
+    public static final String MUTATE = "mutate";
+    List<Condition> where = Lists.newArrayList();
+    private List<Mutation> mutations = Lists.newArrayList();
+
+    public Mutate on(TableSchema schema){
+        this.setTableSchema(schema);
+        return this;
+    }
+
+    public Mutate(TableSchema<E> schema) {
+        super(schema, MUTATE);
+    }
+
+    public <T extends TableSchema<T>, D> Mutate<E> addMutation(ColumnSchema<T, D> columnSchema, Mutator mutator, D value) {
+        columnSchema.validate(value);
+        mutations.add(new Mutation(columnSchema.getName(), mutator, value));
+        return this;
+    }
+
+    public List<Mutation> getMutations() {
+        return mutations;
+    }
+
+    public void setMutations(List<Mutation> mutations) {
+        this.mutations = mutations;
+    }
+
+    @Override
+    public void addCondition(Condition condition) {
+        this.where.add(condition);
+    }
+
+    public Where where(Condition condition) {
+        this.where.add(condition);
+        return new Where(this);
+    }
+
+    public List<Condition> getWhere() {
+        return where;
+    }
+
+    public void setWhere(List<Condition> where) {
+        this.where = where;
+    }
+}
\ No newline at end of file
index e4102aaec81ecb512ac8802e6a9d6334d67f51e1..b86af3406e0d0e1d12b4319de1a571d890a5a420 100644 (file)
@@ -29,6 +29,10 @@ public class Operations {
         return new Delete<>(schema);
     }
 
+    public <E extends TableSchema<E>> Mutate<E> mutate(TableSchema<E> schema) {
+        return new Mutate<>(schema);
+    }
+
     public Commit commit(Boolean durable) {
         return new Commit(durable);
     }
index 1ea866e0a6b1ab0493ba96df9352c41ecb5718ed..de49027e4806a8660ed62e8b9c11b2a3106181f5 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
 import org.opendaylight.ovsdb.lib.message.TableUpdate;
 import org.opendaylight.ovsdb.lib.message.TableUpdates;
 import org.opendaylight.ovsdb.lib.message.UpdateNotification;
+import org.opendaylight.ovsdb.lib.notation.Mutator;
 import org.opendaylight.ovsdb.lib.operations.OperationResult;
 import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
@@ -76,6 +77,10 @@ public class OvsDBClientTestIT extends OvsdbTestBase {
                         .column(name)
                         .where(name.opEqual("br-int"))
                         .operation())
+                .add(op.mutate(bridge)
+                        .addMutation(flood_vlans, Mutator.INSERT, Sets.newHashSet(100, 101, 4001))
+                        .where(name.opEqual("br-int"))
+                        .operation())
                 .add(op.commit(true))
                 .execute();