package pFinal; /** * * @author LSI, curso 2010/2011 * */ public class GestorEmpleados { private ListaEmpleados listaEmpleados = new ListaEmpleados(); /** * Devuelve el impuesto que tiene que pagar el empleado. * @param e empleado * @return impuesto a pagar */ public int getImpuesto(IEmpleado e){ ICalculadorFiscal aux; if(e.getDatosPersonales().getComunidad() == Constantes.Madrid){ aux = new CalculadorFiscalMadrid(e); } else if(e.getDatosPersonales().getComunidad() == Constantes.Murcia){ aux = new CalculadorFiscalMurcia(e); } else{ aux = new CalculadorPorDefecto(e); } return aux.calcularImpuesto(); } /** * Da de alta a un empleado. * @param e empleado a dar de alta. * @return Constantes.NoError si todo va bien, sino código de error definido en Constantes. */ public int altaEmpleado(IEmpleado e) { if(listaEmpleados.estaEmpleado(e)){ return Constantes.ErrEmpleadoYaIncluido; }else{ listaEmpleados.aniadirEmpleado(e); } return Constantes.NoError; } /** * Da de baja a un empleado. * @param e empleado a dar de baja. * @return Constantes.NoError si todo va bien, sino código de error definido en Constantes. */ public int bajaEmpleado(IEmpleado e) { if(!listaEmpleados.estaEmpleado(e)){ return Constantes.ErrNoExisteEmpleado; }else{ listaEmpleados.borrarEmpleado(e); } return Constantes.NoError; } /** * Da de baja a un empleado. * @param id identificar del empleado a dar de baja. * @return Constantes.NoError si todo va bien, sino código de error definido en Constantes. */ public int bajaEmpleado(int id) { if(!listaEmpleados.estaEmpleado(id)){ return Constantes.ErrNoExisteEmpleado; }else{ listaEmpleados.borrarEmpleado(id); } return Constantes.NoError; } /** * Obtiene un empleado a partir de su código. * @param id identificar del empleado. * @return el empleado o null si no está dado de alta en el gestor. */ public IEmpleado getEmpleado(int id) { return listaEmpleados.getEmpleado(id); } /** * Imprime por consola los nombres de todos los empleados. */ public void listarNombresEmpleados(){ IEmpleado[] listadoCompleto = listaEmpleados.getEmpleados(); for (int i = 0; i < listadoCompleto.length; i++){ System.out.println(listadoCompleto[i].getDatosPersonales().getNombre()); } } /** * Muestra por consola los datos de todos los empleados dados de alta. */ public void mostrarDatosEmpleados(){ IEmpleado[] listadoCompleto = listaEmpleados.getEmpleados(); for(int i = 0; i < listadoCompleto.length; i++){ System.out.println("-------------------------------------\n" + "Nombre: " + listadoCompleto[i].getDatosPersonales().getNombre() + "\n" + "CA: " + Constantes.getNombreComunidad(listadoCompleto[i].getDatosPersonales().getComunidad()) + "\n" + "Hijos: " + listadoCompleto[i].getDatosPersonales().getNroHijos() + "\n" + "Paga(M): " + listadoCompleto[i].getPagaMensual() + "\n" + "Paga(A): " + listadoCompleto[i].getPagaAnual() + "\n" + "-------------------------------------\n"); } } /** * Imprime por pantalla el nombres de los empleados seguidos por el * resumen de datos fiscales: * * Carmelo Cotón -> tipo: nomina. ganacias:4500 impuesto: 17 * Aitor Menta -> tipo: comision. ganacias:9002 impuesto:290 * ... */ public void mostrarResumenFiscal(){ String tipo = null; IEmpleado [] emp = listaEmpleados.getEmpleados(); for(int i = 0; i < listaEmpleados.nroEmpleados(); i++){ if(emp[i] instanceof EmpleadoNomina){ tipo = "nomina."; } else if(emp[i] instanceof EmpleadoHoras){ tipo = "horas."; } else if(emp[i] instanceof EmpleadoComision){ tipo = "comision."; } System.out.println(emp[i].getDatosPersonales().getNombre() + " -> "+ "tipo: " + tipo + "\t\t" + "ganancias (M): " + emp[i].getPagaMensual() + "\t\t" + "ganancias (A): " + emp[i].getPagaAnual() + "\t\t" + "impuesto: " + getImpuesto(emp[i]) ); } } }