Subversion Repositories eFlore/Applications.del

Rev

Rev 1393 | Rev 1756 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.modeles;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Observation implements Serializable {

        private static final long serialVersionUID = 840032625524143547L;
        private String id, auteur, idAuteur, nomAuteur, prenomAuteur, courrielAuteur, nomRetenu, famille, localite, idLocalite, 
                                        dateTransmission, numNomenclatural, nomCommun, lieuDit, 
                                        milieu, commentaire, dateReleve, station, referentiel;

        private List<String> motsClefs = new ArrayList<String>();

        // les propositions sont une liste ordonnée qui contient soit des
        // proposition de determinations, soit des commentaires
        private List<InterventionForum> propositions = new ArrayList<InterventionForum>();
        private List<Image> images = new ArrayList<Image>();

        public String getAuteur() {
                return auteur;
        }

        public void setAuteur(String auteur) {
                this.auteur = auteur;
        }

        public String getNomRetenu() {
                return nomRetenu;
        }

        public void setNomRetenu(String commonName) {
                this.nomRetenu = commonName;
        }

        public String getNomCommun() {
                return nomCommun;
        }

        public void setNomCommun(String nomCommun) {
                this.nomCommun = nomCommun;
        }

        public String getStation() {
                return this.station;
        }
        
        public void setStation(String station) {
                this.station = station;
        }
        
        public String getLieuDit() {
                return this.lieuDit;
        }

        public void setLieuDit(String lieuDit) {
                this.lieuDit = lieuDit;
        }

        public String getMilieu() {
                return milieu;
        }

        public void setMilieu(String milieu) {
                this.milieu = milieu;
        }

        public String getCommentaire() {
                return commentaire;
        }

        public void setCommentaire(String commentaire) {
                this.commentaire = commentaire;
        }

        public String getFamille() {
                return famille;
        }

        public void setFamille(String famille) {
                this.famille = famille;
        }

        public String getIdLocalite() {
                return idLocalite;
        }

        public void setIdLocalite(String idlocalite) {
                this.idLocalite = idlocalite;
        }

        public String getLocalite() {
                return localite;
        }

        public String getLocaliteAvecIdFormatee() {
                String localiteFormatee = this.localite;
                if (idLocalite != null && idLocalite.length() >= 5 && idLocalite.substring(0, 5).equals("INSEE")) {
                        String[] tableaulocalite = idLocalite.split(":");
                        String idLocaliteFormatee = (tableaulocalite.length == 2) ? tableaulocalite[1] : localiteFormatee;
                        localiteFormatee += " (" + idLocaliteFormatee + ")";
                } else if (idLocalite != null && idLocalite.length() >= 2) {
                        localiteFormatee += " (" + idLocalite.substring(0, 2) + ")";
                }

                return localiteFormatee;
        }

        public void setLocalite(String localite) {
                this.localite = localite;
        }

        public String getDateTransmission() {
                return dateTransmission;
        }

        public void setDateTransmission(String date) {
                this.dateTransmission = date;
        }

        public String getDateReleve() {
                return dateReleve;
        }

        public void setDateReleve(String dateReleve) {
                this.dateReleve = dateReleve;
        }

        public String getNumNomenclatural() {
                return numNomenclatural;
        }

        public void setNumNomenclatural(String numNomenclatural) {
                this.numNomenclatural = numNomenclatural;
        }

        public List<InterventionForum> getInterventionsForum() {
                return propositions;
        }

        public void setInterventionsForum(List<InterventionForum> propositions) {
                this.propositions = propositions;
        }

        public List<String> getMotsClefs() {
                return motsClefs;
        }

        public void setMotsClefs(List<String> motsClefs) {
                this.motsClefs = motsClefs;
        }

        public void ajouterMotsClef(String motsClefs) {
                if (this.motsClefs == null) {
                        this.motsClefs = new ArrayList<String>();
                }
                this.motsClefs.add(motsClefs);
        }

        public void ajouterPropositionDetermination(PropositionDetermination observationValidation) {
                propositions.add(observationValidation);
        }

        public ArrayList<String> getPropositionsTaxonsData() {

                ArrayList<String> propositionsTaxonDatas = new ArrayList<String>();
                for (InterventionForum proposition : propositions) {
                        if (proposition instanceof PropositionDetermination) {
                                String espece = ((PropositionDetermination) proposition).getEspece();
                                if (espece != "" && !propositionsTaxonDatas.contains(espece)) {
                                        propositionsTaxonDatas.add(espece);
                                }
                        }
                }

                return propositionsTaxonDatas;
        }

        public List<PropositionDetermination> getPropositionDeterminations() {
                List<PropositionDetermination> determinations = new ArrayList<PropositionDetermination>();
                for (InterventionForum proposition : getInterventionsForum()) {
                        if (proposition instanceof PropositionDetermination) {
                                determinations.add((PropositionDetermination) proposition);
                        }
                }
                return determinations;
        }
        
        public List<Commentaire> getCommentairesForum() {
                List<Commentaire> commentaires = new ArrayList<Commentaire>();
                for (InterventionForum proposition : getInterventionsForum()) {
                        if (proposition instanceof Commentaire) {
                                commentaires.add((Commentaire) proposition);
                        }
                }
                return commentaires;
        }
                
        public void supprimerIntervention(InterventionForum intervention) {
                if(propositions.contains(intervention)) {
                        propositions.remove(intervention);
                } else {
                        for (Iterator<InterventionForum> iterator = propositions.iterator(); iterator.hasNext();) {
                                iterator.next().supprimerIntervention(intervention);
                        }
                }
        }

        public List<Image> getImages() {
                return images;
        }

        public void setImages(List<Image> images) {
                this.images = images;
        }

        public String getId() {
                return id;
        }

        public void setId(String id) {
                this.id = id;
        }
        
        public void setIdAuteur(String idAuteur) {
                this.idAuteur = idAuteur;
        }

        public String getIdAuteur() {
                return idAuteur;
        }
        
        public String getNomAuteur() {
                return nomAuteur;
        }

        public void setNomAuteur(String nomAuteur) {
                this.nomAuteur = nomAuteur;
        }

        public String getPrenomAuteur() {
                return prenomAuteur;
        }

        public void setPrenomAuteur(String prenomAuteur) {
                this.prenomAuteur = prenomAuteur;
        }

        public String getCourrielAuteur() {
                return courrielAuteur;
        }

        public void setCourrielAuteur(String courrielAuteur) {
                this.courrielAuteur = courrielAuteur;
        }
        
        public boolean estADeterminer() {
                return nomRetenu == null || nomRetenu.isEmpty() || motsClefs.contains("aDeterminer");
        }
        
        public String getReferentiel() {
                String refFmt = "";
                // on ne renvoie que le code du référentiel, sans version, et seulement également si l'on possède
                // un numéro nomenclatural associé (ce qui nous assure une certaine cohérence)
                if(referentiel.length() >= 3  && numNomenclatural != null && !numNomenclatural.equals("0")) {
                        int positionDeuxPoints = referentiel.indexOf(':');
                        if (positionDeuxPoints == -1) {
                                refFmt = referentiel;
                        } else {
                                refFmt = referentiel.substring(0, positionDeuxPoints);
                        }
                }
                return refFmt;
        }
        
        public void setReferentiel(String referentiel) {
                this.referentiel = referentiel;
        }
        
        public String getNomRetenuFormateReferentiel() {
                String nomRetenuFmt = "";
                if(nomRetenu != null && !nomRetenu.equals("")) {
                        nomRetenuFmt += nomRetenu;
                }
                String referentiel = getReferentiel();
                if(!nomRetenuFmt.equals("") && !referentiel.equals("")) {
                        nomRetenuFmt += " ("+referentiel+")";
                }
                return nomRetenuFmt;
        }

}