# Sistema de Controle de Estoque ## Funcionalidades - Consumir um csv com a lista de produtos - Inserir produtos - Atualizar produtos (nome, quantidade, preço e categoria) - Excluir produtos - Gerar um csv atualizado - Listar e ordenar produtos por: categoria, preço, datas, nome ## Classe `Product` Representa um produto no inventário. ### Campos - `name`: O nome do produto. - `quantity`: A quantidade do produto no estoque. - `price`: O preço do produto. - `creationDate`: A data de criação do produto. - `category`: A categoria do produto. - `updateDate`: A data da última atualização do produto. ### Métodos - `getName()`: Retorna o nome do produto. - `getQuantity()`: Retorna a quantidade do produto. - `getPrice()`: Retorna o preço do produto. - `getCreationDate()`: Retorna a data de criação do produto. - `getCategory()`: Retorna a categoria do produto. - `getUpdateDate()`: Retorna a data da última atualização do produto. --- ## Classe `Inventory` Representa o inventário de produtos. ### Campos - `products`: Uma lista de produtos no inventário. ### Métodos - `addProduct(Product product)`: Adiciona um produto ao inventário. - `removeProduct(Product product)`: Remove um produto do inventário. - `getProducts()`: Retorna a lista de produtos no inventário. - `consumeCSV(String fileName)`: Lê um arquivo CSV e adiciona todos os produtos listados no arquivo ao inventário. - `generateCSV(String fileName)`: Escreve a lista atual de produtos no inventário para um arquivo CSV. - `listAndSortProducts(String sortBy)`: Retorna a lista de produtos no inventário, ordenada por um critério especificado. --- ## Classe `CSVHandler` Fornece métodos para ler e escrever arquivos CSV. ### Métodos - `writeCSV(List<Product> products, String fileName)`: Escreve uma lista de produtos para um arquivo CSV. - `readCSV(String fileName)`: Lê um arquivo CSV e retorna um `Inventory` com os produtos listados no arquivo. --- ## Classe `Main` Executa o programa. ### Métodos - `main(String[] args)`: O ponto de entrada do programa. Cria um novo inventário, consome um arquivo CSV, lista e ordena produtos, e gera um novo arquivo CSV. ---