Skip to content

Commit

Permalink
An atom may be involved in multiple stereo elements... when we replac…
Browse files Browse the repository at this point in the history
…e it we much replace all of them.
  • Loading branch information
johnmay committed May 24, 2017
1 parent 627b12d commit 85399ad
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
16 changes: 10 additions & 6 deletions base/data/src/main/java/org/openscience/cdk/AtomContainer.java
Expand Up @@ -290,19 +290,23 @@ public void setAtom(int idx, IAtom atom) {
}

// update stereo
IStereoElement oldStereo = null;
IStereoElement newStereo = null;
List<IStereoElement> oldStereo = null;
List<IStereoElement> newStereo = null;
for (IStereoElement se : stereoElements()) {
if (se.contains(oldAtom)) {
oldStereo = se;
if (oldStereo == null) {
oldStereo = new ArrayList<>();
newStereo = new ArrayList<>();
}
oldStereo.add(se);
Map<IAtom, IAtom> amap = Collections.singletonMap(oldAtom, atom);
Map<IBond, IBond> bmap = Collections.emptyMap();
newStereo = se.map(amap, bmap);
newStereo.add(se.map(amap, bmap));
}
}
if (oldStereo != null) {
stereoElements.remove(oldStereo);
stereoElements.add(newStereo);
stereoElements.removeAll(oldStereo);
stereoElements.addAll(newStereo);
}

notifyChanged();
Expand Down
Expand Up @@ -269,19 +269,23 @@ public void setAtom(int idx, IAtom atom) {
}

// update stereo
IStereoElement oldStereo = null;
IStereoElement newStereo = null;
List<IStereoElement> oldStereo = null;
List<IStereoElement> newStereo = null;
for (IStereoElement se : stereoElements()) {
if (se.contains(oldAtom)) {
oldStereo = se;
if (oldStereo == null) {
oldStereo = new ArrayList<>();
newStereo = new ArrayList<>();
}
oldStereo.add(se);
Map<IAtom, IAtom> amap = Collections.singletonMap(oldAtom, atom);
Map<IBond, IBond> bmap = Collections.emptyMap();
newStereo = se.map(amap, bmap);
newStereo.add(se.map(amap, bmap));
}
}
if (oldStereo != null) {
stereoElements.remove(oldStereo);
stereoElements.add(newStereo);
stereoElements.removeAll(oldStereo);
stereoElements.addAll(newStereo);
}

notifyChanged();
Expand Down
Expand Up @@ -271,19 +271,23 @@ public void setAtom(int idx, IAtom atom) {
}

// update stereo
IStereoElement oldStereo = null;
IStereoElement newStereo = null;
List<IStereoElement> oldStereo = null;
List<IStereoElement> newStereo = null;
for (IStereoElement se : stereoElements()) {
if (se.contains(oldAtom)) {
oldStereo = se;
if (oldStereo == null) {
oldStereo = new ArrayList<>();
newStereo = new ArrayList<>();
}
oldStereo.add(se);
Map<IAtom, IAtom> amap = Collections.singletonMap(oldAtom, atom);
Map<IBond, IBond> bmap = Collections.emptyMap();
newStereo = se.map(amap, bmap);
newStereo.add(se.map(amap, bmap));
}
}
if (oldStereo != null) {
stereoElements.remove(oldStereo);
stereoElements.add(newStereo);
stereoElements.removeAll(oldStereo);
stereoElements.addAll(newStereo);
}
}

Expand Down

0 comments on commit 85399ad

Please sign in to comment.