Changeset 1032


Ignore:
Timestamp:
01/13/13 17:01:54 (11 years ago)
Author:
adeicke
Message:

Refactored defectDescription method.

Location:
autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefect.java

    r1030 r1032  
    22package de.ugoe.cs.autoquest.usability.evaluation.result; 
    33 
     4import static java.lang.String.format; 
     5 
     6import java.util.List; 
    47import java.util.Map; 
    58 
     9import lombok.AllArgsConstructor; 
     10import lombok.ExtensionMethod; 
    611import 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 
    719import de.ugoe.cs.autoquest.usability.DefectDescription; 
    820import de.ugoe.cs.autoquest.usability.ParameterFragment; 
     21import de.ugoe.cs.autoquest.usability.util.DefectDescriptionExtensionMethods; 
    922 
     23@AllArgsConstructor 
     24@ExtensionMethod({DefectDescriptionExtensionMethods.class}) 
    1025public class UsabilityDefect { 
    1126 
     
    1732    private Map<String, String> descriptionParametersValues; 
    1833 
    19     public UsabilityDefect(UsabilityDefectSeverityLevel severityLevel, 
    20                                            DefectDescription recommendationDescription, 
    21                                            Map<String, String> descriptionParametersValues) { 
    22         this.severityLevel = severityLevel; 
    23         this.defectDescription = recommendationDescription; 
    24         this.descriptionParametersValues = descriptionParametersValues; 
     34    public String defectDescription() { 
     35        if(defectDescription.containsParameterFragments()) { 
     36            return assembleDefectDescription(); 
     37        } else { 
     38            return Joiner.on(" ").skipNulls().join(defectDescription.getTextFragmentOrParameterFragment()); 
     39        } 
    2540    } 
    2641 
    27     public String defectDescription() { 
    28         StringBuffer result = new StringBuffer(); 
     42    private String assembleDefectDescription() { 
     43        List<String> descriptionParts =  
     44                Lists.newArrayListWithCapacity(defectDescription.getTextFragmentOrParameterFragment().size()); 
    2945 
    3046        for (Object fragment : defectDescription.getTextFragmentOrParameterFragment()) { 
    31             if (result.length() > 0) { 
    32                 result.append(" "); 
    33             } 
    34  
    35             if (fragment instanceof ParameterFragment) { 
    36                 String value = null; 
    37                 if (descriptionParametersValues != null) { 
    38                     value = 
    39                         descriptionParametersValues.get(((ParameterFragment) fragment) 
    40                             .getParameterName()); 
    41                 } 
    42  
    43                 if (value != null) { 
    44                     result.append(value); 
    45                 } 
    46                 else { 
    47                     throw new IllegalArgumentException("required parameter \"" + 
    48                         ((ParameterFragment) fragment).getParameterName() + 
    49                         "\" for usability defect description not provided"); 
    50                 } 
    51             } 
    52             else { 
    53                 result.append(getFragmentString(fragment)); 
     47            if (fragment.isParameterFragment()) { 
     48                descriptionParts.add(parameterFragmentAsString((ParameterFragment) fragment)); 
     49            } else { 
     50                 descriptionParts.add(CharMatcher.WHITESPACE.collapseFrom((String) fragment, ' ').trim()); 
    5451            } 
    5552        } 
    5653 
    57         return result.toString(); 
     54        return Joiner.on(' ').join(descriptionParts); 
    5855    } 
    5956 
    60     private String getFragmentString(Object fragment) { 
    61         String fragmentStr = fragment.toString().trim(); 
    62  
    63         fragmentStr = fragmentStr.replaceAll("\n", " "); 
    64  
    65         while (fragmentStr.indexOf("  ") > -1) { 
    66             fragmentStr = fragmentStr.replaceAll("  ", " "); 
     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())); 
    6763        } 
    68  
    69         return fragmentStr; 
    7064    } 
    7165 
Note: See TracChangeset for help on using the changeset viewer.