@Override public boolean hasLink(long from, long to) { try { // READ LOCK locker.globalReadLock(); return leftNums(from).contains(to); } finally { // READ UNLOCK locker.globalReadUnlock(); } }
@Override public boolean hasLink(long from, long to) { try { // READ LOCK locker.globalReadLock(); return leftNums(from).contains(to); } finally { // READ UNLOCK locker.globalReadUnlock(); } }
@Override public boolean hasLink(long from, long to) { try { // READ LOCK locker.globalReadLock(); return leftNums(from).contains(to); } finally { // READ UNLOCK locker.globalReadUnlock(); } }
private boolean delink_(long from, long to) { // nice("DELINK " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Numbers leftLinks = leftNums(from); if (!leftLinks.contains(to)) { return false; } // nice("DELINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); leftLinks = leftLinks.without(to); if (leftLinks.size() > 0) { left.put(from, leftLinks); } else { left.remove(from); } Numbers rightLinks = rightNums(to); if (!symmetric) { assert rightLinks.contains(from); } rightLinks = rightLinks.without(from); if (rightLinks.size() > 0) { rightish().put(to, rightLinks); } else { rightish().remove(to); } return true; }
private boolean delink_(long from, long to) { // nice("DELINK " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Numbers leftLinks = leftNums(from); if (!leftLinks.contains(to)) { return false; } // nice("DELINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); leftLinks = leftLinks.without(to); if (leftLinks.size() > 0) { left.put(from, leftLinks); } else { left.remove(from); } Numbers rightLinks = rightNums(to); if (!symmetric) { assert rightLinks.contains(from); } rightLinks = rightLinks.without(from); if (rightLinks.size() > 0) { rightish().put(to, rightLinks); } else { rightish().remove(to); } return true; }
private boolean delink_(long from, long to) { // nice("DELINK " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Numbers leftLinks = leftNums(from); if (!leftLinks.contains(to)) { return false; } // nice("DELINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); leftLinks = leftLinks.without(to); if (leftLinks.size() > 0) { left.put(from, leftLinks); } else { left.remove(from); } Numbers rightLinks = rightNums(to); if (!symmetric) { assert rightLinks.contains(from); } rightLinks = rightLinks.without(from); if (rightLinks.size() > 0) { rightish().put(to, rightLinks); } else { rightish().remove(to); } return true; }
private boolean link_(long from, long to) { // nice("LINK " + from + ":" + to + " ::: " + name + " : " // + trees.str(left)); Numbers leftLinks = leftNums(from); if (leftLinks.contains(to)) { return false; } // nice("LINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Check.state(manyTos || leftLinks.size() == 0, "The ?-to-one relation %s already has link from %s", name, from); leftLinks = leftLinks.with(to); left.put(from, leftLinks); Numbers rightLinks = rightNums(to); if (!symmetric) { assert !rightLinks.contains(from); } Check.state(manyFroms || rightLinks.size() == 0, "The one-to-? relation %s already has link to %s", name, to); rightLinks = rightLinks.with(from); rightish().put(to, rightLinks); return true; }
private boolean link_(long from, long to) { // nice("LINK " + from + ":" + to + " ::: " + name + " : " // + trees.str(left)); Numbers leftLinks = leftNums(from); if (leftLinks.contains(to)) { return false; } // nice("LINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Check.state(manyTos || leftLinks.size() == 0, "The ?-to-one relation %s already has link from %s", name, from); leftLinks = leftLinks.with(to); left.put(from, leftLinks); Numbers rightLinks = rightNums(to); if (!symmetric) { assert !rightLinks.contains(from); } Check.state(manyFroms || rightLinks.size() == 0, "The one-to-? relation %s already has link to %s", name, to); rightLinks = rightLinks.with(from); rightish().put(to, rightLinks); return true; }
private boolean link_(long from, long to) { // nice("LINK " + from + ":" + to + " ::: " + name + " : " // + trees.str(left)); Numbers leftLinks = leftNums(from); if (leftLinks.contains(to)) { return false; } // nice("LINK2 " + from + ":" + to + " ::: " + name + // " : " + trees.str(left)); Check.state(manyTos || leftLinks.size() == 0, "The ?-to-one relation %s already has link from %s", name, from); leftLinks = leftLinks.with(to); left.put(from, leftLinks); Numbers rightLinks = rightNums(to); if (!symmetric) { assert !rightLinks.contains(from); } Check.state(manyFroms || rightLinks.size() == 0, "The one-to-? relation %s already has link to %s", name, to); rightLinks = rightLinks.with(from); rightish().put(to, rightLinks); return true; }