Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 43 → Rev 40

/trunk/src/org/tela_botanica/client/CarnetEnLigneMediateur.java
38,7 → 38,8
private void _CarnetEnLigneMediateur() {
ImageMediateur.Instance() ;
ImageMediateur.Instance() ;
//new ImageMediateur(this);
new ObservationMediateur(this);
 
}
104,7 → 105,10
 
/**
* Deconnecte l'utilisateur passe en parametre
* @param String uti (utilisateur connecte)
*/
public void deconnecterUtilisateur() {
 
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
2,10 → 2,8
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.VueListable;
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
import org.tela_botanica.client.vues.ArbreMotsClesVue;
import org.tela_botanica.client.vues.BarreOutilsVue;
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
import org.tela_botanica.client.vues.GalerieImageVue;
import org.tela_botanica.client.vues.ListeImageVue;
import org.tela_botanica.client.vues.MenuImageVue;
116,16 → 114,6
private boolean selection = false ;
/**
* Filtre pour les mots cles
*/
private ArbreMotsClesFiltreVue filtreMotsCles = null ;
/**
* Filtre pour les commentaires
*/
private BarreRechercheFiltreVue filtreCommentaires = null ;
/**
* constructeur privé (on accède a la classe par la méthode getInstance
*/
private ImageMediateur()
184,9 → 172,6
detailsEtMotsCles.setTitleCollapse(true);
detailsEtMotsCles.setCollapsible(true);
filtreMotsCles = new ArbreMotsClesFiltreVue(this) ;
filtreCommentaires = new BarreRechercheFiltreVue(this) ;
// on crée le panneau conteneur des métadonnées et infos
metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
// et on l'inclut dans le volet approprié
347,24 → 332,6
}
/**
* Accesseur pour l'arbre des filtres
* @return l'arbre pour filtrer les mots clés
*/
public ArbreMotsClesFiltreVue getFiltreMotsCles()
{
return filtreMotsCles ;
}
/**
* Accesseur pour la barre de recherche
* @return la barre de recherche pour filtrer les commentaires
*/
public BarreRechercheFiltreVue getFiltreCommentaires()
{
return filtreCommentaires ;
}
/**
* Renvoie la vue sélectionné par l'utilisateur
* @return la vue selectionnée par l'utilisateur
*/
998,43 → 965,7
masked.unmask() ;
}
}
 
public void afficherFiltreMotsCles() {
getIModele().obtenirArbreMotCle(filtreMotsCles) ;
}
/**
* C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
* sous forme de tableau [nom, valeur]
* @return Les noms et valeurs des filtres
*/
public String[][] renvoyerFiltres()
{
String[][] valeursFiltres = { filtreMotsCles.renvoyerValeursAFiltrer() , filtreCommentaires.renvoyerValeursAFiltrer() } ;
return valeursFiltres ;
}
/**
* Indique si les filtres ont changés depuis la dernière requête
* (il faut faire un OR sur le résultat de toutes les fonctions
* renvoyerEtatFiltre s'il y a plus d'un filtre)
* @return Une indication de changements de filtres
*/
public boolean getEtatFiltres()
{
System.out.println("les filtres sont modifiés ? "+(filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre())) ;
return (filtreMotsCles.renvoyerEtatFiltre() || filtreCommentaires.renvoyerEtatFiltre());
}
 
public void afficherFiltreCommentaires() {
filtreCommentaires.afficherFiltre() ;
}
 
}
/trunk/src/org/tela_botanica/client/image/ImageModele.java
123,10 → 123,8
*/
public void obtenirPhotoGalerie(Rafraichissable r)
{
String motsClesFiltres[][] = getIMediateur().renvoyerFiltres() ;
// on rassemble les critères
String[][] criteres = {{"ci_ce_utilisateur", ""+getIMediateur().getIdentifiant()}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}, {motsClesFiltres[1][0],motsClesFiltres[1][1] }} ;
String[][] criteres = {{"ci_ce_utilisateur", ""+getIMediateur().getIdentifiant()} } ;
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
NombreImageAsynchroneDAO niaDAO = new NombreImageAsynchroneDAO() ;
niaDAO.setIModele(this) ;
133,7 → 131,7
niaDAO.obtenirNombreImages(this, criteres) ;
// ensuite on demande la page correspondante avec les mêmes critères
String[][] criteres2 = { {"ci_limite" ,""+taillePage },{"ci_numero_page",""+pageEncours}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}, {motsClesFiltres[1][0],motsClesFiltres[1][1] }} ;
String[][] criteres2 = { {"ci_limite" ,""+taillePage },{"ci_numero_page",""+pageEncours} } ;
// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
liaDAO.ObtenirListeImages(this, criteres2);
300,12 → 298,6
ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
Object[][] photoData = new Object[data.size()][7];
int i = 0 ;
if(data.size() == 0)
{
pageEncours = 0 ;
}
// on la parse et on récupère les informations quiç nous interessent
for (Iterator it = data.keySet().iterator(); it.hasNext();)
{
656,7 → 648,7
Double nPageInt = new Double(nPageRound) ;
// on convertit en entier
return Math.abs(nPageInt.intValue()) ;
return nPageInt.intValue() ;
}
/**
687,11 → 679,6
return getIMediateur().getIdentifiant() ;
}
 
/**
* renvoie la taille d'une image grâce à son identifiant
* @param id l'identifiant de l'image
* @return un tableau contenant la longueur et la hauteur de l'image
*/
public String[] obtenirTailleImage(String id) {
return ((ImageCarnet)cacheImage.get(id)).getTailleImage() ;
/trunk/src/org/tela_botanica/client/vues/BarreRechercheFiltreVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/ArbreMotsClesFiltreVue.java
27,12 → 27,6
import com.gwtext.client.widgets.tree.TreeNode;
import com.gwtext.client.widgets.tree.TreePanel;
 
/**
* fenêtre de recherche affichant l'arbre des mots clés en lecture et un bouton
* cliquable
* @author aurelien
*
*/
public class ArbreMotsClesFiltreVue extends Window implements Rafraichissable, Filtrable {
 
/**
64,18 → 58,11
*/
private boolean filtreModifie = false ;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
*/
private ArbreMotsClesFiltreVue()
{
super() ;
}
/**
* Constructeur avec paramètres
* @param im le médiateur à associer
*/
public ArbreMotsClesFiltreVue(ImageMediateur im)
{
112,7 → 99,7
this.setBorder(false) ;
this.setCollapsible(true) ;
this.setCloseAction(HIDE) ;
this.setTitleCollapse(true) ;
// on ajoute les listeners
ajouterListeners() ;
119,10 → 106,7
estInstancie = true ;
}
/**
* Ajoute les listeners
*/
private void ajouterListeners()
public void ajouterListeners()
{
// gestion de la validation
rechercher.addListener(new ButtonListenerAdapter() {
162,7 → 146,6
 
}) ;
// gestion de la fermeture du panneau
this.addListener(new WindowListenerAdapter() {
public void onClose(Panel panel) {
179,9 → 162,6
}) ;
}
/**
* Méthode héritée de l'interface rafraichissable
*/
public void rafraichir(Object nouvelleDonnees,
boolean repandreRaffraichissement) {
190,18 → 170,6
{
Tree nouvelArbre = (Tree)nouvelleDonnees ;
arbreMotsCles.getRootNode().eachChild(new NodeTraversalCallback() {
 
 
public boolean execute(Node node) {
node.remove() ;
return true ;
}
}) ;
copierFilsNoeud(nouvelArbre.getRootNode(), arbreMotsCles.getRootNode()) ;
getArbreMotsCles().expandAll() ;
221,37 → 189,21
}
/**
* Accesseur pour le médiateur
* @return le médiateur associé
*/
public ImageMediateur getIMediateur()
{
return iMediateur ;
}
/**
* Accesseur pour le panneau contenant l'arbre
* @return le panneau de l'arbre des mots clés
*/
public TreePanel getArbreMotsCles()
{
return arbreMotsCles ;
}
/**
* Méthode héritée de Filtrable
* renvoie le nom du filtre
*/
 
public String renvoyerNomFiltre() {
return "mots clés" ;
}
/**
* Renvoie un tableau contenant le nom du champ à filtrer et la valeur
* @return un tableau contenant le nom du champ à filtrer et sa valeur
*/
 
public String[] renvoyerValeursAFiltrer() {
String[] valeursFiltrees = {"ci_meta_mots_cles",motsClesEncours} ;
259,13 → 211,7
return valeursFiltrees ;
}
/**
* Fonction récursive qui prend deux noeuds d'arbre en paramètre et crée un copie du sous arbre du premier
* noeud, qu'elle concatène au deuxième
* @param ndPereOriginal le père des noeuds de l'arbre original
* @param ndPereCopie le père qui va recevoir les copies
*/
private void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie)
public void copierFilsNoeud(Node ndPereOriginal, TreeNode ndPereCopie)
{
Node[] ndNodeFils = ndPereOriginal.getChildNodes() ;
286,10 → 232,7
}
}
 
/**
* Méthode héritée de Filtrable
* Renvoie l'état du filtre modifié ou nom)
*/
 
public boolean renvoyerEtatFiltre() {
return filtreModifie ;
/trunk/src/org/tela_botanica/client/vues/pageToolBarVue.java
317,6 → 317,8
{
surTotalPage.setText(" sur "+pageTotale) ;
System.out.println("Nombre d'éléments :"+nbElement);
if(nbElement == 0)
{
champPage.setValue(""+(0)) ;
/trunk/src/org/tela_botanica/client/vues/MenuImageVue.java
28,17 → 28,9
*/
private Item supprimerImage = null ;
/**
* Item pour la recherche par mots clés
*/
private Item chercherImage = null ;
/**
* Item pour la recherche sur les commentaires
*/
private Item chercherCommentaire = null ;
/**
* Constructeur sans argument (privé car ne doit être utilisé)
*/
private MenuImageVue()
59,13 → 51,10
// on construit le menu
uploaderImage = new Item("Uploader des images") ;
supprimerImage = new Item("Supprimer les images selectionnées") ;
chercherImage = new Item("Filtrer par les mots clés") ;
chercherCommentaire = new Item("Filtrer par les commentaires") ;
chercherImage = new Item("Filtrer des images") ;
addItem(uploaderImage);
addItem(supprimerImage) ;
addSeparator() ;
addItem(chercherImage) ;
addItem(chercherCommentaire) ;
// on ajoute les listeners
ajouterListeners() ;
86,6 → 75,8
{
// on notifie le médiateur
getIMediateur().uploaderImages() ;
// et on cache le menu
hide() ;
}
// si c'est la suppression
93,25 → 84,17
{
// on notifie le médiateur
getIMediateur().supprimerImages() ;
// et on chache le menu
hide() ;
}
// si c'est la recherche par mots clé
if(item.equals(chercherImage))
{
// on notifie le médiateur
getIMediateur().afficherFiltreMotsCles() ;
getIMediateur().afficherFiltres() ;
hide() ;
}
// si c'est la recherche par commentaires
if(item.equals(chercherCommentaire))
{
// on notifie le médiateur
getIMediateur().afficherFiltreCommentaires() ;
}
// enfin, on cache le menu
hide() ;
}
}) ;
/trunk/src/org/tela_botanica/client/interfaces/Filtrable.java
1,28 → 1,9
package org.tela_botanica.client.interfaces;
 
/**
* Les classes qui implémentent cette interface fonctionnent sous forme de filtres
* et doivent être capable de rendre compte de leur état (modifié ou non)
* et de renvoyer les valeurs de filtrage
* @author aurelien
*
*/
public interface Filtrable {
/**
* Renvoie un tableau contenant le nom du filtre et sa valeur
* @return un tableau contenant le nom du filtre (exemple : "ci_meta_mots_cle") et sa valeur
*/
public String[] renvoyerValeursAFiltrer() ;
/**
* Renvoie le nom du filtre de manière lisible (exemple : Filtre pour les mots clés)
* @return le nom du filtre
*/
public String renvoyerNomFiltre() ;
/**
* Renvoie l'état du filtre (modifié ou non)
* @return true si le filtre à été modifié depuis le dernier appel, false sinon
*/
public boolean renvoyerEtatFiltre() ;
}
/trunk/src/org/tela_botanica/client/CarnetEnLigneModele.java
29,7 → 29,7
 
/**
*
*
* @param retour
*/
public void getUtilisateurAsynchroneDAO(final iRetourUtilisateur retour) {
41,8 → 41,9
/**
*
*
* @param retour
*/
public Utilisateur getUtilisateurSynchroneDAO() {
 
return new Utilisateur("David Delon synchrone",true);
/trunk/src/org/tela_botanica/client/modeles/ImageCarnet.java
124,42 → 124,14
{
return "http://162.38.234.9/Documents/images_serveur/" ;
}
/**
* Renvoie le nom de base du fichier image et ses sous dossier
* @return le nom de base du fichier de type (XXX_XXX_XXX), et ses sous dossier
*/
public String[] getBaseFileName()
{
String id = getId() ;
int maxZeros = 9 - id.length() ;
for(int i = 0 ; i < maxZeros ; i++)
{
id = "0"+id ;
}
String dossierNv1 = id.substring(0, 3) ;
String dossierNv2 = id.substring(3, 6) ;
String fichierNv = id.substring(6, 9) ;
String nomFichier = dossierNv1+"_"+dossierNv2+"_"+fichierNv ;
String[] infosFichier = {nomFichier , dossierNv1 , dossierNv2} ;
return infosFichier ;
}
 
/**
* Renvoie le chemin et nom du fichier grand format
* @return le chemin du fichier grand format
*/
public String getLUrl() {
public String getUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/L/"+infosFichier[0]+"_L.jpg" ;
return getBaseUrl()+(String)this.get("ci_id_image")+".jpg" ;
}
/**
168,9 → 140,7
*/
public String getSUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/S/"+infosFichier[0]+"_S.jpg" ;
return getBaseUrl()+(String)this.get("ci_id_image")+"_S.jpg" ;
}
/**
179,9 → 149,7
*/
public String getMUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/M/"+infosFichier[0]+"_M.jpg" ;
return getBaseUrl()+(String)this.get("ci_id_image")+"_M.jpg" ;
}
/**
/trunk/src/org/tela_botanica/client/modeles/ListeImageAsynchroneDAO.java
58,14 → 58,10
{
for (int i = 0; i < criteres.length; i++) {
if(!criteres[i][1].equals(""))
requete += criteres[i][0]+"="+criteres[i][1] ;
if(i != criteres.length - 1)
{
if(i!= 0)
{
requete += "&";
}
requete += criteres[i][0]+"="+criteres[i][1] ;
requete += "&" ;
}
}
}
/trunk/src/org/tela_botanica/client/modeles/NombreImageAsynchroneDAO.java
51,15 → 51,16
for (int i = 0; i < criteres.length; i++) {
if(!criteres[i][0].equals("ci_ordre"))
{
if(!criteres[i][1].equals(""))
{
if(i != 0)
{
if(i!= 0)
{
requete += "&";
}
requete += criteres[i][0]+"="+criteres[i][1] ;
requete += "&" ;
}
requete += criteres[i][0]+"="+criteres[i][1] ;
if(i != criteres.length - 1)
{
requete += "&" ;
}
}
}
}
67,7 → 68,6
// on fait un get asynchrone
HTTPRequest.asyncGet("jrest/InventoryImageCount/"+iModele.getIdentifiant()+"/"+requete, new ResponseTextHandler() {
public void onCompletion(String responseText) {
final JSONValue responseValue = JSONParser.parse(responseText);