Skip to content

Commit

Permalink
Preventing duplication of items in relation-based DB list containers.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Dec 29, 2014
1 parent 83d62b1 commit 18c01c5
Showing 1 changed file with 26 additions and 11 deletions.
Expand Up @@ -186,13 +186,17 @@ public void clear() {

@Override
public boolean addId(long id) {
boolean changed = ids.add(id);
if (!hasId(id)) {
boolean changed = ids.add(id);

if (changed) {
tracker.addedRelTo(id);
}
if (changed) {
tracker.addedRelTo(id);
}

return changed;
return changed;
} else {
return false;
}
}

@Override
Expand All @@ -216,16 +220,25 @@ protected boolean retainIds(Collection<Long> retainIds) {
return retainIds.retainAll(retainIds);
}

protected void addIdAt(int index, long id) {
getIdsAsList().add(index, id);
tracker.addedRelTo(id);
protected boolean addIdAt(int index, long id) {
if (!hasId(id)) {
getIdsAsList().add(index, id);
tracker.addedRelTo(id);
return true;
} else {
return false;
}
}

protected boolean addIdsAt(int index, Collection<Long> idsToAdd) {
boolean changed = getIdsAsList().addAll(index, idsToAdd);
boolean changed = false;

for (Long id : idsToAdd) {
tracker.addedRelTo(id);
for (long id : idsToAdd) {
boolean added = addIdAt(index, id);
if (added) {
index++;
}
changed |= added;
}

return changed;
Expand All @@ -240,6 +253,8 @@ protected long removeIdAt(int index) {
protected long setIdAt(int index, long id) {
long removedId = getIdsAsList().set(index, id);

// FIXME handle possible duplications

if (id != removedId) {
tracker.addedRelTo(id);
tracker.removedRelTo(removedId);
Expand Down

0 comments on commit 18c01c5

Please sign in to comment.