@Override public StandardExpander add(RelationshipType type, Direction direction) { Exclusion excluded = exclusion.get(type.name()); final Map<String, Exclusion> newExclusion; if (((excluded == null) ? defaultExclusion : excluded).includes(direction)) { return this; } else { excluded = Exclusion.include(direction); if (excluded == defaultExclusion) { if (exclusion.size() == 1) { return new AllExpander(defaultExclusion.direction); } else { newExclusion = new HashMap<String, Exclusion>(exclusion); newExclusion.remove(type.name()); } } else { newExclusion = new HashMap<String, Exclusion>(exclusion); newExclusion.put(type.name(), excluded); } } return new ExcludingExpander(defaultExclusion, newExclusion); }
@Override public StandardExpander remove(RelationshipType type) { Map<String, Exclusion> exclude = new HashMap<String, Exclusion>(); exclude.put(type.name(), Exclusion.ALL); return new ExcludingExpander(Exclusion.include(direction), exclude); }