/** * Copyright Intellectual Reserve, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.familysearch.platform.rt; import org.familysearch.platform.FamilySearchPlatform; import org.familysearch.platform.ct.ChildAndParentsRelationship; import org.familysearch.platform.ct.Merge; import org.familysearch.platform.ct.MergeAnalysis; import org.familysearch.platform.discussions.Comment; import org.familysearch.platform.discussions.Discussion; import org.familysearch.platform.users.User; import org.gedcomx.Gedcomx; import org.gedcomx.conclusion.Fact; import org.gedcomx.rt.GedcomxModelVisitorBase; import javax.xml.bind.annotation.XmlTransient; import java.util.List; /** * @author Ryan Heaton */ @XmlTransient public class FamilySearchPlatformModelVisitorBase extends GedcomxModelVisitorBase implements FamilySearchPlatformModelVisitor { @Override public void visitFamilySearchPlatform(FamilySearchPlatform fsp) { visitGedcomx(fsp); this.contextStack.push(fsp); List<Discussion> discussions = fsp.getDiscussions(); if (discussions != null) { for (Discussion discussion : discussions) { if (discussion != null) { discussion.accept(this); } } } List<Merge> merges = fsp.getMerges(); if (merges != null) { for (Merge merge : merges) { if (merge != null) { merge.accept(this); } } } List<MergeAnalysis> mergeAnalyses = fsp.getMergeAnalyses(); if (mergeAnalyses != null) { for (MergeAnalysis merge : mergeAnalyses) { if (merge != null) { merge.accept(this); } } } List<ChildAndParentsRelationship> childAndParentsRelationships = fsp.getChildAndParentsRelationships(); if (childAndParentsRelationships != null) { for (ChildAndParentsRelationship pcr : childAndParentsRelationships) { if (pcr != null) { pcr.accept(this); } } } List<User> users = fsp.getUsers(); if (users != null) { for (User user : users) { if (user != null) { user.accept(this); } } } this.contextStack.pop(); } @Override public void visitGedcomx(Gedcomx gx) { super.visitGedcomx(gx); this.contextStack.push(gx); List<Discussion> discussions = gx.findExtensionsOfType(Discussion.class); if (discussions != null) { for (Discussion discussion : discussions) { if (discussion != null) { discussion.accept(this); } } } List<Merge> merges = gx.findExtensionsOfType(Merge.class); if (merges != null) { for (Merge merge : merges) { if (merge != null) { merge.accept(this); } } } List<MergeAnalysis> mergeAnalyses = gx.findExtensionsOfType(MergeAnalysis.class); if (mergeAnalyses != null) { for (MergeAnalysis merge : mergeAnalyses) { if (merge != null) { merge.accept(this); } } } List<ChildAndParentsRelationship> childAndParentsRelationships = gx.findExtensionsOfType(ChildAndParentsRelationship.class); if (childAndParentsRelationships != null) { for (ChildAndParentsRelationship pcr : childAndParentsRelationships) { if (pcr != null) { pcr.accept(this); } } } this.contextStack.pop(); } @Override public void visitChildAndParentsRelationship(ChildAndParentsRelationship pcr) { this.contextStack.push( pcr ); visitConclusion( pcr ); List<Fact> facts; facts = pcr.getFatherFacts(); if (facts != null) { for (Fact fact : facts) { if (fact != null) { fact.accept(this); } } } facts = pcr.getMotherFacts(); if (facts != null) { for (Fact fact : facts) { if (fact != null) { fact.accept(this); } } } this.contextStack.pop(); } @Override public void visitMerge(MergeAnalysis merge) { //no-op. } @Override public void visitMerge(Merge merge) { //no-op. } @Override public void visitDiscussion(Discussion discussion) { this.contextStack.push(discussion); List<Comment> comments = discussion.getComments(); if (comments != null) { for (Comment comment : comments) { if (comment != null) { comment.accept(this); } } } this.contextStack.pop(); } @Override public void visitComment(Comment comment) { //no-op. } @Override public void visitUser(User user) { //no-op. } }