package org.batfish.datamodel;
import org.batfish.datamodel.answers.AnswerElement;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ConfigurationDiff implements AnswerElement {
private static final String AS_PATH_ACCESS_LISTS_DIFF_VAR = "asPathAccessListsDiff";
private static final String COMMUNITY_LISTS_DIFF_VAR = "comunityListsDiff";
private static final String INTERFACES_DIFF_VAR = "interfacesDiff";
private static final String IP_ACCESS_LISTS_DIFF_VAR = "ipAccessListsDiff";
private static final String ROUTE_FILTER_LISTS_DIFF_VAR = "routeFilterListsDiff";
private static final String ROUTING_POLICIES_DIFF_VAR = "routingPoliciesDiff";
private static final String VRFS_DIFF_VAR = "vrfsDiff";
private AsPathAccessListsDiff _asPathAccessListsDiff;
private CommunityListsDiff _communityListsDiff;
private InterfacesDiff _interfacesDiff;
private IpAccessListsDiff _ipAccessListsDiff;
private RouteFilterListsDiff _routeFilterListsDiff;
private RoutingPoliciesDiff _routingPoliciesDiff;
private VrfsDiff _vrfsDiff;
@JsonCreator()
private ConfigurationDiff() {
}
public ConfigurationDiff(Configuration before, Configuration after) {
_asPathAccessListsDiff = new AsPathAccessListsDiff(
before.getAsPathAccessLists(), after.getAsPathAccessLists());
if (_asPathAccessListsDiff.isEmpty()) {
_asPathAccessListsDiff = null;
}
_communityListsDiff = new CommunityListsDiff(before.getCommunityLists(),
after.getCommunityLists());
if (_communityListsDiff.isEmpty()) {
_communityListsDiff = null;
}
_interfacesDiff = new InterfacesDiff(before.getInterfaces(),
after.getInterfaces());
if (_interfacesDiff.isEmpty()) {
_interfacesDiff = null;
}
_ipAccessListsDiff = new IpAccessListsDiff(before.getIpAccessLists(),
after.getIpAccessLists());
if (_ipAccessListsDiff.isEmpty()) {
_ipAccessListsDiff = null;
}
_vrfsDiff = new VrfsDiff(before.getVrfs(), after.getVrfs());
if (_vrfsDiff.isEmpty()) {
_vrfsDiff = null;
}
_routeFilterListsDiff = new RouteFilterListsDiff(
before.getRouteFilterLists(), after.getRouteFilterLists());
if (_routeFilterListsDiff.isEmpty()) {
_routeFilterListsDiff = null;
}
_routingPoliciesDiff = new RoutingPoliciesDiff(
before.getRoutingPolicies(), after.getRoutingPolicies());
if (_routingPoliciesDiff.isEmpty()) {
_routingPoliciesDiff = null;
}
}
@JsonProperty(AS_PATH_ACCESS_LISTS_DIFF_VAR)
public AsPathAccessListsDiff getAsPathAccessListsDiff() {
return _asPathAccessListsDiff;
}
@JsonProperty(COMMUNITY_LISTS_DIFF_VAR)
public CommunityListsDiff getCommunityListsDiff() {
return _communityListsDiff;
}
@JsonProperty(INTERFACES_DIFF_VAR)
public InterfacesDiff getInterfacesDiff() {
return _interfacesDiff;
}
@JsonProperty(IP_ACCESS_LISTS_DIFF_VAR)
public IpAccessListsDiff getIpAccessListsDiff() {
return _ipAccessListsDiff;
}
@JsonProperty(ROUTE_FILTER_LISTS_DIFF_VAR)
public RouteFilterListsDiff getRouteFilterListsDiff() {
return _routeFilterListsDiff;
}
@JsonProperty(ROUTING_POLICIES_DIFF_VAR)
public RoutingPoliciesDiff getRoutingPoliciesDiff() {
return _routingPoliciesDiff;
}
@JsonProperty(VRFS_DIFF_VAR)
public VrfsDiff getVrfsDiff() {
return _vrfsDiff;
}
@JsonIgnore
public boolean isEmpty() {
return _asPathAccessListsDiff == null && _communityListsDiff == null
&& _interfacesDiff == null && _ipAccessListsDiff == null
&& _vrfsDiff == null && _routeFilterListsDiff == null
&& _routingPoliciesDiff == null;
}
@JsonProperty(AS_PATH_ACCESS_LISTS_DIFF_VAR)
public void setAsPathAccessListsDiff(
AsPathAccessListsDiff asPathAccessListsDiff) {
_asPathAccessListsDiff = asPathAccessListsDiff;
}
@JsonProperty(COMMUNITY_LISTS_DIFF_VAR)
public void setCommunityListsDiff(CommunityListsDiff communityListsDiff) {
_communityListsDiff = communityListsDiff;
}
@JsonProperty(INTERFACES_DIFF_VAR)
public void setInterfacesDiff(InterfacesDiff interfacesDiff) {
_interfacesDiff = interfacesDiff;
}
@JsonProperty(IP_ACCESS_LISTS_DIFF_VAR)
public void setIpAccessListsDiff(IpAccessListsDiff ipAccessListsDiff) {
_ipAccessListsDiff = ipAccessListsDiff;
}
@JsonProperty(ROUTE_FILTER_LISTS_DIFF_VAR)
public void setRouteFilterListsDiff(
RouteFilterListsDiff routeFilterListsDiff) {
_routeFilterListsDiff = routeFilterListsDiff;
}
@JsonProperty(ROUTING_POLICIES_DIFF_VAR)
public void setRoutingPoliciesDiff(RoutingPoliciesDiff routingPoliciesDiff) {
_routingPoliciesDiff = routingPoliciesDiff;
}
@JsonProperty(VRFS_DIFF_VAR)
public void setVrfsDiff(VrfsDiff vrfsDiff) {
_vrfsDiff = vrfsDiff;
}
}