Project

General

Profile

Download (4.37 KB) Statistics
| Branch: | Revision:

git_sitools_idoc / hesiod / javaExt / src / fr / ias / sitools / filters / basic / GroupCheckBoxMasterLigthCurves.java @ 6552a8ce

1
package fr.ias.sitools.filters.basic;
2

    
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.HashMap;
6
import java.util.List;
7
import org.restlet.Request;
8
import org.restlet.data.Form;
9
import org.restlet.ext.wadl.ParameterInfo;
10
import org.restlet.ext.wadl.ParameterStyle;
11

    
12
import fr.cnes.sitools.common.validator.Validator;
13
import fr.cnes.sitools.dataset.DataSetApplication;
14
import fr.cnes.sitools.dataset.model.Column;
15
import fr.cnes.sitools.dataset.model.DataSet;
16
import fr.cnes.sitools.dataset.model.Operator;
17
import fr.cnes.sitools.dataset.model.Predicat;
18
import fr.cnes.sitools.dataset.plugins.filters.core.AbstractFormFilter;
19
import fr.cnes.sitools.util.SQLUtils;
20

    
21
public class GroupCheckBoxMasterLigthCurves extends AbstractFormFilter {
22
  
23
  /**
24
   * The index of TYPE
25
   */
26
  private static final int TYPE = 0;
27
  /**
28
   * The index of COLUMN
29
   */
30
  private static final int COLUMN = 1;
31
  /**
32
   * The index of Values
33
   */
34
  private static final int VALUES = 2;
35
  /**
36
   * The number of values
37
   */
38
  private static final int NUMBER_OF_VALUES = 4;
39

    
40
  private String[] values;
41
  
42
  private enum TYPE_COMPONENT {
43
    /** DefaultType */
44
    GROUP_CHECKBOX_LIGHTCURVES_COROT
45
  } 
46
  //private static final Logger LOGGER = Logger.getLogger(GroupCheckBoxMasterLigthCurves.class.getName());
47
  
48
  public GroupCheckBoxMasterLigthCurves() {
49
    super();
50
    this.setName("GroupCheckBoxLightCurves");
51
    this.setDescription("Required when using the LightCurves checkbox component");
52
    this.setClassAuthor("MNICOLAS");
53
    this.setClassOwner("IAS");
54
    this.setClassVersion("0.1");
55
    this.setDefaultFilter(true);
56
    
57
    HashMap<String, ParameterInfo> rpd = new HashMap<String, ParameterInfo>();
58

    
59
     ParameterInfo param1 = new ParameterInfo("p[#]", false, "xs:string", ParameterStyle.QUERY, "GROUP_CHECKBOX_LIGHTCURVES_COROT|columnAlias1,columnAlias2" +
60
                     ",columnAlias3,columnAlias4|starChr|starMon|star512|star32");
61
     rpd.put("0", param1);
62
     this.setRequestParamsDescription(rpd);
63
  }
64

    
65
  @Override
66
  public List<Predicat> createPredicats(Request request, List<Predicat> predicats) throws Exception {
67
    DataSetApplication dsApplication = (DataSetApplication) getContext().getAttributes().get("DataSetApplication");
68
    DataSet ds =  dsApplication.getDataSet();
69

    
70
    Form params = request.getResourceRef().getQueryAsForm();
71
    boolean filterExists = true;
72
    int i = 0;
73
    while (filterExists) {
74
      String index = TEMPLATE_PARAM.replace("#", Integer.toString(i++));
75
      String formParam = params.getFirstValue(index);
76
      if (formParam != null) {
77
        String[] parameters = formParam.split("\\|");
78
        TYPE_COMPONENT[] types = TYPE_COMPONENT.values();
79
        Boolean trouve = false;
80
        for (TYPE_COMPONENT typeCmp : types) {
81
          if (typeCmp.name().equals(parameters[TYPE])) {
82
            trouve = true;
83
          }
84
        }
85
        if (trouve) {
86
          if (checkValues(parameters)) {
87
            String[] columnsAlias = parameters[COLUMN].split(",");
88
            ArrayList<Column> columns = new ArrayList<Column>();
89
            for (String columnAlias : columnsAlias) {
90
              Column col = ds.findByColumnAlias(columnAlias);
91
              if (col != null) {
92
                columns.add(col);
93
              }
94
            }
95

    
96
            int k =0;
97
            for(Column col : columns){
98
              Predicat predicat = new Predicat();
99
              predicat.setLeftAttribute(col);
100
              predicat.setNbOpenedParanthesis(0);
101
              predicat.setNbClosedParanthesis(0);
102
              predicat.setCompareOperator(Operator.EQ);
103
              predicat.setRightValue("'" + Boolean.valueOf(SQLUtils.escapeString(values[k])) + "'");
104
              if(!(Boolean.valueOf(SQLUtils.escapeString(values[k])))){
105
                predicats.add(predicat);
106
              }
107
              k++;
108
            }
109
          }
110
        }
111
      }else {
112
        filterExists = false;
113
      }
114
    }
115
   return predicats;
116
  }
117
  
118
  
119
  /**
120
   * Check the number of values
121
   * 
122
   * @param parameters
123
   *          the values
124
   * @return true if the number of values is correct
125
   */
126
  private boolean checkValues(String[] parameters) {
127
    values = Arrays.copyOfRange(parameters, VALUES, VALUES + NUMBER_OF_VALUES);
128
    if (values.length == NUMBER_OF_VALUES) {
129
      return true;
130
    }
131
    return false;
132
  }
133
  
134
  @Override
135
  public Validator<?> getValidator() {
136
    // TODO Auto-generated method stub
137
    return null;
138
  }
139

    
140
}