package com.nvarghese.beowulf.smf.scan.transformers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.nvarghese.beowulf.common.report.ReportFormat;
import com.nvarghese.beowulf.common.report.Severity;
import com.nvarghese.beowulf.common.scan.dto.config.HttpClient;
import com.nvarghese.beowulf.common.scan.dto.config.Options;
import com.nvarghese.beowulf.common.scan.dto.config.ReportSettings;
import com.nvarghese.beowulf.common.scan.dto.config.ScanSettings;
import com.nvarghese.beowulf.common.scan.dto.config.SessionSettings;
import com.nvarghese.beowulf.common.scan.dto.config.TestModule;
import com.nvarghese.beowulf.common.scan.dto.config.TestModules;
import com.nvarghese.beowulf.common.scan.model.HttpClientScanConfigDocument;
import com.nvarghese.beowulf.common.scan.model.ReportScanConfigDocument;
import com.nvarghese.beowulf.common.scan.model.SessionSettingScanConfigDocument;
import com.nvarghese.beowulf.common.scan.model.SettingScanConfigDocument;
import com.nvarghese.beowulf.common.scan.model.TestModuleScanConfigDocument;
import com.nvarghese.beowulf.common.webtest.model.TestModuleOptionDocument;
public class ScanProfileTransformer {
public HttpClientScanConfigDocument transformToHttpClientScanConfigDocument(HttpClient httpClient) {
HttpClientScanConfigDocument httpClientScanConfigDocument = new HttpClientScanConfigDocument();
httpClientScanConfigDocument.setMaxRedirects(httpClient.getMaxRedirects().longValue());
httpClientScanConfigDocument.setMaxConsecutiveFailedRequests(httpClient.getMaxConsecutiveFailedRequests().longValue());
httpClientScanConfigDocument.setMaxFailedRequestsPerServer(httpClient.getMaxFailedRequestsPerServer().longValue());
httpClientScanConfigDocument.setMaxRequestCount(httpClient.getMaxRequestCount().longValue());
httpClientScanConfigDocument.setMaxRequestDepth(httpClient.getMaxRequestDepth().longValue());
httpClientScanConfigDocument.setMaxRequestRetries(httpClient.getMaxRequestRetries().longValue());
httpClientScanConfigDocument.setMaxSpriderUrls(httpClient.getMaxSpiderUrls().longValue());
httpClientScanConfigDocument.setSocketReadTimeout(httpClient.getSocketReadTimeout().longValue());
httpClientScanConfigDocument.setUserAgentValue(httpClient.getUserAgentString());
return httpClientScanConfigDocument;
}
public SettingScanConfigDocument transformToSettingScanConfigDocument(ScanSettings scanSettings) {
SettingScanConfigDocument settingScanDocument = new SettingScanConfigDocument();
settingScanDocument.setResponseCodeOverideTestDirectories(scanSettings.getResponseCodeOverrides().isTestAllDirectories());
settingScanDocument.setResponseCodeOverideThreshold(scanSettings.getResponseCodeOverrides().getOverrideThreshold().longValue());
settingScanDocument.setResponseCodeOverideUseAutomatic(scanSettings.getResponseCodeOverrides().isUseAutomaticOverrides());
settingScanDocument.setBaseURIList(scanSettings.getBaseUris().getBaseUri());
settingScanDocument.setForbiddenParamNames(scanSettings.getRestrictions().getForbiddenParameterNames().getParameterName());
settingScanDocument.setForbiddenMimeTypes(scanSettings.getRestrictions().getForbiddenMimeTypes().getMimeTypePattern());
settingScanDocument.setIrrelevantParamNames(scanSettings.getRestrictions().getIrrelevantParameterNames().getParameterName());
settingScanDocument.setUrlBlacklistPatterns(scanSettings.getRestrictions().getUrlBlacklist().getUrlPattern());
settingScanDocument.setUrlWhitelistPatterns(scanSettings.getRestrictions().getUrlWhitelist().getUrlPattern());
settingScanDocument.setImportedSpideredURIList(scanSettings.getImportSpideredUris().getUri());
return settingScanDocument;
}
public ReportScanConfigDocument transformToReportScanConfigDocument(ReportSettings reportSettings) {
ReportScanConfigDocument reportScanConfigDocument = new ReportScanConfigDocument();
reportScanConfigDocument.setFileName(reportSettings.getFilename());
reportScanConfigDocument.setMinimumSeverity(Severity.getSeverity(reportSettings.getMinSeverity()));
reportScanConfigDocument.setReportFormat(ReportFormat.getReportFormat(reportSettings.getFormat()));
reportScanConfigDocument.setAutoReportGeneration(reportSettings.isAutoReportGeneration());
return reportScanConfigDocument;
}
public SessionSettingScanConfigDocument transformToSessionSettingScanConfigDocument(SessionSettings sessionSettings) {
SessionSettingScanConfigDocument sessionConfigDocument = new SessionSettingScanConfigDocument();
sessionConfigDocument.setUserName(sessionSettings.getLogin().getUsername());
sessionConfigDocument.setPassword(sessionSettings.getLogin().getPassword());
sessionConfigDocument.setUsernameFieldPattern(sessionSettings.getLogin().getUsernameFieldPattern());
sessionConfigDocument.setPasswordFieldPattern(sessionSettings.getLogin().getPasswordFieldPattern());
sessionConfigDocument.setKnownSessionIdPatterns(sessionSettings.getSessionTracking().getKnownSessionIdlist().getIdPattern());
return sessionConfigDocument;
}
public Map<Long, TestModuleScanConfigDocument> transformToMappedTestModuleScanConfigDocument(TestModules testModules) {
Map<Long, TestModuleScanConfigDocument> testModuleMap = new HashMap<Long, TestModuleScanConfigDocument>();
for (TestModule module : testModules.getTestModule()) {
TestModuleScanConfigDocument testModuleScanConfigDocument = new TestModuleScanConfigDocument();
testModuleScanConfigDocument.setModuleName(module.getModuleName());
testModuleScanConfigDocument.setModuleNumber(module.getModuleNumber().longValue());
testModuleScanConfigDocument.setEnabled(module.isEnabled());
List<TestModuleOptionDocument> optionDocuments = new ArrayList<TestModuleOptionDocument>();
for (Options option : module.getOptions()) {
TestModuleOptionDocument testModuleOptionDocument = new TestModuleOptionDocument();
testModuleOptionDocument.setOptionName(option.getOptionName());
testModuleOptionDocument.setOptionValue(option.getOptionValue());
testModuleOptionDocument.setOptionGroup(option.getGroup());
testModuleOptionDocument.setOptionType(option.getType());
optionDocuments.add(testModuleOptionDocument);
}
testModuleScanConfigDocument.setOptions(optionDocuments);
testModuleMap.put(testModuleScanConfigDocument.getModuleNumber(), testModuleScanConfigDocument);
}
return testModuleMap;
}
}