001 package org.kuali.maven.plugins.graph.sanitize; 002 003 import java.util.List; 004 import java.util.Map; 005 006 import org.kuali.maven.plugins.graph.pojo.MavenContext; 007 import org.kuali.maven.plugins.graph.pojo.State; 008 import org.kuali.maven.plugins.graph.tree.Node; 009 import org.kuali.maven.plugins.graph.tree.TreeHelper; 010 import org.slf4j.Logger; 011 import org.slf4j.LoggerFactory; 012 013 public abstract class MavenContextSanitizer implements NodeSanitizer<MavenContext> { 014 private static final Logger logger = LoggerFactory.getLogger(MavenContextSanitizer.class); 015 016 TreeHelper helper = new TreeHelper(); 017 018 Map<String, MavenContext> included; 019 State state; 020 021 public MavenContextSanitizer() { 022 this(null, null); 023 } 024 025 public MavenContextSanitizer(Map<String, MavenContext> included, State state) { 026 super(); 027 this.included = included; 028 this.state = state; 029 } 030 031 protected abstract void sanitize(MavenContext context, Map<String, MavenContext> included); 032 033 @Override 034 public void sanitize(Node<MavenContext> node) { 035 List<MavenContext> contexts = helper.getList(node, state); 036 for (MavenContext context : contexts) { 037 State elementState = context.getState(); 038 if (state.equals(elementState)) { 039 sanitize(context, included); 040 } 041 } 042 } 043 044 protected void warnAndSwitch(State switchTo, String artifactId, MavenContext context, String warning) { 045 logger.warn(getSwitchMessage(artifactId, switchTo)); 046 logger.warn(warning); 047 context.setState(switchTo); 048 } 049 050 protected String getSwitchMessage(String artifactId, State switched) { 051 return getState() + "->" + switched + " " + artifactId; 052 } 053 054 public Map<String, MavenContext> getIncluded() { 055 return included; 056 } 057 058 public void setIncluded(Map<String, MavenContext> included) { 059 this.included = included; 060 } 061 062 public State getState() { 063 return state; 064 } 065 066 public void setState(State state) { 067 this.state = state; 068 } 069 }