Bump versions by x.(y+1).z
[ovsdb.git] / library / impl / src / main / java / org / opendaylight / ovsdb / lib / message / MonitorRequestBuilder.java
1 /*
2  * Copyright (c) 2013, 2015 EBay Software Foundation and others. All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.ovsdb.lib.message;
10
11 import java.util.Collection;
12 import java.util.HashSet;
13 import java.util.List;
14 import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
15 import org.opendaylight.ovsdb.lib.schema.TableSchema;
16
17 public class MonitorRequestBuilder<E extends TableSchema<E>> {
18
19     private final E tableSchema;
20     private final Collection<String> columns = new HashSet<>();
21     private MonitorSelect select;
22
23     public MonitorRequestBuilder(E tableSchema) {
24         this.tableSchema = tableSchema;
25     }
26
27     public MonitorRequestBuilder<E> addColumn(String column) {
28         this.columns.add(column);
29         return this;
30     }
31
32     public MonitorRequestBuilder<E> addColumn(ColumnSchema<?, ?> column) {
33         this.addColumn(column.getName());
34         return this;
35     }
36
37     public MonitorRequestBuilder<E> addColumns(Collection<String> extraColumns) {
38         this.columns.addAll(extraColumns);
39         return this;
40     }
41
42     public MonitorRequestBuilder<E> addColumns(List<ColumnSchema<E, ?>> extraColumns) {
43         for (ColumnSchema<E, ?> schema : extraColumns) {
44             this.addColumn(schema);
45         }
46         return this;
47     }
48
49     public Collection<String> getColumns() {
50         return this.columns;
51     }
52
53     public MonitorRequestBuilder<E> with(MonitorSelect what) {
54         this.select = what;
55         return this;
56     }
57
58     public MonitorRequest build() {
59         MonitorRequest request = new MonitorRequest(tableSchema.getName(), new HashSet<>(this.columns));
60         request.setSelect(select == null ? new MonitorSelect() : select);
61         return request;
62     }
63 }