Coverage Report - pt.digitalis.dif.dem.objects.parameters.rules.ParameterRuleExclusive
 
Classes in this File Line Coverage Branch Coverage Complexity
ParameterRuleExclusive
0%
0/21
0%
0/16
11
 
 1  0
 /**
 2  
  * 2008, Digitalis Informatica. All rights reserved. Distribuicao e Gestao de Informatica, Lda. Estrada de Paco de Arcos
 3  
  * num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999 http://www.digitalis.pt
 4  
  */
 5  
 
 6  
 package pt.digitalis.dif.dem.objects.parameters.rules;
 7  
 
 8  
 import java.util.ArrayList;
 9  
 import java.util.List;
 10  
 
 11  
 import pt.digitalis.dif.dem.interfaces.IStageInstance;
 12  
 import pt.digitalis.dif.dem.objects.parameters.IParameter;
 13  
 import pt.digitalis.dif.dem.objects.parameters.ParameterList;
 14  
 import pt.digitalis.dif.dem.objects.parameters.types.AbstractParameter;
 15  
 import pt.digitalis.dif.exception.objects.ParameterException;
 16  
 
 17  
 /**
 18  
  * Exclusive parameter rule. Validates if the given parameter is not selected along with other exclusive fill parameter.
 19  
  * Only one can have a filled value.
 20  
  * 
 21  
  * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a><br/>
 22  
  * @param <T>
 23  
  *            the parameter base type
 24  
  * @created Mar 31, 2009
 25  
  */
 26  0
 public class ParameterRuleExclusive<T> extends AbstractParameterRule<T> {
 27  
 
 28  
     /**
 29  
      * Gets the validation result for the present parameter
 30  
      * 
 31  
      * @param stage
 32  
      *            the current stage
 33  
      * @param value
 34  
      *            the value to validate
 35  
      * @param initializationInProgress
 36  
      *            T if called within the dif parameter initialization
 37  
      * @param parameter
 38  
      *            the parameter for validation
 39  
      * @return the validation rule validation result
 40  
      * @throws ParameterException
 41  
      *             if the parameter does not exist
 42  
      */
 43  
     public ParameterRuleResult getValidationResult(IStageInstance stage, T value, boolean initializationInProgress,
 44  
             AbstractParameter<T> parameter) throws ParameterException
 45  
     {
 46  0
         List<IParameter<?>> filledParameters = new ArrayList<IParameter<?>>();
 47  
 
 48  0
         if (value == null || getParameters() == null || getParameters().isEmpty())
 49  0
             return new ParameterRuleResult(true);
 50  
 
 51  
         else
 52  
         {
 53  0
             ParameterList list = stage.getParameters().getAllAvailableParameters();
 54  
 
 55  0
             for (String parameterID: getParameters())
 56  
             {
 57  0
                 IParameter<?> param = null;
 58  
                 try
 59  
                 {
 60  0
                     param = list.getParameter(parameterID);
 61  
 
 62  0
                     if (param.getValue(stage.getContext()) != null)
 63  0
                         filledParameters.add(param);
 64  
                 }
 65  0
                 catch (ParameterException e)
 66  
                 {
 67  0
                     filledParameters.add(param);
 68  
                 }
 69  
 
 70  
             }
 71  
 
 72  0
             if (filledParameters.isEmpty())
 73  0
                 return new ParameterRuleResult(true);
 74  
 
 75  
             else
 76  
             {
 77  0
                 StringBuffer buffer = new StringBuffer();
 78  
 
 79  0
                 buffer.append(this.getMessages(stage).get("onlyOne") + ": ");
 80  0
                 buffer.append("\"" + getParameterName(stage, parameterID) + "\"");
 81  
 
 82  0
                 for (IParameter<?> filledParam: filledParameters)
 83  0
                     buffer.append(", \"" + getParameterName(stage, filledParam.getId()) + "\"");
 84  
 
 85  0
                 return new ParameterRuleResult(buffer.toString());
 86  
 
 87  
             }
 88  
         }
 89  
     }
 90  
 }