Blame view

src/kernel/function/Function.java 1.56 KB
2e8fbd04   Remi   global refactor
1
2
3
4
  package kernel.function;
  
  import kernel.Cell;
  import kernel.Formula;
94ba86ff   Remi   Auto stash before...
5
6
  import kernel.Grid;
  import kernel.LanguageEnum;
2e8fbd04   Remi   global refactor
7
  
eb07e5e3   [mandjemb]   avec serialisation
8
  import java.io.Serializable;
94ba86ff   Remi   Auto stash before...
9
  import java.util.HashMap;
5731029f   Remi   merge
10
  import java.util.Iterator;
94ba86ff   Remi   Auto stash before...
11
12
13
  import java.util.List;
  import java.util.Map;
  import java.util.stream.Collectors;
2e8fbd04   Remi   global refactor
14
  
eb07e5e3   [mandjemb]   avec serialisation
15
  abstract public class Function implements Formula,Serializable {
2e8fbd04   Remi   global refactor
16
  
5731029f   Remi   merge
17
18
      public Map<LanguageEnum, String> names = new HashMap<>();
      public List<Cell> listCells;
2e8fbd04   Remi   global refactor
19
  
94ba86ff   Remi   Auto stash before...
20
21
22
      public Function(List<Cell> listCells) {
          this.listCells = listCells;
      }
2e8fbd04   Remi   global refactor
23
24
25
  
      abstract public Double eval();
  
94ba86ff   Remi   Auto stash before...
26
27
28
29
30
31
32
33
34
35
36
37
38
39
      public String getDevelopedFormula() {
          return names.get(Grid.language) + "("
                  + this.listCells.stream()
                  .map(Cell::getDevelopedFormula)
                  .collect(Collectors.joining(",")) + ")";
      }
  
      public String toString() {
          return names.get(Grid.language) + "("
                  + this.listCells.stream()
                  .map(Cell::getId)
                  .collect(Collectors.joining(",")) + ")";
      }
  
2e8fbd04   Remi   global refactor
40
      public Boolean createCycle(Cell cell) {
5731029f   Remi   merge
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
          boolean cycle = false;
          if (!this.listCells.contains(cell)) {
              Iterator<Cell> it = listCells.iterator();
              while (it.hasNext() && !cycle) {
                  Cell currentCell = it.next();
                  if (currentCell.containFormula()) {
                      cycle = currentCell.getFormula().createCycle(cell);
                  }
              }
              return cycle;
          } else
              return true;
      }
  
      public List<Cell> getUtilisedCells() {
218ff5c4   [mandjemb]   SERIALIZATION 2.0
56
57
  		return this.listCells;
  	}
2e8fbd04   Remi   global refactor
58
  }