/*
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* 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
*/
package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.statistics.flowcache;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.statistics.flowcache.FlowCacheFilter.FlowCacheFilterBuilder;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.statistics.flowcache.FlowCacheKeys.FlowCacheKeysBuilder;
import com.google.common.base.Preconditions;
/**
* An object to handle flow-cache parameters for JSON conversion
*/
public final class FlowCacheDefinition {
private String keys;
private String value;
private String filter;
private boolean log;
private FlowCacheDefinition() {
}
private FlowCacheDefinition(FlowCacheDefinitionBuilder builder) {
this.keys = builder.getKeysBuilder().build().getValue();
this.value = builder.getValue();
this.filter = builder.getFilterBuilder().build().getValue();
this.log = builder.isLog();
}
public String getKeys() {
return keys;
}
public String getValue() {
return value;
}
public String getFilter() {
return filter;
}
public boolean getLog() {
return log;
}
public static FlowCacheDefinitionBuilder builder(){
return new FlowCacheDefinitionBuilder();
}
@Override
public String toString() {
return "FlowCacheDefinition [keys=" + keys + ", value=" + value + ", filter=" + filter + ", log=" + log + "]";
}
public static class FlowCacheDefinitionBuilder {
private String value = "";
private boolean log = false;
private final FlowCacheKeysBuilder keysBuilder = new FlowCacheKeysBuilder();
private final FlowCacheFilterBuilder filterBuilder = new FlowCacheFilterBuilder();
public FlowCacheKeysBuilder getKeysBuilder() {
return keysBuilder;
}
public String getValue() {
return value;
}
public FlowCacheDefinitionBuilder setValue(String value) {
Preconditions.checkNotNull(value);
this.value = value;
return this;
}
public FlowCacheFilterBuilder getFilterBuilder() {
return filterBuilder;
}
public boolean isLog() {
return log;
}
public FlowCacheDefinitionBuilder setLog(boolean log) {
this.log = log;
return this;
}
public FlowCacheDefinition build() {
return new FlowCacheDefinition(this);
}
}
}