private void trackPositionChanges(Tag tag) { // tracking associated Positions for (Position position : tag.getPositionTags()) { Position positionDB = PositionManager.getDefault().getEntityById(position.getId()); if (!positionDB.getTags().contains(tag)) { positionDB .getHistory() .add( PositionManager.getDefault() .getChange(positionDB, PositionManager.FIELD_TAGS, "", tag.getName())); } } // tracking deassociated Positions if (tag.getId() != null) { Tag tagDB = getEntityById(tag.getId()); for (Position positionDB : tagDB.getPositionTags()) { if (!tag.getPositionTags().contains(positionDB)) { positionDB .getHistory() .add( PositionManager.getDefault() .getChange(positionDB, PositionManager.FIELD_TAGS, tag.getName(), "")); } } } }