use of org.asqatasun.entity.audit.TestSolution in project Asqatasun by Asqatasun.
the class CriterionStatisticsDAOImpl method findCriterionStatisticsByWebResource.
@Override
public Collection<CriterionStatistics> findCriterionStatisticsByWebResource(WebResource webResource, String theme, Collection<String> testSolutions) {
boolean hasTheme = false;
if (theme != null && !StringUtils.equals(theme, selectAllThemeKey)) {
hasTheme = true;
}
boolean hasTestSolution = false;
if (!testSolutions.isEmpty()) {
hasTestSolution = true;
}
StringBuilder strb = new StringBuilder();
strb.append("SELECT cs FROM ");
strb.append(getEntityClass().getName());
strb.append(" cs ");
strb.append(" JOIN cs.webResourceStatistics wrs ");
if (hasTheme) {
strb.append(" JOIN cs.criterion cr ");
}
strb.append(" WHERE wrs.webResource=:webResource ");
if (hasTheme) {
strb.append(" AND cr.theme.code=:theme ");
}
if (hasTestSolution) {
strb.append(" AND cs.criterionResult IN (:testSolution) ");
}
Query query = entityManager.createQuery(strb.toString());
query.setParameter("webResource", webResource);
if (hasTestSolution) {
Collection<TestSolution> solutions = new ArrayList<TestSolution>();
for (String solution : testSolutions) {
solutions.add(TestSolution.valueOf(solution));
}
query.setParameter("testSolution", solutions);
}
if (hasTheme) {
query.setParameter("theme", theme);
}
try {
return query.getResultList();
} catch (NoResultException e) {
return null;
}
}
use of org.asqatasun.entity.audit.TestSolution in project Asqatasun by Asqatasun.
the class ContrastChecker method checkDomElements.
/**
*
* @param sspHandler
* @param domElements
* @param testSolutionHandler
*
* @throws ContrastCheckerParseResultException
*/
private void checkDomElements(SSPHandler sspHandler, Collection<DomElement> domElements, TestSolutionHandler testSolutionHandler) throws ContrastCheckerParseResultException {
for (DomElement domElement : domElements) {
// to "-1"
if (isElementPartOfTheScope(domElement)) {
String bgColor = domElement.getBgColor();
String fgColor = domElement.getFgColor();
if (ContrastHelper.isColorTestable(fgColor) && ContrastHelper.isColorTestable(bgColor)) {
elementCounter++;
Double contrast = ContrastHelper.getConstrastRatio(fgColor, bgColor);
if (contrast < contrastRatio) {
LOGGER.debug(" cssPath " + domElement.getPath() + " " + +contrast);
DecimalFormatSymbols decimalSymbol = new DecimalFormatSymbols(Locale.getDefault());
decimalSymbol.setDecimalSeparator('.');
TestSolution elementSolution = createRemarkOnBadContrastElement(sspHandler, domElement, new DecimalFormat("#.00", decimalSymbol).format(contrast));
testSolutionHandler.addTestSolution(elementSolution);
} else {
LOGGER.debug(" good luminosity " + domElement.getPath() + " " + +contrast);
}
} else {
elementCounter++;
createNmiRemarkForManualCheckElement(sspHandler, domElement);
testSolutionHandler.addTestSolution(TestSolution.NEED_MORE_INFO);
LOGGER.debug(" nmi " + domElement.getPath());
}
}
}
}
use of org.asqatasun.entity.audit.TestSolution in project Asqatasun by Asqatasun.
the class ContrastChecker method createRemarkOnBadContrastElement.
/**
*
* @param sspHandler
* @param domElement
* @param contrast
* @return the TestSolution
*/
private TestSolution createRemarkOnBadContrastElement(SSPHandler sspHandler, DomElement domElement, String contrast) throws ContrastCheckerParseResultException {
TestSolution testSolution;
String msgCode;
if (domElement.isHidden()) {
// if the result is hidden, the result is NEED_MORE_INFO
testSolution = TestSolution.NEED_MORE_INFO;
msgCode = BAD_CONTRAST_HIDDEN_ELEMENT_MSG;
} else if (alternativeContrastMechanismPresent) {
// An alternative contrast mechanism is provided
testSolution = TestSolution.NEED_MORE_INFO;
msgCode = BAD_CONTRAST_BUT_ALT_MECHANISM_MSG;
} else {
// By default the result is failed
testSolution = TestSolution.FAILED;
msgCode = BAD_CONTRAST_MSG;
}
Element element = DomElementExtractor.getElementFromDomElement(domElement, sspHandler);
if (element != null) {
Collection<EvidenceElement> eeList = new LinkedList<>();
eeList.add(getEvidenceElement(FG_COLOR_EE, domElement.getFgColor()));
eeList.add(getEvidenceElement(BG_COLOR_EE, domElement.getBgColor()));
eeList.add(getEvidenceElement(CONTRAST_EE, contrast));
addSourceCodeRemark(testSolution, element, msgCode, eeList);
} else {
// the test returns not_tested to avoid false positive results
throw new ContrastCheckerParseResultException();
}
return testSolution;
}
use of org.asqatasun.entity.audit.TestSolution in project Asqatasun by Asqatasun.
the class ChildElementPresenceChecker method checkChildElementPresence.
/**
* This methods checks whether elements have a child element of a given
* type.
*
* @param elementToTest
* @param elements
* @param testSolutionHandler
*/
private void checkChildElementPresence(String elementToTest, Elements elements, TestSolutionHandler testSolutionHandler) {
if (elements.isEmpty()) {
testSolutionHandler.addTestSolution(TestSolution.NOT_APPLICABLE);
return;
}
TestSolution testSolution = TestSolution.PASSED;
for (Element el : elements) {
if (el.getElementsByTag(elementToTest).size() >= minimumNumberOfChildRequired) {
testSolution = setTestSolution(testSolution, getSuccessSolution());
addSourceCodeRemark(getSuccessSolution(), el, getSuccessMsgCode());
} else {
testSolution = setTestSolution(testSolution, getFailureSolution());
addSourceCodeRemark(getFailureSolution(), el, getFailureMsgCode());
}
}
testSolutionHandler.addTestSolution(testSolution);
}
use of org.asqatasun.entity.audit.TestSolution in project Asqatasun by Asqatasun.
the class RuleHelper method synthesizeTestSolutionCollection.
/**
*
* @param testSolutionCollection
* the test solution collection to synthesize
* @return the synthesis of the test solution collection
*/
public static TestSolution synthesizeTestSolutionCollection(Collection<TestSolution> testSolutionCollection) {
boolean hasPassed = false;
boolean hasFailed = false;
boolean hasNMI = false;
for (TestSolution result : testSolutionCollection) {
switch(result) {
case PASSED:
hasPassed = true;
break;
case FAILED:
hasFailed = true;
break;
case NEED_MORE_INFO:
hasNMI = true;
break;
default:
}
}
if (hasFailed) {
return TestSolution.FAILED;
}
if (hasNMI) {
return TestSolution.NEED_MORE_INFO;
}
if (hasPassed) {
return TestSolution.PASSED;
}
return TestSolution.NOT_APPLICABLE;
}
Aggregations