-
Notifications
You must be signed in to change notification settings - Fork 0
/
Estoque.java
157 lines (156 loc) · 5.5 KB
/
Estoque.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/**
* @author Carlos Henrique Barreto Mareco
*/
public class Estoque {
private Produto[] produtos;
private int quant_produtos;
private String[] categorias;
private int quant_categorias;
private String cont_codigo;
public Estoque(int tamanho_inicial, int tam_cod) {
produtos = new Produto[tamanho_inicial];
this.quant_categorias = 0;
this.quant_produtos = 0;
this.categorias = new String[20];
this.cont_codigo = "";
for(int i = 0; i < tam_cod; i++){
this.cont_codigo += "0";
}
}
public Estoque() {
this(20, 4);
}
public int getQuantProdutos() {
return quant_produtos;
}
public int getQuantCategorias() {
return quant_categorias;
}
public void adicionarCategoria(String categoria) {
if(categoria.equals("")){
throw new IllegalArgumentException("Nome da categoria é inválido.");
} else {
if(this.procuraCategoria(categoria) == null){
if(this.categorias.length > quant_categorias){
this.categorias[quant_categorias] = categoria;
} else {
String[] novoTamanho = new String[quant_categorias+1];
for(int i = 0; i < quant_categorias; i++){
novoTamanho[i] = this.categorias[i];
}
this.categorias = novoTamanho;
this.categorias[quant_categorias] = categoria;
}
this.quant_categorias++;
} else {
throw new IllegalArgumentException("Essa categoria já existe.");
}
}
}
public String procuraCategoria(String categoria) {
String encontrado = null;
for(int i = 0; i < quant_categorias; i++){
if(this.categorias[i].equalsIgnoreCase(categoria)){
encontrado = this.categorias[i];
}
}
return encontrado;
}
public String gerarCodigo() {
int codigo = Integer.parseInt(this.cont_codigo) + 1;
int tam = this.cont_codigo.length()-1-((int)Math.log10(codigo));
this.cont_codigo = "";
for(int i = 0; i < tam; i++){
cont_codigo += "0";
}
this.cont_codigo += "" + codigo;
return this.cont_codigo;
}
public Produto procuraProduto(String codigo) {
Produto encontrado = null;
for(int i = 0; i < this.quant_produtos; i++){
if(this.produtos[i].getCodigo().equals(codigo)){
encontrado = this.produtos[i];
}
}
return encontrado;
}
public int quantProdutosCategoria(String categoria) {
int encontrados = 0;
for(int i = 0; i < this.quant_produtos; i++){
if(produtos[i].getCategoria().equalsIgnoreCase(categoria)){
encontrados++;
}
}
return encontrados;
}
public void expandirEstoque(int quantidade) {
Produto[] novoTamanho = new Produto[produtos.length+quantidade];
for(int i = 0; i < quant_produtos; i++) {
novoTamanho[i] = produtos[i];
}
produtos = novoTamanho;
}
public void adicionarProduto(Produto novo) {
if(produtos.length <= quant_produtos){
this.expandirEstoque(1);
}
produtos[quant_produtos] = novo;
quant_produtos++;
}
public void novoProduto(String nome, double preco, String categoria, int unidades) {
if(procuraCategoria(categoria ) != null){
if(unidades > -1) {
this.adicionarProduto(new Produto(nome, preco, categoria, this.gerarCodigo(), unidades));
} else {
throw new IllegalArgumentException("Quantidade de unidades inválida.");
}
} else {
throw new IllegalArgumentException("Categoria inválida.");
}
}
public void adicionarUnidades(String codigo, int unidades) {
if(unidades > 0){
Produto produto = procuraProduto(codigo);
if(produto != null){
produto.adicionarUnidades(unidades);
} else {
throw new IllegalArgumentException("Produto não encontrado.");
}
} else {
throw new IllegalArgumentException("Quantidade de unidades inválida.");
}
}
public void removerUnidades(String codigo, int unidades) {
if(unidades > 0){
Produto produto = procuraProduto(codigo);
if(produto != null){
produto.removerUnidades(unidades);
} else {
throw new IllegalArgumentException("Produto não encontrado.");
}
} else {
throw new IllegalArgumentException("Quantidade de unidades inválida.");
}
}
public void alterarValorProduto(String codigo, double valor) {
if(valor > 0){
Produto produto = procuraProduto(codigo);
if(produto != null){
produto.setPreco(valor);;
} else {
throw new IllegalArgumentException("Produto não encontrado.");
}
}
}
public String exibirEstoque(int de_pagina, int ate_pagina) {
String retornar = "";
for(int j = de_pagina; j < ate_pagina && j > -1 && j < this.quant_produtos; j++) {
retornar += this.produtos[j].getInformacoes() + "\n\n";
}
return retornar;
}
public Produto getProduto(int indice) {
return this.produtos[indice];
}
}