|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package viewmodel;
|
|
|
|
|
|
|
|
|
|
import data.Loadable;
|
|
|
|
|
import data.Loader;
|
|
|
|
|
import data.Saver;
|
|
|
|
|
import data.Stub;
|
|
|
|
@ -17,7 +18,7 @@ import java.io.IOException;
|
|
|
|
|
|
|
|
|
|
public class ShopVM implements PropertyChangeListener {
|
|
|
|
|
|
|
|
|
|
private Shop model;
|
|
|
|
|
private final Shop model;
|
|
|
|
|
|
|
|
|
|
public Shop getModel() {
|
|
|
|
|
return model;
|
|
|
|
@ -30,44 +31,42 @@ public class ShopVM implements PropertyChangeListener {
|
|
|
|
|
|
|
|
|
|
public ShopVM() {
|
|
|
|
|
|
|
|
|
|
Shop tmpModel;
|
|
|
|
|
Loadable loader;
|
|
|
|
|
try {
|
|
|
|
|
System.out.println("trying real load");
|
|
|
|
|
model = new Loader().load();
|
|
|
|
|
loader = new Loader();
|
|
|
|
|
tmpModel = loader.load();
|
|
|
|
|
} catch (IOException | ClassNotFoundException ex1) {
|
|
|
|
|
ex1.printStackTrace();
|
|
|
|
|
try {
|
|
|
|
|
System.out.println("trying stub load");
|
|
|
|
|
model = new Stub().load();
|
|
|
|
|
loader = new Stub();
|
|
|
|
|
tmpModel = loader.load();
|
|
|
|
|
} catch (IOException | ClassNotFoundException ex2) {
|
|
|
|
|
System.out.println("giving up load and creating new");
|
|
|
|
|
model = new Shop();
|
|
|
|
|
ex2.printStackTrace();
|
|
|
|
|
tmpModel = new Shop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model = tmpModel;
|
|
|
|
|
//subscribes
|
|
|
|
|
model.addListener(this);
|
|
|
|
|
|
|
|
|
|
//loads
|
|
|
|
|
model.getProducts().forEach(p -> productsVMObs.add(new ProductVM(p.getName(), p.getPrice())));
|
|
|
|
|
model.getProducts().forEach(p -> productsVMObs.add(new ProductVM(p)));
|
|
|
|
|
|
|
|
|
|
//will update with its methods
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void removeProduct(ProductVM productVM) {
|
|
|
|
|
productsVMObs.remove(productVM);
|
|
|
|
|
getModel().removeProduct(productVM.getModel());
|
|
|
|
|
printModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void addGarmentVM(GarmentVM garmentVM) {
|
|
|
|
|
productsVMObs.add(garmentVM);
|
|
|
|
|
getModel().addProduct(garmentVM.getModel());
|
|
|
|
|
printModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void addPerfumeVM(PerfumeVM perfumeVM) {
|
|
|
|
|
productsVMObs.add(perfumeVM);
|
|
|
|
|
getModel().addProduct(perfumeVM.getModel());
|
|
|
|
|
printModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void save() throws IOException {
|
|
|
|
@ -75,19 +74,13 @@ public class ShopVM implements PropertyChangeListener {
|
|
|
|
|
saver.save(getModel());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void printModel() {
|
|
|
|
|
System.out.println("printing model.................");
|
|
|
|
|
getModel().getProducts().forEach(p -> System.out.println(p.getName() + " : " + p.getPrice()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void propertyChange(PropertyChangeEvent evt) {
|
|
|
|
|
if (evt.getPropertyName().equals(Shop.PROP_SHOP_ADD)) {
|
|
|
|
|
ProductVM pvm = new ProductVM(evt.getNewValue());
|
|
|
|
|
productsVMObs.add(((IndexedPropertyChangeEvent) evt).getIndex(), pvm);
|
|
|
|
|
productsVMObs.add(((IndexedPropertyChangeEvent) evt).getIndex(), new ProductVM(evt.getNewValue()));
|
|
|
|
|
}
|
|
|
|
|
if (evt.getPropertyName().equals(Shop.PROP_SHOP_RMV)) {
|
|
|
|
|
productsVMObs.remove(new ProductVM(evt.getOldValue())); // redefined equals an toHash
|
|
|
|
|
productsVMObs.remove(((IndexedPropertyChangeEvent) evt).getIndex());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|