Author: echatellier Date: 2013-01-28 18:18:32 +0100 (Mon, 28 Jan 2013) New Revision: 63 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/63 Log: Use autocompletefield to manage identifieePar input Added: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/dao/impl/MoleculeDao.java Modified: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/Molecule.java trunk/cantharella.data/src/main/resources/commons/sql/dev_update.sql trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.html trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java Added: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/dao/impl/MoleculeDao.java =================================================================== --- trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/dao/impl/MoleculeDao.java (rev 0) +++ trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/dao/impl/MoleculeDao.java 2013-01-28 17:18:32 UTC (rev 63) @@ -0,0 +1,51 @@ +/* + * #%L + * Cantharella :: Data + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2013 IRD (Institut de Recherche pour le Developpement) and by respective authors (see below) + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero 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 Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package nc.ird.cantharella.data.dao.impl; + +import nc.ird.cantharella.data.dao.AbstractModelDao; +import nc.ird.cantharella.data.model.Molecule; + +import org.hibernate.criterion.DetachedCriteria; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Projections; + +/** + * DAO molecules. + * + * @author Mickael Tricot + * @author Adrien Cheype + */ +public final class MoleculeDao extends AbstractModelDao { + + /** Criteria : différents programmes des campagnes déjà saisis */ + public static final DetachedCriteria CRITERIA_DISTINCT_MOLECULE_ORGANISMES = DetachedCriteria + .forClass(Molecule.class).setProjection(Projections.distinct(Projections.property("identifieePar"))) + .addOrder(Order.asc("identifieePar")); + + /** + * Constructor (prevents from instantiation) + */ + private MoleculeDao() { + // + } +} Property changes on: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/dao/impl/MoleculeDao.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/Molecule.java =================================================================== --- trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/Molecule.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/Molecule.java 2013-01-28 17:18:32 UTC (rev 63) @@ -114,8 +114,9 @@ private Campagne campagne; /** Identifiee par. */ - @Enumerated(EnumType.ORDINAL) - private TypeOrganisme identifieePar; + @Length(max = LENGTH_MEDIUM_TEXT) + @Field(index=Index.YES, analyze=Analyze.YES, store=Store.YES) + private String identifieePar; /** Publication d'origine */ @Lob @@ -267,14 +268,14 @@ /** * @return the identifieePar */ - public TypeOrganisme getIdentifieePar() { + public String getIdentifieePar() { return identifieePar; } /** * @param identifieePar the identifieePar to set */ - public void setIdentifieePar(TypeOrganisme identifieePar) { + public void setIdentifieePar(String identifieePar) { this.identifieePar = identifieePar; } Modified: trunk/cantharella.data/src/main/resources/commons/sql/dev_update.sql =================================================================== --- trunk/cantharella.data/src/main/resources/commons/sql/dev_update.sql 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.data/src/main/resources/commons/sql/dev_update.sql 2013-01-28 17:18:32 UTC (rev 63) @@ -48,7 +48,7 @@ publiOrigine text, campagne_idCampagne int4, createur_idPersonne int4 not null, - identifieePar int4, + identifieePar varchar(60), primary key (idMolecule) ) Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/MoleculeService.java 2013-01-28 17:18:32 UTC (rev 63) @@ -90,4 +90,10 @@ * @return TRUE s'il a le droit */ boolean updateOrdeleteMoleculeEnabled(Molecule molecule, Utilisateur utilisateur); + + /** + * Liste les programmes des organismes déjà saisis + * @return Organisme des molécules + */ + public List<String> listMoleculeOrganisme(); } Modified: trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java =================================================================== --- trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.service/src/main/java/nc/ird/cantharella/service/services/impl/MoleculeServiceImpl.java 2013-01-28 17:18:32 UTC (rev 63) @@ -25,6 +25,8 @@ import java.util.List; import nc.ird.cantharella.data.dao.GenericDao; +import nc.ird.cantharella.data.dao.impl.CampagneDao; +import nc.ird.cantharella.data.dao.impl.MoleculeDao; import nc.ird.cantharella.data.exceptions.DataConstraintException; import nc.ird.cantharella.data.exceptions.DataNotFoundException; import nc.ird.cantharella.data.exceptions.UnexpectedException; @@ -108,4 +110,11 @@ return utilisateur.getTypeDroit() == TypeDroit.ADMINISTRATEUR || utilisateur.getIdPersonne() == molecule.getCreateur().getIdPersonne(); } + + /** {@inheritDoc} */ + @SuppressWarnings("unchecked") + @Override + public List<String> listMoleculeOrganisme() { + return (List<String>) dao.list(MoleculeDao.CRITERIA_DISTINCT_MOLECULE_ORGANISMES); + } } Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ListMoleculesPage.java 2013-01-28 17:18:32 UTC (rev 63) @@ -133,8 +133,8 @@ setResponsePage(new ReadCampagnePage(model.getObject().getCampagne().getIdCampagne(), currentPage)); } }); - columns.add(new EnumPropertyColumn<Molecule>(new Model<String>(getString("Molecule.identifieePar")), "identifieePar", - "identifieePar", this)); + columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.identifieePar")), "identifieePar", + "identifieePar")); columns.add(new LinkableImagePropertyColumn<Molecule>("images/edit.png", getString("Update"), getString("Update")) { // pas de lien d'édition si l'utilisateur n'a pas les droits Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.html =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.html 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.html 2013-01-28 17:18:32 UTC (rev 63) @@ -76,7 +76,7 @@ <div class="property"> <label for="Molecule.identifieePar"><wicket:message key="Molecule.identifieePar" /></label> - <select id="Molecule.identifieePar" wicket:id="Molecule.identifieePar" /> + <input type="text" id="Molecule.identifieePar" wicket:id="Molecule.identifieePar" /> </div> <div class="property"> Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ManageMoleculePage.java 2013-01-28 17:18:32 UTC (rev 63) @@ -34,40 +34,34 @@ import nc.ird.cantharella.data.model.Fraction; import nc.ird.cantharella.data.model.Molecule; import nc.ird.cantharella.data.model.MoleculeProvenance; -import nc.ird.cantharella.data.model.Personne; import nc.ird.cantharella.data.model.Produit; -import nc.ird.cantharella.data.model.ResultatTestBio; import nc.ird.cantharella.data.model.Utilisateur; -import nc.ird.cantharella.data.model.ResultatTestBio.TypeResultat; import nc.ird.cantharella.data.model.Specimen.TypeOrganisme; import nc.ird.cantharella.data.validation.utils.ModelValidator; import nc.ird.cantharella.service.services.CampagneService; import nc.ird.cantharella.service.services.MoleculeService; import nc.ird.cantharella.service.services.PersonneService; import nc.ird.cantharella.service.services.ProduitService; -import nc.ird.cantharella.service.utils.normalizers.UniqueFieldNormalizer; -import nc.ird.cantharella.service.utils.normalizers.utils.Normalizer; import nc.ird.cantharella.web.pages.TemplatePage; import nc.ird.cantharella.web.pages.domain.campagne.ManageCampagnePage; import nc.ird.cantharella.web.pages.domain.extraction.ReadExtractionPage; import nc.ird.cantharella.web.pages.domain.purification.ReadPurificationPage; -import nc.ird.cantharella.web.pages.renderers.PersonneRenderer; import nc.ird.cantharella.web.pages.renderers.ProduitRenderer; import nc.ird.cantharella.web.utils.CallerPage; import nc.ird.cantharella.web.utils.behaviors.JSConfirmationBehavior; import nc.ird.cantharella.web.utils.behaviors.MoleculeEditorBehavior; import nc.ird.cantharella.web.utils.behaviors.ReplaceEmptyLabelBehavior; +import nc.ird.cantharella.web.utils.forms.AutoCompleteTextFieldString; import nc.ird.cantharella.web.utils.forms.SubmittableButton; import nc.ird.cantharella.web.utils.forms.SubmittableButtonEvents; +import nc.ird.cantharella.web.utils.forms.AutoCompleteTextFieldString.ComparisonMode; import nc.ird.cantharella.web.utils.models.DisplayDecimalPropertyModel; import nc.ird.cantharella.web.utils.models.DisplayDecimalPropertyModel.DecimalDisplFormat; import nc.ird.cantharella.web.utils.panels.PropertyLabelLinkProduitPanel; -import nc.ird.cantharella.web.utils.renderers.EnumChoiceRenderer; import nc.ird.cantharella.web.utils.security.AuthRole; import nc.ird.cantharella.web.utils.security.AuthRoles; import nc.ird.module.utils.LogTools; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.wicket.AttributeModifier; import org.apache.wicket.MarkupContainer; @@ -185,6 +179,7 @@ } // Initialisation des listes + List<String> organismes = moleculeService.listMoleculeOrganisme(); campagnes = campagneService.listCampagnes(getSession().getUtilisateur()); final Form<Void> formView = new Form<Void>("Form"); @@ -220,10 +215,8 @@ } }); - DropDownChoice<TypeOrganisme> identifieeParInput = new DropDownChoice<TypeOrganisme>("Molecule.identifieePar", - new PropertyModel<TypeOrganisme>(moleculeModel, "identifieePar"), - Arrays.asList(TypeOrganisme.values()), new EnumChoiceRenderer<TypeOrganisme>(this)); - //identifieeParInput.setNullValid(false); + AutoCompleteTextFieldString identifieeParInput = new AutoCompleteTextFieldString("Molecule.identifieePar", + new PropertyModel<String>(moleculeModel, "identifieePar"), organismes, ComparisonMode.CONTAINS); nouvMoleculRefresh.add(identifieeParInput); DropDownChoice<Campagne> campagnesInput = new DropDownChoice<Campagne>("Molecule.campagne", Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/molecule/ReadMoleculePage.java 2013-01-28 17:18:32 UTC (rev 63) @@ -22,7 +22,6 @@ */ package nc.ird.cantharella.web.pages.domain.molecule; -import java.math.BigDecimal; import java.util.List; import nc.ird.cantharella.data.exceptions.DataConstraintException; @@ -33,17 +32,12 @@ import nc.ird.cantharella.data.model.MoleculeProvenance; import nc.ird.cantharella.data.model.Personne; import nc.ird.cantharella.data.model.Produit; -import nc.ird.cantharella.data.model.Station; -import nc.ird.cantharella.data.model.Utilisateur; import nc.ird.cantharella.service.services.MoleculeService; -import nc.ird.cantharella.web.config.WebContext; import nc.ird.cantharella.web.pages.TemplatePage; import nc.ird.cantharella.web.pages.domain.extraction.ReadExtractionPage; import nc.ird.cantharella.web.pages.domain.lot.ManageLotPage; import nc.ird.cantharella.web.pages.domain.personne.ReadPersonnePage; import nc.ird.cantharella.web.pages.domain.purification.ReadPurificationPage; -import nc.ird.cantharella.web.pages.domain.station.ReadStationPage; -import nc.ird.cantharella.web.pages.renderers.ProduitRenderer; import nc.ird.cantharella.web.utils.CallerPage; import nc.ird.cantharella.web.utils.behaviors.JSConfirmationBehavior; import nc.ird.cantharella.web.utils.behaviors.MoleculeViewBehavior; @@ -52,7 +46,6 @@ import nc.ird.cantharella.web.utils.forms.SubmittableButtonEvents; import nc.ird.cantharella.web.utils.models.DisplayBooleanPropertyModel; import nc.ird.cantharella.web.utils.models.DisplayDecimalPropertyModel; -import nc.ird.cantharella.web.utils.models.DisplayMapValuePropertyModel; import nc.ird.cantharella.web.utils.models.DisplayDecimalPropertyModel.DecimalDisplFormat; import nc.ird.cantharella.web.utils.models.GenericLoadableDetachableModel; import nc.ird.cantharella.web.utils.panels.PropertyLabelLinkPanel; @@ -62,14 +55,10 @@ import org.apache.wicket.AttributeModifier; import org.apache.wicket.MarkupContainer; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; -import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-01-28 17:17:45 UTC (rev 62) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-01-28 17:18:32 UTC (rev 63) @@ -613,8 +613,8 @@ setResponsePage(new ReadCampagnePage(model.getObject().getCampagne().getIdCampagne(), currentPage)); } }); - columns.add(new EnumPropertyColumn<Molecule>(new Model<String>(getString("Molecule.identifieePar")), "identifieePar", - "identifieePar", this)); + columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.identifieePar")), "identifieePar", + "identifieePar")); final DataTable<Molecule> moleculesDataTable = new AjaxFallbackDefaultDataTable<Molecule>( getResource() + ".Molecules.Results", columns,