Java tutorial
package nc.noumea.mairie.appock.viewmodel; /*- * #%L * Logiciel de Gestion des approvisionnements et des stocks des fournitures administratives de la Mairie de Nouma * %% * Copyright (C) 2017 Mairie de Nouma, Nouvelle-Caldonie * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import java.io.Serializable; import java.util.List; import org.apache.commons.collections4.CollectionUtils; import org.zkoss.bind.annotation.*; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zkplus.spring.DelegatingVariableResolver; import org.zkoss.zul.ListModelList; import org.zkoss.zul.Messagebox; import nc.noumea.mairie.appock.core.viewmodel.AbstractEditViewModel; import nc.noumea.mairie.appock.entity.ArticleDemande; import nc.noumea.mairie.appock.entity.Demande; import nc.noumea.mairie.appock.enums.EtatArticleDemande; import nc.noumea.mairie.appock.repositories.ArticleDemandeRepository; import nc.noumea.mairie.appock.repositories.DemandeRepository; import nc.noumea.mairie.appock.services.CatalogueService; import nc.noumea.mairie.appock.services.DemandeService; import nc.noumea.mairie.appock.services.StockService; @VariableResolver(DelegatingVariableResolver.class) public class EditDemandeViewModel extends AbstractEditViewModel<Demande> implements Serializable { private static final long serialVersionUID = 1L; @WireVariable CatalogueService catalogueService; @WireVariable ArticleDemandeRepository articleDemandeRepository; @WireVariable DemandeRepository demandeRepository; @WireVariable DemandeService demandeService; @WireVariable StockService stockService; private ListModelList<ArticleDemande> listeArticleDemande; public ListModelList<ArticleDemande> getListeArticleDemande() { return listeArticleDemande; } public void setListeArticleDemande(ListModelList<ArticleDemande> listeArticleDemande) { this.listeArticleDemande = listeArticleDemande; } @AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) Component view) { Selectors.wireComponents(view, this, false); } @Init(superclass = true) public void init() { List<ArticleDemande> listeArticleDemande = entity.getListeArticleDemande(); for (ArticleDemande articleDemande : listeArticleDemande) { if (articleDemande.getEtatArticleDemande() == EtatArticleDemande.REJETE) { articleDemande.setQuantiteCommande(0); } catalogueService.initPhotoSrc(articleDemande.getArticleCatalogue()); if (entity.isEtatDemandeCree()) { // on ajoute la quantit en stock dans le dtail d'une demande l'tat 'Cre' stockService.initArticleQuantiteStockPourService(articleDemande, articleDemande.getDemande().getService()); } } setListeArticleDemande(new ListModelList<>(listeArticleDemande)); } @Command public void updateQuantite(@BindingParam("articleDemande") ArticleDemande articleDemande, @BindingParam("quantite") Integer quantite) { articleDemande.setQuantite(quantite); int i = 0; for (ArticleDemande articleDemandeARemplacer : listeArticleDemande) { if (articleDemandeARemplacer.equals(articleDemande)) { articleDemande.setQuantiteCommande(articleDemande.getQuantite()); articleDemande = articleDemandeRepository.save(articleDemande); catalogueService.initPhotoSrc(articleDemande.getArticleCatalogue()); listeArticleDemande.set(i, articleDemande); showNotificationStandard("Quantit mise jour"); break; } i++; } } @Command public void transmetDemande() { if (CollectionUtils.isEmpty(entity.getListeArticleDemande())) { Messagebox.show( "Vous ne pouvez pas transmettre une demande qui ne contient pas d'articles. Vous devez annuler cette demande.", "Tranmsission impossible", Messagebox.OK, Messagebox.ERROR); return; } Messagebox.show("Voulez-vous transmettre cette demande pour traitement la section achat ?", "Transmettre la demande", new Messagebox.Button[] { Messagebox.Button.YES, Messagebox.Button.NO }, Messagebox.QUESTION, evt -> { if (evt.getName().equals("onYes")) { entity = demandeRepository.findOne(entity.getId()); demandeService.transmetDemande(entity); rechargeOnglet(); rechargeOngletListeDemande(); rechargeOngletListeReferentAchat(); notifyChange("entity"); showNotificationStandard("Demande transmise"); } }); } @Command public void removeFromDemande(@BindingParam("articleDemande") ArticleDemande articleDemande) { Messagebox.show("tes-vous sr de vouloir retirer cet article de votre demande ?", "Confirmation", new Messagebox.Button[] { Messagebox.Button.YES, Messagebox.Button.CANCEL }, Messagebox.QUESTION, evt -> { if (evt.getName().equals("onYes")) { entity = demandeService.findOne(entity.getId()); entity.removeArticleDemande(articleDemande); demandeRepository.save(entity); rechargeOnglet(); rechargeOngletListeDemande(); rechargeOngletListeReferentAchat(); notifyChange("entity"); showNotificationStandard("Article retir de la demande"); } }); } }