@Override public void clear() { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); super.clear(); if (dictionary.getManageSymmetricPointers()) { for (Pointer pointer : copy) { deleteSymmetricPointerFromTarget(pointer); } } } else { super.clear(); } }
@Override public void clear() { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); super.clear(); if (dictionary.getManageSymmetricPointers()) { for (Pointer pointer : copy) { deleteSymmetricPointerFromTarget(pointer); } } } else { super.clear(); } }
@Override public boolean removeAll(Collection<?> c) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); boolean result = super.removeAll(c); if (dictionary.getManageSymmetricPointers()) { for (Object object : c) { if (object instanceof Pointer) { Pointer pointer = (Pointer) object; if (copy.contains(pointer)) { deleteSymmetricPointerFromTarget(pointer); } } } } return result; } else { return super.removeAll(c); } }
@Override public boolean removeAll(Collection<?> c) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); boolean result = super.removeAll(c); if (dictionary.getManageSymmetricPointers()) { for (Object object : c) { if (object instanceof Pointer) { Pointer pointer = (Pointer) object; if (copy.contains(pointer)) { deleteSymmetricPointerFromTarget(pointer); } } } } return result; } else { return super.removeAll(c); } }
@Override public boolean retainAll(Collection<?> c) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); boolean result = super.retainAll(c); if (dictionary.getManageSymmetricPointers()) { for (Pointer pointer : copy) { if (!c.contains(pointer)) { deleteSymmetricPointerFromTarget(pointer); } } } return result; } else { return super.retainAll(c); } }
@Override public boolean retainAll(Collection<?> c) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(this); boolean result = super.retainAll(c); if (dictionary.getManageSymmetricPointers()) { for (Pointer pointer : copy) { if (!c.contains(pointer)) { deleteSymmetricPointerFromTarget(pointer); } } } return result; } else { return super.retainAll(c); } }
@Override public Pointer set(int index, Pointer pointer) { checkPointerIsNotNull(pointer); Pointer old = get(index); Pointer result = super.set(index, pointer); // check symmetries and update if necessary if (null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers()) { deleteSymmetricPointerFromTarget(old); addSymmetricPointerToTarget(pointer); } checkPointers(); return result; }
@Override protected void removeRange(int fromIndex, int toIndex) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(super.subList(fromIndex, toIndex)); super.removeRange(fromIndex, toIndex); for (Pointer pointer : copy) { deleteSymmetricPointerFromTarget(pointer); } } else { super.removeRange(fromIndex, toIndex); } }
@Override public Pointer set(int index, Pointer pointer) { checkPointerIsNotNull(pointer); Pointer old = get(index); Pointer result = super.set(index, pointer); // check symmetries and update if necessary if (null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers()) { deleteSymmetricPointerFromTarget(old); addSymmetricPointerToTarget(pointer); } checkPointers(); return result; }
@Override public boolean remove(Object o) { boolean result = super.remove(o); if (result && null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers() && o instanceof Pointer) { Pointer pointer = (Pointer) o; deleteSymmetricPointerFromTarget(pointer); } return result; }
@Override public boolean remove(Object o) { boolean result = super.remove(o); if (result && null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers() && o instanceof Pointer) { Pointer pointer = (Pointer) o; deleteSymmetricPointerFromTarget(pointer); } return result; }
@Override public Pointer remove(int index) { Pointer result = super.remove(index); if (null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers()) { deleteSymmetricPointerFromTarget(result); } return result; }
@Override protected void removeRange(int fromIndex, int toIndex) { if (null != dictionary && dictionary.isEditable()) { List<Pointer> copy = new ArrayList<>(super.subList(fromIndex, toIndex)); super.removeRange(fromIndex, toIndex); for (Pointer pointer : copy) { deleteSymmetricPointerFromTarget(pointer); } } else { super.removeRange(fromIndex, toIndex); } }
@Override public Pointer remove(int index) { Pointer result = super.remove(index); if (null != dictionary && dictionary.isEditable() && dictionary.getManageSymmetricPointers()) { deleteSymmetricPointerFromTarget(result); } return result; }