Blame view

src/kernel/function/Function.java 1.85 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;
94ba86ff   Remi   Auto stash before...
10
11
12
  import java.util.List;
  import java.util.Map;
  import java.util.stream.Collectors;
2e8fbd04   Remi   global refactor
13
  
eb07e5e3   [mandjemb]   avec serialisation
14
  abstract public class Function implements Formula,Serializable {
2e8fbd04   Remi   global refactor
15
  
1ff9c9a9   [mandjemb]   Recommandation pr...
16
17
18
  
  	private static final long serialVersionUID = 1L;
  	public Map<LanguageEnum, String> names = new HashMap<>();
5731029f   Remi   merge
19
      public List<Cell> listCells;
2e8fbd04   Remi   global refactor
20
  
94ba86ff   Remi   Auto stash before...
21
22
23
      public Function(List<Cell> listCells) {
          this.listCells = listCells;
      }
2e8fbd04   Remi   global refactor
24
  
1ff9c9a9   [mandjemb]   Recommandation pr...
25
      abstract public double eval();
2e8fbd04   Remi   global refactor
26
  
94ba86ff   Remi   Auto stash before...
27
28
29
30
31
32
33
34
35
36
37
38
39
40
      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(",")) + ")";
      }
  
1ff9c9a9   [mandjemb]   Recommandation pr...
41
42
43
44
45
46
47
48
49
50
      public boolean createCycle(Cell cell) {
          
          if (!this.listCells.contains(cell)) 
              for(Cell currentCell:this.listCells)
              	return currentCell.containFormula() && currentCell.getFormula().createCycle(cell);
  
  		return true;
      }
  
    /*  
2e8fbd04   Remi   global refactor
51
      public Boolean createCycle(Cell cell) {
5731029f   Remi   merge
52
53
54
55
56
57
58
59
60
61
62
63
64
          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;
      }
1ff9c9a9   [mandjemb]   Recommandation pr...
65
66
      
    */  
5731029f   Remi   merge
67
      public List<Cell> getUtilisedCells() {
218ff5c4   [mandjemb]   SERIALIZATION 2.0
68
69
  		return this.listCells;
  	}
2e8fbd04   Remi   global refactor
70
  }