package husacct.validate.task.workspace.importing;
import husacct.validate.domain.configuration.ActiveRuleType;
import husacct.validate.domain.configuration.ConfigurationServiceImpl;
import husacct.validate.domain.exception.SeverityChangedException;
import husacct.validate.domain.validation.Severity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.datatype.DatatypeConfigurationException;
import org.apache.log4j.Logger;
import org.jdom2.Element;
public class ImportController {
private Logger logger = Logger.getLogger(ImportController.class);
private List<Severity> severities;
private final ImportFactory importFactory;
private final ConfigurationServiceImpl configuration;
public ImportController(ConfigurationServiceImpl configuration) {
this.configuration = configuration;
this.importFactory = new ImportFactory();
this.severities = new ArrayList<Severity>();
}
public void importWorkspace(Element element) throws DatatypeConfigurationException {
importSeverties(element.getChild("severities"));
importSeveritiesPerTypesPerProgrammingLanguages(element.getChild("severitiesPerTypesPerProgrammingLanguages"));
importActiveViolationTypes(element.getChild("activeViolationTypes"));
}
private void importSeverties(Element element) {
try {
this.severities = importFactory.importSeverities(element);
configuration.setSeverities(severities);
} catch (SeverityChangedException e) {
logger.error("Error during importing of severities, default severities will be used: " + e.getMessage());
}
}
private void importSeveritiesPerTypesPerProgrammingLanguages(Element element) {
HashMap<String, HashMap<String, Severity>> severitiesPerTypesPerProgrammingLanguage = importFactory.importSeveritiesPerTypesPerProgrammingLanguages(element, severities);
configuration.setSeveritiesPerTypesPerProgrammingLanguages(severitiesPerTypesPerProgrammingLanguage);
}
private void importActiveViolationTypes(Element element) {
Map<String, List<ActiveRuleType>> activeViolationTypes = importFactory.importActiveViolationTypes(element);
configuration.setActiveViolationTypes(activeViolationTypes);
}
}