source: autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefect.java @ 1032

Last change on this file since 1032 was 1032, checked in by adeicke, 11 years ago

Refactored defectDescription method.

  • Property svn:mime-type set to text/plain
File size: 2.3 KB
Line 
1
2package de.ugoe.cs.autoquest.usability.evaluation.result;
3
4import static java.lang.String.format;
5
6import java.util.List;
7import java.util.Map;
8
9import lombok.AllArgsConstructor;
10import lombok.ExtensionMethod;
11import lombok.Getter;
12
13import org.apache.commons.lang.StringUtils;
14
15import com.google.common.base.CharMatcher;
16import com.google.common.base.Joiner;
17import com.google.common.collect.Lists;
18
19import de.ugoe.cs.autoquest.usability.DefectDescription;
20import de.ugoe.cs.autoquest.usability.ParameterFragment;
21import de.ugoe.cs.autoquest.usability.util.DefectDescriptionExtensionMethods;
22
23@AllArgsConstructor
24@ExtensionMethod({DefectDescriptionExtensionMethods.class})
25public class UsabilityDefect {
26
27    @Getter
28    private UsabilityDefectSeverityLevel severityLevel;
29
30    private DefectDescription defectDescription;
31
32    private Map<String, String> descriptionParametersValues;
33
34    public String defectDescription() {
35        if(defectDescription.containsParameterFragments()) {
36            return assembleDefectDescription();
37        } else {
38            return Joiner.on(" ").skipNulls().join(defectDescription.getTextFragmentOrParameterFragment());
39        }
40    }
41
42    private String assembleDefectDescription() {
43        List<String> descriptionParts =
44                Lists.newArrayListWithCapacity(defectDescription.getTextFragmentOrParameterFragment().size());
45
46        for (Object fragment : defectDescription.getTextFragmentOrParameterFragment()) {
47            if (fragment.isParameterFragment()) {
48                descriptionParts.add(parameterFragmentAsString((ParameterFragment) fragment));
49            } else {
50                 descriptionParts.add(CharMatcher.WHITESPACE.collapseFrom((String) fragment, ' ').trim());
51            }
52        }
53
54        return Joiner.on(' ').join(descriptionParts);
55    }
56
57    private String parameterFragmentAsString(ParameterFragment fragment) {
58        String value = descriptionParametersValues.getValueOrEmptyString(fragment.getParameterName());
59        if (StringUtils.isNotEmpty(value)) {
60            return value;
61        } else {
62            throw new IllegalArgumentException(format("required parameter \"%s\" for usability defect description not provided", fragment.getParameterName()));
63        }
64    }
65
66}
Note: See TracBrowser for help on using the repository browser.