-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Description
- Implementacion de interfaces y clases sugeridad
'
// Implementación concreta
public class EmployeeValidatorImpl implements EmployeeValidator {
@Override
public boolean validate(Employee employee) {
boolean valid = true;
if (employee.getName() == null || employee.getName().isEmpty()) valid = false;
if ((employee.getType().equals("Head Chef") || employee.getType().equals("Hall Manager"))
&& (employee.getEmail() == null || employee.getEmail().isEmpty())) valid = false;
if ((employee.getType().equals("Head Chef") || employee.getType().equals("Hall Manager"))
&& (employee.getPassword() == null || employee.getPassword().isEmpty())) valid = false;
if (employee.getSalary() != null && Integer.parseInt(employee.getSalary()) <= 0) valid = false;
return valid;
}
}
public interface EmployeeValidator {
boolean validate(Employee employee);
}
// Interface para repositorio de empleados
public interface EmployeeRepository {
void create(Employee employee);
}
// Implementación concreta con Firebase
public class FirebaseEmployeeRepository implements EmployeeRepository {
@Override
public void create(Employee employee) {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.child("Employee").child(employee.getId()).setValue(employee);
}
}
// Servicio de negocio
public class EmployeeService {
private EmployeeRepository repository;
private EmployeeValidator validator;
public EmployeeService(EmployeeRepository repository, EmployeeValidator validator) {
this.repository = repository;
this.validator = validator;
}
public boolean addEmployee(Employee employee) {
if (!validator.validate(employee)) return false;
repository.create(employee);
return true;
}
}`
-
Clase modificada
`public class AddEmployeeActivity extends AppCompatActivity { EditText name, email, password, specialty, salary; Spinner type; Button addButton; EmployeeService employeeService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.admin_activity_add_employee); name = findViewById(R.id.AddEmployeeName300); email = findViewById(R.id.AddEmployeeEmail300); password = findViewById(R.id.AddEmployeePassword300); specialty = findViewById(R.id.AddSpeciality300); salary = findViewById(R.id.AddEmployeeSalary300); type = findViewById(R.id.DropDownMenu300); addButton = findViewById(R.id.AddNewEmployeeButton300); // Inyección de dependencias employeeService = new EmployeeService(new FirebaseEmployeeRepository(), new EmployeeValidatorImpl()); addButton.setOnClickListener(v -> { Employee employee = new Employee( "generatedId", name.getText().toString(), email.getText().toString(), password.getText().toString(), specialty.getText().toString(), salary.getText().toString(), type.getSelectedItem().toString() ); if (employeeService.addEmployee(employee)) { Toast.makeText(this, "Employee Added Successfully", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Validation Failed", Toast.LENGTH_SHORT).show(); } });}
}`
Metadata
Metadata
Assignees
Labels
No labels