Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.dto;
2
 
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.Collections;
6
import java.util.List;
7
import java.util.Random;
8
 
9
import br.edu.cesmac.core.exception.NegocioException;
10
import br.edu.cesmac.core.util.VerificadorUtil;
11
 
12
public class MegaDTO {
13
 
14
        private Integer primeiroFixo;
15
        private Integer segundoFixo;
16
        private Integer terceiroFixo;
17
        private Integer totalCombinacoes;
18
 
19
        private List<Integer> numerosEscolhidos = new ArrayList<Integer>();
20
        private List<MegaCombinacaoDTO> combinacoes = new ArrayList<MegaCombinacaoDTO>();
21
 
22
        public Integer getPrimeiroFixo() {
23
                return primeiroFixo;
24
        }
25
        public void setPrimeiroFixo(Integer primeiroFixo) {
26
                this.primeiroFixo = primeiroFixo;
27
        }
28
 
29
        public Integer getSegundoFixo() {
30
                return segundoFixo;
31
        }
32
        public void setSegundoFixo(Integer segundoFixo) {
33
                this.segundoFixo = segundoFixo;
34
        }
35
 
36
        public Integer getTerceiroFixo() {
37
                return terceiroFixo;
38
        }
39
        public void setTerceiroFixo(Integer terceiroFixo) {
40
                this.terceiroFixo = terceiroFixo;
41
        }
42
 
43
        public Integer getTotalCombinacoes() {
44
                return totalCombinacoes;
45
        }
46
        public void setTotalCombinacoes(Integer totalCombinacoes) {
47
                this.totalCombinacoes = totalCombinacoes;
48
        }
49
 
50
        public List<Integer> getNumerosEscolhidos() {
51
                return numerosEscolhidos;
52
        }
53
        public void setNumerosEscolhidos(List<Integer> numerosEscolhidos) {
54
                this.numerosEscolhidos = numerosEscolhidos;
55
        }
56
 
57
        public void adicionarNumero(Integer numero) {
58
                if (VerificadorUtil.estaNulo(numero)) {
59
                        throw new NegocioException("FAVOR INFORMAR O NÚMERO");
60
                }
61
                if (getNumerosEscolhidos().contains(numero)) {
62
                        throw new NegocioException("NÚMERO JÁ ADICIONADO ANTERIORMENTE");
63
                }
64
                getNumerosEscolhidos().add(numero);
65
        }
66
 
67
        public void retirarNumero(Integer numero) {
68
                getNumerosEscolhidos().remove(numero);
69
        }
70
 
71
        public List<MegaCombinacaoDTO> getCombinacoes() {
72
                return combinacoes;
73
        }
74
        public void setCombinacoes(List<MegaCombinacaoDTO> combinacoes) {
75
                this.combinacoes = combinacoes;
76
        }
77
 
78
        private void adicionarCombinacao(MegaCombinacaoDTO megaCombinacaoDTO) {
79
                Boolean repetida = false;
80
                for (MegaCombinacaoDTO combinacao : this.getCombinacoes()) {
81
                        if (combinacao.getSequencia().containsAll(megaCombinacaoDTO.getSequencia())) {
82
                                repetida = true;
83
                                break;
84
                        }
85
                }
86
                if (!repetida || this.getCombinacoes().isEmpty()) {
87
                        this.getCombinacoes().add(megaCombinacaoDTO);
88
                }
89
        }
90
 
91
        public void gerarCombinacoes() {
92
                Boolean criar = true;
93
                MegaDTO mega = new MegaDTO();
94
                Integer indicador = 0;
95
                while (criar) {
96
                        MegaCombinacaoDTO megaCombinacaoDTO = new MegaCombinacaoDTO();
97
                        if (VerificadorUtil.naoEstaNulo(getPrimeiroFixo())) {
98
                                megaCombinacaoDTO.getSequencia().add(getPrimeiroFixo());
99
                        }
100
                        if (VerificadorUtil.naoEstaNulo(getSegundoFixo())) {
101
                                megaCombinacaoDTO.getSequencia().add(getSegundoFixo());
102
                        }
103
                        if (VerificadorUtil.naoEstaNulo(getTerceiroFixo())) {
104
                                megaCombinacaoDTO.getSequencia().add(getTerceiroFixo());
105
                        }
106
 
107
                        while (megaCombinacaoDTO.getSequencia().size() < 6) {
108
                                Random gerador = new Random();
109
                                Integer numeroGerado = gerador.nextInt(60);
110
                                if (getNumerosEscolhidos().contains(numeroGerado)) {
111
                                        megaCombinacaoDTO.adicionarNumero(numeroGerado);
112
                                }
113
                        }
114
 
115
//                      System.out.println("ADICIONANDO: " + megaCombinacaoDTO.getSequencia());
116
 
117
                        mega.adicionarCombinacao(megaCombinacaoDTO);
118
                        indicador++;
119
                        if (VerificadorUtil.naoEstaNulo(getTotalCombinacoes())) {
120
                                if (getTotalCombinacoes() <= indicador) {
121
                                        System.out.println(indicador);
122
                                        criar = false;
123
                                }
124
                        } else if (indicador > 100000) {
125
//                              System.out.println(indicador);
126
                                criar = false;
127
                        }
128
                }
129
 
130
                StringBuilder combinacoes = new StringBuilder();
131
                combinacoes.append("COMBINAÇÕES:");
132
                for (MegaCombinacaoDTO combinacao : mega.getCombinacoes()) {
133
                        combinacoes.append(combinacao.getSequencia());
134
                }
135
                this.setCombinacoes(mega.getCombinacoes());
136
 
137
        }
138
 
139
        public static void main(String[] args) {
140
                List<Integer> escolhidos = Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20));
141
 
142
                Integer primeiroFixo = 10;
143
                Integer segundoFixo = 12;
144
                Integer terceiroFixo = 14;
145
 
146
                Boolean criar = true;
147
                MegaDTO mega = new MegaDTO();
148
                Integer indicador = 0;
149
                while (criar) {
150
                        MegaCombinacaoDTO megaCombinacaoDTO = new MegaCombinacaoDTO();
151
                        if (VerificadorUtil.naoEstaNulo(primeiroFixo)) {
152
                                megaCombinacaoDTO.getSequencia().add(primeiroFixo);
153
                        }
154
                        if (VerificadorUtil.naoEstaNulo(segundoFixo)) {
155
                                megaCombinacaoDTO.getSequencia().add(segundoFixo);
156
                        }
157
                        if (VerificadorUtil.naoEstaNulo(terceiroFixo)) {
158
                                megaCombinacaoDTO.getSequencia().add(terceiroFixo);
159
                        }
160
 
161
                        while (megaCombinacaoDTO.getSequencia().size() < 6) {
162
                                Random gerador = new Random();
163
                                Integer numeroGerado = gerador.nextInt(60);
164
                                if (escolhidos.contains(numeroGerado)) {
165
                                        megaCombinacaoDTO.adicionarNumero(numeroGerado);
166
                                }
167
                        }
168
 
169
                        mega.adicionarCombinacao(megaCombinacaoDTO);
170
                        indicador++;
171
                        if (indicador > 20000) {
172
                                System.out.println(indicador);
173
                                criar = false;
174
                        }
175
                }
176
 
177
                System.out.println("COMBINAÇÕES");
178
                for (MegaCombinacaoDTO combinacao : mega.getCombinacoes()) {
179
                        System.out.println(combinacao.getSequencia());
180
                }
181
        }
182
 
183
}