package com.bigdata.rdf.spo;
public enum ModifiedEnum {
INSERTED, REMOVED, UPDATED, NONE;
public static boolean[] toBooleans(final ModifiedEnum[] modified, final int n) {
final boolean[] b = new boolean[n*2];
for (int i = 0; i < n; i++) {
switch(modified[i]) {
case INSERTED:
b[i*2] = true;
b[i*2+1] = false;
break;
case REMOVED:
b[i*2] = false;
b[i*2+1] = true;
break;
case UPDATED:
b[i*2] = true;
b[i*2+1] = true;
break;
case NONE:
default:
b[i*2] = false;
b[i*2+1] = false;
break;
}
}
return b;
}
public static ModifiedEnum[] fromBooleans(final boolean[] b, final int n) {
assert n <= b.length && n % 2 == 0 : "n="+n+", b.length="+b.length;
final ModifiedEnum[] m = new ModifiedEnum[n/2];
for (int i = 0; i < n; i+=2) {
if (b[i] && !b[i+1])
m[i/2] = INSERTED;
else if (!b[i] && b[i+1])
m[i/2] = REMOVED;
else if (b[i] && b[i+1])
m[i/2] = UPDATED;
else
m[i/2] = NONE;
}
return m;
}
}