Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
1
import co.edu.unicauca.openmarket.domain.Product;
import co.edu.unicauca.openmarket.domain.service.ProductService;
import java.util.List;
/**
*
* @author ahurtado
*/
public class OMEditProductCommand extends OMCommand {
@Override
public void make() {
oldProduct = productService.findProductById(productId);
result = productService.editProduct(productId, editedProduct);
}
@Override
public void unmake() {
result = productService.editProduct(productId, oldProduct);
}
@Override
public void remake() {
make();
}
}
"
ChatGPT
El código que compartiste es una clase llamada OMEditProductCommand que extiende de
la clase OMCommand. Esta clase se encarga de editar un producto en el sistema.
Aquí tienes una explicación del código:
User
El remake no me guarda los estados anteriores y eso no me deja rehacer ni deshacer,
arreglalo
ChatGPT
Para que el método remake() pueda rehacer correctamente la edición del producto,
debemos asegurarnos de guardar el estado anterior (oldProduct) antes de realizar la
edición en el método make(). Aquí tienes el código actualizado con esa
modificación:
java
Copy code
public class OMEditProductCommand extends OMCommand {
@Override
public void make() {
oldProduct = productService.findProductById(productId); // Guardar el
estado anterior
result = productService.editProduct(productId, editedProduct);
}
@Override
public void unmake() {
result = productService.editProduct(productId, oldProduct);
}
@Override
public void remake() {
if (oldProduct != null) {
result = productService.editProduct(productId, editedProduct);
}
}
}
En el método remake(), verificamos que oldProduct no sea nulo antes de realizar la
edición del producto. Si oldProduct es nulo, significa que no se ha realizado
ninguna operación anteriormente y no hay nada que rehacer.
User
creo que el problema esta ahi "v"
ChatGPT
3 / 3
User
El problema esta aqui "
@Override
public void unmake() {
result = productService.editProduct(productId, oldProduct);
}"
ChatGPT
Tienes razón, el problema se encuentra en el método unmake() en la línea que
mencionaste. En el código actual, se está llamando al método editProduct() del
productService pasando oldProduct como argumento. Sin embargo, esto no es correcto,
ya que el método editProduct() espera recibir un objeto Product, no un Product y el
productId.
java
Copy code
@Override
public void unmake() {
result = productService.editProduct(oldProduct.getId(), oldProduct);
}
En este caso, asumimos que la clase Product tiene un método getId() que devuelve el
identificador del producto.