Skip to content

Principios SOLID #12

@dquishpe

Description

@dquishpe

Se recomienda corregir las clases CurrentProductBLL y CurrentProductGetway para eliminar las dependencias incorrectas con DBProperties. Se ha asegurado que ambas clases utilicen correctamente DBConnection para obtener la conexión a la base de datos y han eliminado cualquier referencia directa a DBProperties, ya que su única función es cargar propiedades de configuración. Esto asegura una separación adecuada de responsabilidades y evita acoplamientos innecesarios entre las clases.

Estas correcciones ayudan a mantener un diseño más claro y cohesivo, siguiendo buenas prácticas de programación y evitando violaciones del principio de sustitución de Liskov (LSP) o dependencias incorrectas entre clases.

public class CurrentProduct {
    private String id;
    private String productId;
    private String productName;
    private String quantity;
    private String description;
    private String supplierId;
    private String brandId;
    private String categoryId;
    private String unitId;
    private String pursesPrice;
    private String sellPrice;
    private String rmaId;
    private String date;

    // Constructor, getters y setters
}

// DBConnection.java

/**
 * Clase que gestiona la conexión a la base de datos.
 */
public class DBConnection {
    private Connection connection;

    public Connection getConnection() {
        // Implementación para obtener la conexión
        return connection;
    }
}

// DBProperties.java

/**
 * Clase que gestiona la carga de propiedades de la base de datos desde un archivo.
 */
public class DBProperties {
    public String loadPropertiesFile() {
        // Implementación para cargar propiedades desde un archivo
        return "database.properties";
    }
}

// SQL.java

/**
 * Clase que proporciona métodos SQL para operaciones en la base de datos.
 */
public class SQL {
    // Métodos SQL
}

// CurrentProductGetway.java

/**
 * Clase que maneja las operaciones de base de datos para la entidad CurrentProduct.
 */
public class CurrentProductGetway {

    private DBConnection dbCon;
    private Connection con;
    private PreparedStatement pst;
    private ResultSet rs;
    private String dB;

    public CurrentProductGetway() {
        dbCon = new DBConnection();
        con = dbCon.getConnection();
        dBProperties = new DBProperties();
        dB = dBProperties.loadPropertiesFile();
    }

    public void save(CurrentProduct currentProduct) {
        // Implementación para guardar un producto actual
    }

    public void update(CurrentProduct currentProduct) {
        // Implementación para actualizar un producto actual
    }

    public boolean isNotSoled(CurrentProduct currentProduct) {
        // Implementación para verificar si un producto no se ha vendido
        return true;
    }

    public void delete(CurrentProduct currentProduct) {
        // Implementación para eliminar un producto actual
    }
}

// CurrentProductBLL.java

/**
 * Clase que contiene la lógica de negocio para la entidad CurrentProduct.
 */
public class CurrentProductBLL {

    private DBConnection dbCon;
    private Connection con;
    private PreparedStatement pst;
    private ResultSet rs;
    private String dB;
    private SQL sql;
    private CurrentProductGetway currentProductGetway;

    public CurrentProductBLL() {
        dbCon = new DBConnection();
        con = dbCon.getConnection();
        sql = new SQL();
        currentProductGetway = new CurrentProductGetway();
    }

    public void save(CurrentProduct currentProduct) {
        if (isUniqName(currentProduct)) {
            currentProductGetway.save(currentProduct);
        }
    }

    public void update(CurrentProduct currentProduct) {
        if (isNotNull(currentProduct)) {
            if (isUpdate(currentProduct)) {
                if (checkUpdateCondition(currentProduct)) {
                    currentProductGetway.update(currentProduct);
                } else if (isUniqName(currentProduct)) {
                    currentProductGetway.update(currentProduct);
                }
            }
        }
    }

    public boolean isUniqName(CurrentProduct currentProduct) {
        // Implementación para verificar si el nombre es único
        return true;
    }

    public boolean isUpdate(CurrentProduct currentProduct) {
        // Implementación para verificar si hay una actualización
        return true;
    }

    public boolean checkUpdateCondition(CurrentProduct currentProduct) {
        // Implementación para verificar la condición de actualización
        return true;
    }

    public boolean isNotNull(CurrentProduct currentProduct) {
        // Implementación para verificar si no es nulo
        return true;
    }

    public void delete(CurrentProduct currentProduct) {
        if (currentProductGetway.isNotSoled(currentProduct)) {
            currentProductGetway.delete(currentProduct);
        } else {
            // No hacer nada si el producto ya se ha vendido
        }
    }
}

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