use of eu.ggnet.dwoss.uniqueunit.ee.entity.CategoryProduct in project dwoss by gg-net.
the class UniqueUnitAgentIT method testCreateOrUpdateCategoryProduct.
@Test
public void testCreateOrUpdateCategoryProduct() throws Exception {
// Create a some Products.
utx.begin();
em.joinTransaction();
Product p1 = new Product(ProductGroup.DESKTOP, TradeName.ACER, "LX.11111.222", "Verition Stein");
p1.setDescription("Ein Tolles Gerät");
p1.setPrice(PriceType.MANUFACTURER_COST, 200.0, "JUnit - Testcase");
p1.setPrice(PriceType.CONTRACTOR_REFERENCE, 240.0, "JUnit - Testcase");
p1.addFlag(Product.Flag.PRICE_FIXED);
Product p2 = new Product(ProductGroup.COMMENTARY, TradeName.DELL, "DL", "Dienstleistung 1h");
p2.setDescription("Eine Dienstleistungs Stunde");
em.persist(p1);
em.persist(p2);
utx.commit();
// Store a simple cp.
CategoryProductDto dto1 = new CategoryProductDto();
dto1.setName("CP1");
dto1.setDescription("Some Description");
CategoryProduct cp = agent.createOrUpdate(dto1, "Test");
assertThat(cp).as("CategroyProduct").isNotNull();
dto1.setId(cp.getId());
dto1.getProducts().add(new PicoProduct(p1.getId(), "irrelevant"));
dto1.getPrices().put(PriceType.SALE, 200.0);
long lastid = cp.getId();
cp = agent.createOrUpdate(dto1, "TEst");
assertThat(cp).as("CategroyProtuct").isNotNull().as("CategroyProtuct id is equal").returns(lastid, CategoryProduct::getId);
assertThat(cp.getProducts()).contains(p1);
assertThat(cp.getPrice(PriceType.SALE)).isEqualTo(200.0);
Reply<Void> reply = agent.deleteCategoryProduct(cp.getId());
assertThat(reply).isNotNull().returns(true, Reply::hasSucceded);
CategoryProduct notFound = agent.findById(CategoryProduct.class, cp.getId());
assertThat(notFound).isNull();
}
use of eu.ggnet.dwoss.uniqueunit.ee.entity.CategoryProduct in project dwoss by gg-net.
the class PersistenceIT method testPersistence.
@Test
public void testPersistence() throws Exception {
utx.begin();
em.joinTransaction();
Date now = new Date();
CategoryProduct cp1 = new CategoryProduct();
cp1.setName("Mixup");
cp1.setPrice(PriceType.SALE, 100.0, "The Salepreice");
cp1.setSalesChannel(SalesChannel.RETAILER);
Product p1 = new Product(ProductGroup.DESKTOP, TradeName.ACER, "LX.11111.222", "Verition Stein");
p1.setDescription("Ein Tolles Gerät");
p1.setPrice(PriceType.MANUFACTURER_COST, 200.0, "JUnit - Testcase");
p1.setPrice(PriceType.CONTRACTOR_REFERENCE, 240.0, "JUnit - Testcase");
p1.addFlag(Product.Flag.PRICE_FIXED);
p1.setCategoryProduct(cp1);
Product p2 = new Product(ProductGroup.COMMENTARY, TradeName.DELL, "DL", "Dienstleistung 1h");
p2.setDescription("Eine Dienstleistungs Stunde");
p2.setCategoryProduct(cp1);
UnitCollection uc1 = new UnitCollection();
uc1.setProduct(p1);
uc1.setPartNoExtension("demo1");
uc1.setNameExtension("Demo1");
UnitCollection uc2 = new UnitCollection();
uc2.setProduct(p1);
uc2.setPartNoExtension("demo2");
uc2.setNameExtension("Demo2");
UniqueUnit unit1 = new UniqueUnit(p1, now, "");
unit1.setIdentifier(SERIAL, "ROFFFLAASSS");
unit1.setPrice(PriceType.SALE, 125, "JUnit - Testcase");
unit1.addFlag(UniqueUnit.Flag.PRICE_FIXED);
unit1.setContractor(TradeName.ONESELF);
unit1.setComment("Ein Commentar");
unit1.setCondition(UniqueUnit.Condition.AS_NEW);
unit1.setUnitCollection(uc1);
UniqueUnit unit2 = new UniqueUnit(p1, now, "lila");
unit2.addHistory("Aufgenommen als Sopo 332");
unit2.addHistory("Zerlegt weil kaput");
unit2.setIdentifier(SERIAL, "DBCFDASFDSADEF");
unit2.setContractor(TradeName.ONESELF);
unit2.setComment("Auch ein Commentar");
unit2.setCondition(UniqueUnit.Condition.AS_NEW);
unit2.setUnitCollection(uc2);
UniqueUnit unit3 = new UniqueUnit();
unit3.setProduct(p1);
unit3.setMfgDate(now);
unit3.setIdentifier(SERIAL, "ABCDEFJKHKZHJI");
unit3.setContractor(TradeName.ONESELF);
unit3.setCondition(UniqueUnit.Condition.AS_NEW);
unit3.setUnitCollection(uc2);
UniqueUnit unit4 = new UniqueUnit(p2, now, "");
unit4.setIdentifier(SERIAL, "ABCDEFFEQGSDFD");
unit4.setContractor(TradeName.ONESELF);
unit4.setCondition(UniqueUnit.Condition.USED);
unit4.setComment("Ein sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr langer Kommentar");
unit4.setInternalComment("Ein sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr" + " sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr langer Kommentar");
em.persist(cp1);
em.persist(p1);
em.persist(p2);
em.persist(uc1);
em.persist(uc2);
em.persist(unit1);
em.persist(unit2);
em.persist(unit3);
em.persist(unit4);
utx.commit();
List<CategoryProduct> allCp = agent.findAll(CategoryProduct.class);
assertThat(allCp).as("findAllCategoryProducts").isNotEmpty().hasSize(1).contains(cp1);
CategoryProduct getCp1 = allCp.get(0);
assertThat(getCp1.getSalesChannel()).as("saleschanel of categoryproduct").isEqualTo(SalesChannel.RETAILER);
assertThat(getCp1.hasPrice(PriceType.SALE)).as("price sale is set on categoryproduct").isTrue();
assertThat(agent.findAll(UniqueUnit.class)).as("findAllUniqueUnits").isNotNull().isNotEmpty().hasSize(4);
UniqueUnit unit3_1 = agent.findById(UniqueUnit.class, unit3.getId());
assertThat(unit3_1).as("Expected unit3").isNotNull().satisfies(u -> {
assertThat(u.getComment()).isNull();
assertThat(u.getInternalComment()).isNull();
assertThat(u.getUnitCollection()).isEqualTo(uc2);
});
UniqueUnit unit4_1 = agent.findById(UniqueUnit.class, unit4.getId());
assertThat(unit4_1).as("Expected unit4").isNotNull();
assertThat(unit4_1.getComment()).as("Comment of unit4").isNotBlank();
assertThat(unit4_1.getInternalComment()).as("InternalComment of unit4").isNotBlank();
}
use of eu.ggnet.dwoss.uniqueunit.ee.entity.CategoryProduct in project dwoss by gg-net.
the class TreeTableController method getCategoryProducts.
private ObservableList<TreeItem<DataWrapper>> getCategoryProducts(TradeName tradeName, ProductGroup group) {
ObservableList<TreeItem<DataWrapper>> result = FXCollections.observableArrayList();
for (CategoryProduct cp : loadCp(group, tradeName)) {
TreeItem<DataWrapper> item = new TreeItem<>();
CategoryProductWrapper categoryProductWrapper = new CategoryProductWrapper(item, cp);
item.setValue(categoryProductWrapper);
item.getChildren().add(loading);
item.expandedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (categoryProductWrapper.isLoading()) {
return;
}
categoryProductWrapper.setLoading(true);
new Thread(new Runnable() {
@Override
public void run() {
item.getChildren().addAll(getProducts(cp));
item.getChildren().remove(loading);
}
}).start();
}
});
result.add(item);
}
return result;
}
use of eu.ggnet.dwoss.uniqueunit.ee.entity.CategoryProduct in project dwoss by gg-net.
the class TreeTableController method getProducts.
private ObservableList<TreeItem<DataWrapper>> getProducts(CategoryProduct cp) {
ObservableList<TreeItem<DataWrapper>> result = FXCollections.observableArrayList();
for (Product product : loadProducts(cp)) {
TreeItem<DataWrapper> item = new TreeItem<>();
ProductWrapper productWrapper = new ProductWrapper(item, product);
item.setValue(productWrapper);
item.getChildren().add(loading);
item.expandedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (productWrapper.isLoading()) {
return;
}
productWrapper.setLoading(true);
new Thread(new Runnable() {
@Override
public void run() {
item.getChildren().addAll(getUnitCollections(product));
item.getChildren().remove(loading);
}
}).start();
}
});
result.add(item);
}
return result;
}
use of eu.ggnet.dwoss.uniqueunit.ee.entity.CategoryProduct in project dwoss by gg-net.
the class UnitViewTryout method main.
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
final SpecGenerator GEN = new SpecGenerator();
final List<ProductSpec> productSpecs = new ArrayList<>();
final Map<String, ProductModel> productModels = new HashMap<>();
final Map<String, ProductSeries> productSeries = new HashMap<>();
final Map<String, ProductFamily> productFamily = new HashMap<>();
final List<Product> products = new ArrayList<>();
for (int i = 0; i < 100; i++) {
ProductSpec spec = GEN.makeSpec();
productSpecs.add(spec);
products.add(new Product(spec.getModel().getFamily().getSeries().getGroup(), spec.getModel().getFamily().getSeries().getBrand(), spec.getPartNo(), spec.getModel().getName()));
productModels.putIfAbsent(spec.getModel().getName(), spec.getModel());
productFamily.putIfAbsent(spec.getModel().getFamily().getName(), spec.getModel().getFamily());
productSeries.putIfAbsent(spec.getModel().getFamily().getSeries().getName(), spec.getModel().getFamily().getSeries());
}
// final Product product = new Product(spec.getModel().getFamily().getSeries().getGroup(),
// spec.getModel().getFamily().getSeries().getBrand(), spec.getPartNo(), spec.getModel().getName());
Dl.remote().add(Mandators.class, new Mandators() {
@Override
public Mandator loadMandator() {
return Mandator.builder().defaultMailSignature(null).smtpConfiguration(null).mailTemplateLocation(null).company(CompanyGen.makeCompany()).dossierPrefix("DW").documentIntermix(null).documentIdentifierGeneratorConfigurations(new EnumMap<>(DocumentType.class)).build();
}
@Override
public DefaultCustomerSalesdata loadSalesdata() {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ReceiptCustomers loadReceiptCustomers() {
return ReceiptCustomers.builder().build();
}
@Override
public SpecialSystemCustomers loadSystemCustomers() {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Contractors loadContractors() {
return new Contractors(EnumSet.allOf(TradeName.class), TradeName.getManufacturers());
}
@Override
public PostLedger loadPostLedger() {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ShippingTerms loadShippingTerms() {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
});
Dl.remote().add(SpecAgent.class, new SpecAgent() {
@Override
public ProductSpec findProductSpecByPartNoEager(String partNo) {
return productSpecs.stream().filter(p -> Objects.equals(partNo, p.getPartNo())).findFirst().orElse(null);
}
// <editor-fold defaultstate="collapsed" desc="Unneeded Methods">
@Override
public <T> long count(Class<T> entityClass) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAll(Class<T> entityClass) {
if (entityClass.equals(ProductSpec.class))
return (List<T>) productSpecs;
else if (entityClass.equals(ProductSeries.class))
return (List<T>) new ArrayList<>(productSeries.values());
else if (entityClass.equals(ProductFamily.class))
return (List<T>) new ArrayList<>(productFamily.values());
else if (entityClass.equals(ProductModel.class))
return (List<T>) new ArrayList<>(productModels.values());
return Collections.emptyList();
}
@Override
public <T> List<T> findAll(Class<T> entityClass, int start, int amount) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAllEager(Class<T> entityClass) {
return findAll(entityClass);
}
@Override
public <T> List<T> findAllEager(Class<T> entityClass, int start, int amount) {
return findAll(entityClass, start, amount);
}
@Override
public <T> T findById(Class<T> entityClass, Object id) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findById(Class<T> entityClass, Object id, LockModeType lockModeType) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findByIdEager(Class<T> entityClass, Object id) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findByIdEager(Class<T> entityClass, Object id, LockModeType lockModeType) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
});
Dl.remote().add(UnitSupporter.class, new UnitSupporter() {
@Override
public boolean isRefurbishIdAvailable(String refurbishId) {
return Pattern.matches("([2-8][0-9]{4}|A1[0-9]{3})", refurbishId);
}
@Override
public boolean isSerialAvailable(String serial) {
if (serial == null)
return true;
return !serial.startsWith("AAAA");
}
@Override
public String findRefurbishIdBySerial(String serial) {
if (serial == null)
return null;
if (serial.startsWith("B"))
return "12345";
return null;
}
});
Dl.remote().add(UniqueUnitAgent.class, new UniqueUnitAgent() {
@Override
public Product findProductByPartNo(String partNo) {
return products.stream().filter(p -> Objects.equals(partNo, p.getPartNo())).findFirst().orElse(null);
}
// <editor-fold defaultstate="collapsed" desc="Unneeded Methods">
@Override
public UniqueUnit findUnitByIdentifierEager(UniqueUnit.Identifier type, String identifier) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> long count(Class<T> entityClass) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAll(Class<T> entityClass) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAll(Class<T> entityClass, int start, int amount) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAllEager(Class<T> entityClass) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> List<T> findAllEager(Class<T> entityClass, int start, int amount) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findById(Class<T> entityClass, Object id) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findById(Class<T> entityClass, Object id, LockModeType lockModeType) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findByIdEager(Class<T> entityClass, Object id) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T findByIdEager(Class<T> entityClass, Object id, LockModeType lockModeType) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Product findProductByPartNoEager(String partNo) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public CategoryProduct createOrUpdate(CategoryProductDto dto, String username) throws NullPointerException {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
// </editor-fold>
@Override
public Reply<Void> deleteCategoryProduct(long id) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Reply<Void> addToUnitCollection(PicoUnit unit, long unitCollectionId) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Reply<Void> unsetUnitCollection(PicoUnit unit) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Reply<UnitCollection> createOnProduct(long productId, UnitCollectionDto dto, String username) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Reply<UnitCollection> update(UnitCollectionDto dto, String username) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Reply<Void> delete(UnitCollection dto) {
// To change body of generated methods, choose Tools | Templates.
throw new UnsupportedOperationException("Not supported yet.");
}
});
Dl.remote().add(ProductProcessor.class, new ProductProcessorStub());
UnitController controller = new UnitController();
UnitModel model = new UnitModel();
model.setContractor(ONESELF);
model.setMode(ACER);
controller.setModel(model);
final UnitView view = new UnitView(null);
view.setModel(model);
controller.setView(view);
view.setController(controller);
controller.init();
// To Model
view.setVisible(true);
System.out.println("View canceled ? " + view.isCancel());
System.out.println(view.getUnit());
System.out.println(model.getProduct());
System.out.println(model.getOperation());
System.out.println(model.getOperationComment());
}
Aggregations