Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions src/main/java/shopmanager/BagManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import model.Order;

/**
* @author Isabel Rom�n
* @author Isabel Rom�n
* Gestor de la cesta de la compra
*
*/
Expand All @@ -26,31 +26,31 @@ public interface BagManager {

/**
*
* A�ade a la cesta tantas unidades del producto pasado como par�metro como indique getNumber() del mismo, actualiza Stock eliminado las unidades a�adidas
* A�ade a la cesta tantas unidades del producto pasado como par�metro como indique getNumber() del mismo, actualiza Stock eliminado las unidades a�adidas
*
* @param newProduct producto a a�adir, en el n�mero de unidades se indica cu�ntas unidades se a�aden
* debe verificar si hay en stock, si no no se a�aden y deber�a lanzar la excepci�n NoEnoughStock
* actualiza stock disminuyendo el n�mero de unidades a�adidas y aumenta el n�mero de unidades en la cesta
* @return El producto tal y como est� en la cesta
* @throws NoEnoughStock si el n�mero de unidades en el stock no es suficiente
* @param newProduct producto a a�adir, en el n�mero de unidades se indica cu�ntas unidades se a�aden
* debe verificar si hay en stock, si no no se a�aden y deber�a lanzar la excepci�n NoEnoughStock
* actualiza stock disminuyendo el n�mero de unidades a�adidas y aumenta el n�mero de unidades en la cesta
* @return El producto tal y como est� en la cesta
* @throws NoEnoughStock si el n�mero de unidades en el stock no es suficiente
* @throws NotInStock si el producto no existe en el stock
*/
Product addProduct(Product newProduct) throws NoEnoughStock,NotInStock;
/**
*
* Elimina de la cesta tantas unidades del producto pasado como par�metro como indique getNumber() del mismo, el n�mero m�nimo de unidades final es cero
* Elimina de la cesta tantas unidades del producto pasado como par�metro como indique getNumber() del mismo, el n�mero m�nimo de unidades final es cero
*
* @param oldProduct producto a eliminar, se eliminan las unidades que se marquen, actualiza stock aumentando estas unidades liberadas
* @return newProduct, el producto, indicando el n�mero de unidades que quedan en la cesta
* @return newProduct, el producto, indicando el n�mero de unidades que quedan en la cesta
* @throws NotInStock si el producto no estaba en el stock
*/
Product lessProduct(Product oldProduct) throws NotInStock;
/**
* Elimina completamente el producto, actualiza stock sumando las unidades liberadas
*
* @param oldProduct el producto con el n�mero de elementos que se quieren liberar
* @return devuelve true si se elimin�, false si el producto no estaba en la cesta
* @throws NotInStock si no exist�a en el stock este producto
* @param oldProduct el producto con el n�mero de elementos que se quieren liberar
* @return devuelve true si se elimin�, false si el producto no estaba en la cesta
* @throws NotInStock si no exist�a en el stock este producto
*
*/
boolean removeProduct(Product oldProduct) throws NotInStock;
Expand All @@ -65,24 +65,24 @@ public interface BagManager {

/**
*
* Obtiene la cesta como una colecci�n (Sea cual sea la forma interna de almacenar los productos)
* Obtiene la cesta como una colecci�n (Sea cual sea la forma interna de almacenar los productos)
* @return devuelve la cesta como una lista de productos
*/
Collection<Product> getBag();
/**
*
* Devuelve el producto cuyo id se pasa como par�metro encapsulado en un objeto Optional
* Devuelve el producto cuyo id se pasa como par�metro encapsulado en un objeto Optional
* @see java.util.Optional
* @param productId el id del producto a buscar
* @return el producto, con el n�mero de unidades del mismo, si es cero es que no estaba en la cesta
* @return el producto, con el n�mero de unidades del mismo, si es cero es que no estaba en la cesta
*/
Optional<Product> findProduct(String productId);
/**
*
* Devuelve el producto de la bolsa que se corresponde con el id del pasado, encapsulado en un objeto Optional
* @see java.util.Optional
* @param product producto a buscar
* @return el producto, con el n�mero de unidades del mismo, si es cero es que no estaba en la cesta
* @return el producto, con el n�mero de unidades del mismo, si es cero es que no estaba en la cesta
*/
Optional<Product> findProduct(Product product);
/**
Expand All @@ -92,7 +92,7 @@ public interface BagManager {
Order order();

/**
* Inicializa la cesta a cero, borra todo lo que hab�a restaurando el stock
* Inicializa la cesta a cero, borra todo lo que hab�a restaurando el stock
*/
void reset();
/**
Expand All @@ -107,7 +107,7 @@ public interface BagManager {
Iterator<Product> getIdIterator();
/**
*
* @return un iterador que recorre la cesta por n�mero de unidades, de m�s a menos
* @return un iterador que recorre la cesta por número de unidades, de más a menos
*/
Iterator<Product> getUnitsIterator();

Expand Down
36 changes: 17 additions & 19 deletions src/main/java/shopmanager/MyBagManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@
import model.MyOrder;
import model.Order;
import model.Product;
import model.UnitsComparator;
import persistency.OrderRepository;
import shopmanager.StockManager;
/**
* @author Isabel Rom�n
* @author Isabel Rom�n
*
*/
public class MyBagManager implements BagManager {
Expand All @@ -35,7 +36,7 @@ public class MyBagManager implements BagManager {
private Order order;

/**
* Al hacer privado el constructor obligo a que la construcci�n del objeto se haga siempre a trav�s de newBag
* Al hacer privado el constructor obligo a que la construcci�n del objeto se haga siempre a trav�s de newBag
*/
public MyBagManager(){
cesta=new HashMap<String,Product>();
Expand All @@ -51,7 +52,7 @@ public MyBagManager(OrderRepository repo,StockManager stockManager){

@Override
public Product addProduct(Product newProduct)throws NoEnoughStock, NotInStock{
String msg="El id del producto es "+newProduct.getId()+" y las unidades a a�adir"+newProduct.getNumber();
String msg="El id del producto es "+newProduct.getId()+" y las unidades a a�adir"+newProduct.getNumber();
trazador.info(msg);
//quito del stock las unidades solicitadas, si no hubiera suficientes lanza NoEnoughStock, si el producto no existe lanza NotInStock
stock.lessProduct(newProduct);
Expand Down Expand Up @@ -87,7 +88,7 @@ public void removeProduct(String productId)throws NotInStock {
@Override
public Collection<Product> getBag() {

return (List<Product>) cesta.values();
return (Collection<Product>) cesta.values();
}

@Override
Expand All @@ -106,7 +107,7 @@ public Optional<Product> findProduct(Product product) {

@Override
public Order order() {
// No crea el objeto order, a�n no est� resuelto qui�n ser� el responsable de elegir el tipo concreto
// No crea el objeto order, a�n no est� resuelto qui�n ser� el responsable de elegir el tipo concreto
try{
trazador.info("Intento persistir el stock");
stock.save();
Expand All @@ -116,37 +117,34 @@ public Order order() {
repositorio.save(order);

} catch (UnknownRepo ex) {
trazador.info("No ha sido posible guardar el pedido, no se estableci� el repositorio en el stock");
trazador.info("No ha sido posible guardar el pedido, no se estableci� el repositorio en el stock");
}

return order;
}

@Override
public void reset() {
// Deber�a restaurar el stock, pero por ahora no se hace, s�lo borra
// Deber�a restaurar el stock, pero por ahora no se hace, s�lo borra
cesta.clear();

}


@Override
public Iterator<Product> getPrizeIterator() {
// TODO Auto-generated method stub
return null;
}

@Override
public Iterator<Product> getUnitsIterator(){
// Ordena la cesta segun las unidades de producto y devuelve un tipo iterador
Collection<Product> Cesta = this.getBag();
List<Product> OrdenarCesta = new ArrayList<Product>(Cesta);
Collections.sort(OrdenarCesta, new UnitsComparator());

return OrdenarCesta.listIterator();
}
@Override
public Iterator<Product> getIdIterator() {
ArrayList<Product> productosEnCesta = new ArrayList<Product>(cesta.values());
Collections.sort(productosEnCesta, new IdComparator());
return productosEnCesta.listIterator();
}

@Override
public Iterator<Product> getUnitsIterator() {
// TODO Auto-generated method stub
return null;
}

}
Loading