Rev 101 | Rev 107 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.observation;
//TODO : normaliser les noms de methodes (obtenir, ajouter ...)
import org.tela_botanica.client.interfaces.FournisseurListe;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.ExportObservationsDAO;
import org.tela_botanica.client.modeles.ImageGeneriqueVueAsynchroneDAO;
import org.tela_botanica.client.modeles.ImageInformationRepartitionAsynchroneDAO;
import org.tela_botanica.client.modeles.LienImageAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeDateObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservation;
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeReferentielNom;
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.Observation;
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
import org.tela_botanica.client.vues.ArbreDateObservationFiltreVue;
import org.tela_botanica.client.vues.InformationRepartitionVue;
import org.tela_botanica.client.vues.ListeObservationVue;
import org.tela_botanica.client.vues.MiniZoomImageVue;
import com.google.gwt.user.client.Window;
public class ObservationModele {
/**
* Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
*/
private static boolean estInstancie = false ;
private static ObservationModele thisModele = null ;
/**
* La configuration en cours
*/
private Configuration config = null;
/**
* Le médiateur associé au modèle
*/
private ObservationMediateur observationMediateur = null ;
/**
* Retourne une instance de manière unique
* @param im le médiateur à associer
* @return l'instance du modèle
*/
static ObservationModele Instance(ObservationMediateur observationMediateur)
{
// si le modèle n'est pas encore instancié
if(!estInstancie)
{
// on en crée un nouveau
estInstancie = true ;
thisModele = new ObservationModele(observationMediateur);
}
return thisModele ;
}
private ObservationModele(ObservationMediateur observationMediateur) {
this.observationMediateur=observationMediateur;
config = new Configuration();
}
/**
* Appelle le DAO asynchrone pour obtenir le nombre d'observation
* @param r le rafraichissable auxquel on enverra les données
* @param filtrage
* @param taillePage
*/
public void obtenirNombreObservation(Rafraichissable r) {
String[][] criteres = {{"",""}} ;
criteres = observationMediateur.renvoyerFiltres() ;
// on rassemble les critères
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
}
/**
* Appelle le DAO asynchrone pour obtenir la liste des images
* @param r le rafraichissable auxquel on enverra les données
* @param taillePage
*/
public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
String[][] criteres = {{"",""}} ;
criteres = observationMediateur.renvoyerFiltres() ;
// on rassemble les critères
// ensuite on demande la page correspondante avec les mêmes critères
String[][] criteres2 = new String[criteres.length+2][2] ;
criteres2[0][0] = "limite" ;
criteres2[0][1] = ""+taillePage ;
criteres2[1][0] = "numero_page" ;
criteres2[1][1] = ""+pageEncours ;
for(int i = 0 ; i < criteres.length ; i++)
{
criteres2[i+2][0] = criteres[i][0] ;
criteres2[i+2][1] = criteres[i][1] ;
}
// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);
}
/**
* Obtenir une liste de commune
* @param r
* @param critere
*/
public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
ListeReferentielCommuneAsynchroneDAO refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
refDAO.obtenirListeDonnees(r, critere);
}
/**
* Obtenir une liste de nom scientifique de plante
* @param r
* @param critere
*/
public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
ListeReferentielNomAsynchroneDAO nomDAO=new ListeReferentielNomAsynchroneDAO(this);
nomDAO.obtenirListeDonnees(r, critere);
}
/**
*
* Lance la creation d'une observation
* @param r : la vue demandeuse de donnee
* @param critere : les criteres de selection
*/
public void ajouterObservation(Rafraichissable r, Observation obs) {
ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
obsDAO.ajouter(r, observationMediateur.getIdentifiant(), obs);
}
/**
*
* Lance la creation d'une observation
* @param r : la vue demandeuse de donnee
* @param critere : les criteres de selection
*/
public void modifierObservation(Rafraichissable r, Observation obs) {
ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
obsDAO.modifier(r, observationMediateur.getIdentifiant(), obs);
}
public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
obsDao.supprimer(r,observationMediateur.getIdentifiant(),numeroOrdre) ;
}
/**
* Accesseur pour la configuration en cours d'utilisation
*
* @return la configuration
*/
public Configuration getConfig() {
return config;
}
/**
* Obtenir des informations de repartition relative a un numero nomenclatural
* @param r
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
}
/**
* Obtenir une image generique associee a un numero nomenclatural
* @param r
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
}
/**
* Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur
* @param r
*/
public void obtenirListeEntiteGeographique(Rafraichissable r) {
ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
entDAO.obtenirListeEntitesGeographiques(r, observationMediateur.getIdentifiant());
}
public void obtenirDatesObservation(
Rafraichissable r) {
ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
ldoDAO.obtenirListeDate(r, observationMediateur.getIdentifiant());
}
public void obtenirLiaisonImage(Rafraichissable r,
String ordreObservation) {
LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
liaDAO.obtenirLiaisonsObservationsImages(r, ordreObservation,observationMediateur.getIdentifiant()) ;
}
public void exporterObservations() {
String[][] criteres = {{"",""}} ;
criteres = observationMediateur.renvoyerFiltres() ;
// on rassemble les critères
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
exoDAO.exporterObservations(observationMediateur.getIdentifiant(), criteres) ;
}
public void supprimerLiaisonImages(String idImg, String idObs) {
LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
lienDAO.supprimerLienImageObservation(idImg, idObs) ;
}
public String getIdentifiant() {
return observationMediateur.getIdentifiant() ;
}
}