package blade.migrate.core;
import blade.migrate.api.FileMigrator;
import blade.migrate.api.Problem;
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;
/**
* @author Andy Wu
*/
public abstract class XMLFileMigrator implements FileMigrator {
@Activate
public void activate(ComponentContext ctx) {
_context = ctx;
final Dictionary<String, Object> properties = _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");
}
@Override
public List<Problem> analyze(File file) {
final List<Problem> problems = new ArrayList<>();
final List<SearchResult> searchResults = searchXMLFile(file);
if (searchResults != null) {
String sectionHtml = MarkdownParser.getSection("BREAKING_CHANGES.markdown", _sectionKey);
for (SearchResult searchResult : searchResults) {
Problem problem = new Problem(
_problemTitle, _problemSummary,
_problemType, _problemTickets, file,
searchResult.startLine, searchResult.startOffset,
searchResult.endOffset, sectionHtml, searchResult.autoCorrectContext);
problems.add(problem);
}
}
return problems;
}
protected abstract List<SearchResult> searchXMLFile(File file);
private ComponentContext _context;
protected String _problemSummary;
protected String _problemTickets;
protected String _problemTitle;
protected String _problemType;
protected String _sectionKey = "";
}