Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package edu.lp2.opencm.application.cli;
- import java.io.PrintStream;
- import java.math.BigDecimal;
- import java.util.Scanner;
- import edu.lp2.opencm.application.Bootstrap;
- import edu.lp2.opencm.application.service.PlanoSaudeService;
- import edu.lp2.opencm.domain.model.PlanoSaude;
- public final class CadastrarPlanoSaude {
- private final PrintStream out;
- private final Scanner in;
- private final PlanoSaudeService planoSaudeService;
- private abstract class ValueReader {
- abstract void set(String value);
- public void read(String prompt, boolean required) {
- while(true) {
- out.printf(prompt);
- try {
- set(in.nextLine());
- break;
- } catch (IllegalArgumentException e) {
- out.printf("%s%n", e.getMessage());
- } catch (NullPointerException e) {
- if (required) {
- out.printf("%s%n", e.getMessage());
- } else {
- break;
- }
- }
- }
- }
- }
- public CadastrarPlanoSaude(PrintStream out, Scanner in, PlanoSaudeService service) {
- this.out = out;
- this.in = in;
- this.planoSaudeService = service;
- }
- public void doMain() {
- final PlanoSaude planoSaude = new PlanoSaude();
- new ValueReader() { void set(String nome) {
- planoSaude.setNome(nome);
- }}.read("Nome do Plano :", true);
- new ValueReader() { void set(String contato) {
- planoSaude.setContato(contato);
- }}.read("Fone Contato (ex: \"(81)1234-5678\"): ", false);
- new ValueReader() { void set(String precoPadrao) {
- planoSaude.setPrecoPadrao(new BigDecimal(precoPadrao));
- }}.read("Preço Padrão da Consulta: ", false);
- planoSaudeService.add(planoSaude);
- }
- public static void main(String args[]) {
- Bootstrap app = new Bootstrap();
- try {
- app.startCli();
- app.pico.getComponent(CadastrarPlanoSaude.class).doMain();
- } finally {
- app.stop();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement