Skip to content

Interfaz y clase modificada para arreglar ISP #12

@jarenPilco

Description

@jarenPilco
  1. 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;
}

}`

  1. 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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions