Project

General

Profile

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

git_sitools_idoc / sitools-idoc / hesiod / javaExt / src / fr / ias / sitools / converters / FileSizeConverter.java @ 779bac69

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6

    
7
package fr.ias.sitools.converters;
8

    
9
import fr.cnes.sitools.common.validator.ConstraintViolation;
10
import fr.cnes.sitools.common.validator.ConstraintViolationLevel;
11
import fr.cnes.sitools.common.validator.Validator;
12
import fr.cnes.sitools.dataset.converter.business.AbstractConverter;
13
import fr.cnes.sitools.dataset.converter.model.ConverterParameter;
14
import fr.cnes.sitools.dataset.converter.model.ConverterParameterType;
15
import fr.cnes.sitools.datasource.jdbc.model.AttributeValue;
16
import fr.cnes.sitools.datasource.jdbc.model.Record;
17
import java.util.HashSet;
18
import java.util.Map;
19
import java.util.Set;
20
import java.util.logging.Level;
21
import java.util.logging.Logger;
22

    
23
/**
24
 *
25
 * @author Marc
26
 */
27
public class FileSizeConverter extends AbstractConverter {
28
    
29
    /** Class logger */
30
    private static final Logger LOGGER = Logger.getLogger(FileSizeConverter.class.getName());
31

    
32
    public FileSizeConverter() {
33
        
34
        this.setName("FileSizeConverter");
35
        this.setDescription("A converter applying an unit conversion from bytes into Kb or Mb or Gb");
36
        this.setClassAuthor("Marc NICOLAS");
37
        this.setClassOwner("IAS");
38
        this.setClassVersion("0.1");
39
        
40
        ConverterParameter colFileSize = new ConverterParameter("colFileSizeInBytes", "row of dataset with the filesize in bytes",ConverterParameterType.CONVERTER_PARAMETER_IN);
41
        ConverterParameter colFileSizeConvert = new ConverterParameter("colFileSizeConvert", "File Size converted", ConverterParameterType.CONVERTER_PARAMETER_OUT);
42
        this.addParam(colFileSize);
43
        this.addParam(colFileSizeConvert);
44
        
45
        LOGGER.log(Level.INFO, "Converter :{0} version {1}", new Object[] { this.getName(), this.getClassVersion() });
46
    }   
47

    
48
    @Override
49
    public Record getConversionOf(Record record) throws Exception {
50
        Record out = record;
51
        String result = "";
52
        
53
        AttributeValue attrOut = this.getOutParam("colFileSizeConvert", out); 
54
        
55
        AttributeValue attrIn = this.getInParam("colFileSizeInBytes", out);
56
        
57
        if (!isNull(attrIn) && !isNull(attrOut)) {
58
            try{
59
                double input = Double.parseDouble(attrIn.getValue().toString());
60
                if(input>0 && input<1024){
61
                    result = (double)Math.round(input*10)/10 +" o";
62
                }else if(input >= 1024 && input < Math.pow(1024, 2) ){
63
                   result = (double)Math.round((input/1024)*10)/10+" Ko"; 
64
                }else if(input >=Math.pow(1024, 2) && input < Math.pow(1024, 3)){
65
                    result = (double)Math.round((input/Math.pow(1024, 2))*10)/10+" Mo" ;
66
                }else if( input >= Math.pow(1024, 3) && input < Math.pow(1024, 4)){
67
                    result = (double)Math.round((input/Math.pow(1024, 3))*10)/10+" Go" ;
68
                }
69
                
70
                if(!result.isEmpty()){
71
                    attrOut.setValue(result);
72
                }
73
            }catch (Exception e) {
74
                attrOut.setValue(Double.NaN);
75
            }
76
        }
77
        
78
        return out;
79
    }
80

    
81
   @Override
82
  public Validator<AbstractConverter> getValidator() {
83
    // TODO Auto-generated method stub
84
    return new Validator<AbstractConverter>() {
85

    
86
      @Override
87
      public Set<ConstraintViolation> validate(AbstractConverter item) {
88
        Set<ConstraintViolation> constraints = new HashSet<ConstraintViolation>();
89
        Map<String, ConverterParameter> params = item.getParametersMap();
90
        ConverterParameter param = params.get("colFileSizeInBytes");
91
        
92
        if(param.getAttachedColumn().isEmpty()){
93
          ConstraintViolation constraint = new ConstraintViolation();
94
          constraint.setMessage("You must choose the column with filesize in bytes data");
95
          constraint.setLevel(ConstraintViolationLevel.CRITICAL);
96
          constraint.setValueName(param.getName());
97
          constraints.add(constraint);
98
        }
99
        
100
        param = params.get("colFileSizeConvert");
101
        
102
        if(param.getAttachedColumn().isEmpty()){
103
          ConstraintViolation constraint = new ConstraintViolation();
104
          constraint.setMessage("You must choose the output column");
105
          constraint.setLevel(ConstraintViolationLevel.CRITICAL);
106
          constraint.setValueName(param.getName());
107
          constraints.add(constraint);
108
        }
109
        
110
        return constraints;
111
      }
112
    };
113
  }
114

    
115
    
116
}