package blade.migrate.liferay70; import blade.migrate.api.FileMigrator; import blade.migrate.api.Problem; import blade.migrate.core.MarkdownParser; import blade.migrate.core.PropertiesFileChecker; import blade.migrate.core.SearchResult; import java.io.File; import java.util.ArrayList; import java.util.Dictionary; import java.util.List; import org.osgi.service.component.ComponentContext; import org.osgi.service.component.annotations.Activate; public abstract class PropertiesFileMigrator implements FileMigrator { private ComponentContext _context; String _problemTitle; String _problemSummary; String _problemType; String _problemTickets; String _sectionKey = ""; final List<String> _properties = new ArrayList<String>(); @Activate public void activate(ComponentContext ctx) { this._context = ctx; final Dictionary<String, Object> properties = this._context.getProperties(); _problemTitle = (String)properties.get("problem.title"); _problemSummary = (String)properties.get("problem.summary"); _problemType = (String)properties.get("file.extensions"); _problemTickets = (String)properties.get("problem.tickets"); _sectionKey = (String)properties.get("problem.section"); addPropertiesToSearch(this._properties); } protected abstract void addPropertiesToSearch(List<String> _properties); @Override public List<Problem> analyze(File file) { final List<Problem> problems = new ArrayList<>(); PropertiesFileChecker propertiesFileChecker = new PropertiesFileChecker(file); for (String key : _properties) { List<SearchResult> results = propertiesFileChecker.findProperties(key); if (results != null) { String sectionHtml = MarkdownParser.getSection("BREAKING_CHANGES.markdown", _sectionKey); for (SearchResult searchResult : results) { problems.add(new Problem( _problemTitle, _problemSummary, _problemType, _problemTickets, file, searchResult.startLine, searchResult.startOffset, searchResult.endOffset, sectionHtml, searchResult.autoCorrectContext)); } } } return problems; } }