package imc;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.ParseException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.Response;
@WebServlet("/ControleClinica")
public class ControleClinica extends HttpServlet {
private static final long serialVersionUID = 1L;
private Clinica clinica = new Clinica("Clinica ADS");
private Paciente selecionado;
private String aviso;
public ControleClinica() {
if (Paciente.gerador == 0) {
try {
deserializar();
} catch (Exception e) {
aviso = "Erro buscando dados";
}
}
// Paciente p = new Paciente("Pedro Renan", "26/05/1999", 'M', 65f, 1.75f);
// Paciente q = new Paciente("John Kim", "27/02/1948", 'M', 69f, 1.82f);
// Paciente r = new Paciente("Martha Martineau", "18/01/1927", 'F', 51f, 1.63f);
// Paciente s = new Paciente("Cesar Newton", "23/06/1986", 'M', 81f, 1.84f);
// Paciente t = new Paciente("Ana Carollyna", "19/03/1999", 'F', 49f, 1.64f);
// Paciente u = new Paciente("Gary Perez", "23/08/2014", 'M', 14f, 0.88f);
// Paciente v = new Paciente("John Cox", "26/08/2015", 'M', 11f, 0.80f);
// Paciente w = new Paciente("Giovanna Barbosa", "04/01/1974", 'F', 64f, 1.69f);
//
// clinica.clear();
//
// clinica.add(p);
// clinica.add(q);
// clinica.add(r);
// clinica.add(s);
// clinica.add(t);
// clinica.add(u);
// clinica.add(v);
// clinica.add(w);
//
// try {
// serializar();
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String arquivo = "formClinica.jsp";
String acao = request.getParameter("acao");
if ("delete".equals(acao)) {
String id = request.getParameter("id");
arquivo = "formClinica.jsp";
try {
paciente(Integer.parseInt(id));
if (selecionado != null) {
clinica.retira(selecionado);
this.selecionado = null;
clinica.getRelatorio();
}
} catch (Exception e) {
aviso = "Erro buscando paciente para deletar;";
}
}
try {
serializar();
} catch (Exception e) {
aviso = "Erro buscando paciente para deletar;";
}
RequestDispatcher rd = request.getRequestDispatcher(arquivo);
rd.forward(request, response);
}
public String getRelatorio() {
return clinica.getRelatorio();
}
public void setPaciente(String id) {
try {
if (id != null && !"".equals(id.trim())) {
aviso = "";
try {
paciente(Integer.parseInt(id));
} catch (Exception e) {
aviso = "Código inválido";
}
} else {
limpa();
}
} catch (Exception e) {
//
}
}
private void limpa() {
paciente(0);
aviso = "";
setNome("");
setNascimento("");
setPeso("");
setAltura("");
setSexo(" ");
}
public void setNovo(String novo) {
aviso = "";
if (!"".equals(novo)) {
this.selecionado = new Paciente(novo, "", '?', 0, 0);
clinica.add(this.selecionado);
}
}
public String getNomeClinica() {
return clinica.getNomeClinica();
}
public String getAviso() {
return aviso;
}
public Paciente getSelecionado() {
return this.selecionado;
}
public String getNome() {
return selecionado != null ? selecionado.getNome() : "";
}
public String getNascimento() throws ParseException {
return selecionado != null ? selecionado.getDtNascimento() : "";
}
public String getDiagnostico() {
return selecionado != null ? selecionado.getImc().diagnostico() : "";
}
public String getSexo() {
return selecionado != null ? selecionado.getSexo() + "" : "";
}
public void setSexo(String sexo) {
if (selecionado != null && sexo.length() > 0) {
char s = sexo.toUpperCase().charAt(0);
if (s == 'F' || s == 'M') {
this.selecionado.setSexo(s);
} else {
aviso = "Sexo deve ser F ou M";
clinica.retira(this.selecionado);
this.selecionado = null;
}
}
}
public String getImc() {
return selecionado != null ? selecionado.getImc().calcImc() + "" : "";
}
public void setNome(String nome) {
if (selecionado != null && !"".equals(nome))
this.selecionado.setNome(nome);
}
public void setNascimento(String data) {
if (selecionado != null && !"".equals(data))
this.selecionado.setDtNascimento(data);
}
public void setPeso(String peso) {
try {
if (selecionado != null && !"".equals(peso)) {
this.aviso = "";
this.selecionado.setPeso(Float.parseFloat(peso));
}
} catch (Exception e) {
this.aviso = "Valor do peso inválido";
}
}
public String getPeso() {
return selecionado != null ? this.selecionado.getPeso() + "" : "";
}
public String getAltura() {
return selecionado != null ? this.selecionado.getAltura() + "" : "";
}
public void setAltura(String altura) {
try {
if (selecionado != null && !"".equals(altura)) {
this.aviso = "";
this.selecionado.setAltura(Float.parseFloat(altura));
}
} catch (Exception e) {
this.aviso = "Valor da altura inválida";
clinica.retira(this.selecionado);
this.selecionado = null;
}
}
public String getId() {
return selecionado != null ? selecionado.getId() + "" : "";
}
public void serializar() throws Exception {
if (clinica.getPacientes().size() > 0) {
FileOutputStream outFile = new FileOutputStream("C:\\Teste\\DadosClinica.dat");
ObjectOutputStream s = new ObjectOutputStream(outFile);
s.writeObject(clinica);
s.close();
}
}
public void setSalvar(String dummy) {
try {
serializar();
} catch (Exception e) {
aviso = "Erro: " + e.getMessage();
}
}
public void deserializar() throws Exception {
File file = new File("C:\\Teste\\DadosClinica.dat");
if (file.exists()) {
FileInputStream inFile = new FileInputStream("C:\\Teste\\DadosClinica.dat");
ObjectInputStream d = new ObjectInputStream(inFile);
clinica = (Clinica) d.readObject();
d.close();
clinica.getRelatorio();
Paciente.setGerador(clinica.pegaMaiorId());
}
}
public void paciente(int idPaciente) {
selecionado = null;
if (0 == idPaciente) {
return;
}
aviso = "";
for (Paciente paciente : clinica.getPacientes()) {
if (idPaciente == paciente.getId()) {
selecionado = paciente;
return;
}
}
this.aviso = "Nao achei o paciente código: " + idPaciente + " " + clinica.getPacientes().size();
}
}