package org.opendaylight.lispflowmapping.mapcache;
import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
-import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor;
import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry;
import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
import org.opendaylight.lispflowmapping.interfaces.mapcache.IAuthKeyDb;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
+import org.opendaylight.lispflowmapping.mapcache.lisp.LispMapCacheStringifier;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkey;
this.dao = dao;
}
- private ILispDAO getVniTable(Eid eid) {
- long vni = 0;
+ private long getVni(Eid eid) {
if (eid.getVirtualNetworkId() == null) {
- vni = 0;
+ return 0;
} else {
- vni = eid.getVirtualNetworkId().getValue();
+ return eid.getVirtualNetworkId().getValue();
}
- return (ILispDAO) dao.getSpecific(vni, SubKeys.VNI);
+ }
+
+ private ILispDAO getVniTable(Eid eid) {
+ return (ILispDAO) dao.getSpecific(getVni(eid), SubKeys.VNI);
+ }
+
+ private void removeVniTable(Eid eid) {
+ dao.removeSpecific(getVni(eid), SubKeys.VNI);
}
private ILispDAO getOrInstantiateVniTable(Eid eid) {
- long vni = 0;
- if (eid.getVirtualNetworkId() == null) {
- vni = 0;
- } else {
- vni = eid.getVirtualNetworkId().getValue();
- }
+ long vni = getVni(eid);
ILispDAO table = (ILispDAO) dao.getSpecific(vni, SubKeys.VNI);
if (table == null) {
table = dao.putNestedTable(vni, SubKeys.VNI);
return;
}
table.removeSpecific(key, SubKeys.AUTH_KEY);
+ if (table.isEmpty()) {
+ removeVniTable(eid);
+ }
}
@Override
public String printKeys() {
- final StringBuffer sb = new StringBuffer();
- sb.append("Keys\tValues\n");
-
- final IRowVisitor innerVisitor = (new IRowVisitor() {
- String lastKey = "";
-
- public void visitRow(Object keyId, String valueKey, Object value) {
- String key = keyId.getClass().getSimpleName() + "#" + keyId;
- if (!lastKey.equals(key)) {
- sb.append("\n" + key + "\t");
- }
- sb.append(valueKey + "=" + value + "\t");
- lastKey = key;
- }
- });
-
- dao.getAll(new IRowVisitor() {
- String lastKey = "";
+ return LispMapCacheStringifier.printKeys(dao);
+ }
- public void visitRow(Object keyId, String valueKey, Object value) {
- String key = keyId.getClass().getSimpleName() + "#" + keyId;
- if (!lastKey.equals(key)) {
- sb.append("\n" + key + "\t");
- }
- if (valueKey.equals(SubKeys.VNI)) {
- sb.append(valueKey + "= { ");
- ((ILispDAO)value).getAll(innerVisitor);
- sb.append("}\t");
- } else {
- sb.append(valueKey + "=" + value + "\t");
- }
- lastKey = key;
- }
- });
- sb.append("\n");
- return sb.toString();
+ @Override
+ public String prettyPrintKeys() {
+ return LispMapCacheStringifier.prettyPrintKeys(dao);
}
}