/trunk/src/org/tela_botanica/client/util/AutoCompletionRefComboBox.java |
---|
7,6 → 7,7 |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels; |
import org.tela_botanica.client.observation.ObservationMediateur; |
import com.google.gwt.user.client.Window; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.core.ListenerConfig; |
18,6 → 19,7 |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.widgets.form.ComboBox; |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter; |
public abstract class AutoCompletionRefComboBox extends ComboBox implements Rafraichissable { |
45,6 → 47,9 |
private boolean selectionValeur = false; |
private boolean estModifie = false; |
private Record rdSelectionne = null; |
private String valeurBrute = null; |
final String resultTplRefPerso = "<div class=\"search-item-ref\">{element_referentiel}</div>"; |
public AutoCompletionRefComboBox(String label, String nom, ObservationMediateur oMediateur, TypesReferentiels typeRef) { |
94,6 → 99,10 |
if (selectionValeur) { |
estModifie= true; |
selectionValeur=false; |
if(rdSelectionne != null) { |
Window.alert("ergregegegegergre"); |
setRawValue(rdSelectionne.getAsString("element_referentiel")); |
} |
onModificationValeur(); |
} |
else { |
113,13 → 122,21 |
// Listener completion |
addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
setValue(record.getAsString("element_referentiel")); |
public void onSelect(ComboBox comboBox, Record record, int index) { |
Window.alert(rdSelectionne.getAsString("element_referentiel")+" "+getRawValue()); |
valeurBrute = getRawValue(); |
rdSelectionne = record; |
selectionValeur=true; |
collapse(); |
} |
} |
@Override |
public void onBlur(Field field) { |
/*if(rdSelectionne == null || rdSelectionne.getAsString("element_referentiel").equals(getRawValue())) { |
setValue(getRawValue()); |
}*/ |
} |
}); |
} |
@Override |
/trunk/src/org/tela_botanica/client/util/ChampSaisieEtendu.java |
---|
3,11 → 3,16 |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.util.autocompletion.AutoCompletionComboBox; |
import com.google.gwt.core.client.Callback; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.user.client.Timer; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
26,140 → 31,25 |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter; |
public class ChampSaisieEtendu extends ComboBox implements Rafraichissable { |
// TODO: faire un enum |
private final int KEY_ALT = 18; |
private final int KEY_BACKSPACE = 8; |
private final int KEY_CTRL = 17; |
private final int KEY_DELETE = 46; |
private final int KEY_DOWN = 40; |
private final int KEY_END = 35; |
private final int KEY_ENTER = 13; |
private final int KEY_ESCAPE = 27; |
private final int KEY_HOME = 36; |
private final int KEY_LEFT = 37; |
private final int KEY_PAGEDOWN = 34; |
private final int KEY_PAGEUP = 33; |
private final int KEY_RIGHT = 39; |
private final int KEY_SHIFT = 16; |
private final int KEY_TAB = 9; |
private final int KEY_UP = 38; |
public class ChampSaisieEtendu extends AutoCompletionComboBox { |
private boolean selectionValeur = false; |
private boolean estModifie = false; |
private String cle = null; |
private String label = null; |
private Timer timer = null; |
final String resultTplRefPerso = "<div class=\"search-item-ref\">{valeur}</div>"; |
private List<String> cacheValeurs; |
private Record rdSelectionne = null; |
private String valeurBrute = ""; |
private String description = null; |
private ToolTip tpDesc = null; |
public ChampSaisieEtendu(String label, String cle) { |
public ChampSaisieEtendu(String label, String cle, String urlRequete) { |
super(label,cle); |
super(label, urlRequete); |
this.cle =cle; |
this.label = label; |
setTpl(resultTplRefPerso); |
setMode(ComboBox.REMOTE); |
setItemSelector("div.search-item-ref"); |
setTypeAhead(false); |
setLoadingText("Recherche..."); |
setHideTrigger(true); |
setValidateOnBlur(false); |
ListenerConfig listenerConfigAutocompletion=new ListenerConfig(); |
listenerConfigAutocompletion.setDelay(200); |
listenerConfigAutocompletion.setStopPropagation(false); |
listenerConfigAutocompletion.setStopEvent(false); |
initStoreVide(); |
if(Configuration.saisieChampsEtendusActivee()) { |
addKeyPressListener(new EventCallback() { |
@Override |
public void execute(EventObject e) { |
switch(e.getKey()) { |
case KEY_ALT: |
case KEY_CTRL: |
case KEY_END: |
case KEY_ESCAPE: |
case KEY_HOME: |
case KEY_LEFT: |
case KEY_PAGEDOWN: |
case KEY_PAGEUP: |
case KEY_RIGHT: |
case KEY_SHIFT: |
case KEY_TAB: |
case KEY_UP: |
break; |
case KEY_ENTER: |
if(rdSelectionne != null) { |
setValue(rdSelectionne.getAsString("valeur")); |
selectionValeur=true; |
valeurBrute = rdSelectionne.getAsString("valeur"); |
} |
break; |
case KEY_DOWN: |
if(getValueAsString().isEmpty() && !isExpanded()) { |
obtenirListeValeurs("*"); |
} |
break; |
default: |
if(timer != null) { |
timer.cancel(); |
} |
timer = new Timer() { |
@Override |
public void run() { |
obtenirListeValeurs(); |
} |
}; |
timer.schedule(300); |
valeurBrute = getValueAsString(); |
setValue(valeurBrute); |
} |
} |
},listenerConfigAutocompletion); |
} |
addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
rdSelectionne = record; |
setRawValue(rdSelectionne.getAsString("valeur")); |
} |
@Override |
public void onBlur(Field field) { |
if(rdSelectionne != null && !rdSelectionne.getAsString("valeur").equals(valeurBrute)) { |
setRawValue(valeurBrute); |
} |
} |
}); |
// A activer pour télécharger la description |
// si jamais on le décide |
addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onRender(Component component) { |
setLargeurChamp(); |
ChampSaisieEtendu.this.getEl().addListener("mouseover", new EventCallback() { |
@Override |
public void execute(EventObject e) { |
201,86 → 91,32 |
} |
} |
@Override |
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
@SuppressWarnings("unchecked") |
ArrayList<String> valeurs = (ArrayList<String>)nouvelleDonnees; |
cacheValeurs = valeurs; |
int i = 0; |
Object[][] refData = new Object[valeurs.size()][1]; |
for (Iterator<String> it = valeurs.iterator(); it.hasNext();) |
{ |
refData[i][0]= it.next(); |
i++; |
} |
FieldDef defValeur = new StringFieldDef("valeur"); |
FieldDef[] defTab = {defValeur}; |
RecordDef rd = new RecordDef(defTab); |
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
Store store = new Store(dataProxy,reader); |
setStore(store); |
store.load(); |
public String getCle() { |
return cle; |
} |
private void obtenirListeValeurs() { |
String valeurChamp = getRawValue(); |
obtenirListeValeurs(valeurChamp); |
public String getLabel() { |
return label; |
} |
private void obtenirListeValeurs(String valeurChamp) { |
if(valeurChamp == null) { |
valeurChamp = ""; |
} else { |
valeurChamp += "*"; |
} |
ListeReferentielChampsEtendusDAO lrceDao = new ListeReferentielChampsEtendusDAO(null); |
lrceDao.obtenirListeValeursChampEtendu(this, cle, valeurChamp); |
@Override |
protected Map<String, String> parserResultatRequete(Response response) { |
return ListeReferentielChampsEtendusDAO.parserRetourListeValeursChampsEtendus(response); |
} |
public void setLargeurChamp() { |
// Correction un peu moche pour améliorer l'affichage du champ |
String idElementEnfant = Ext.get(("x-form-el-"+cle)).getFirstChild().getId(); |
Ext.get(idElementEnfant).setWidth("90%", false); |
Ext.get(cle).setWidth("100%", false); |
@Override |
protected void onModificationValeur() { |
// TODO Auto-generated method stub |
} |
private void initStoreVide() { |
Object[][] refData = new Object[0][1]; |
FieldDef defValeur = new StringFieldDef("valeur"); |
FieldDef[] defTab = {defValeur}; |
RecordDef rd = new RecordDef(defTab); |
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
Store store = new Store(dataProxy,reader); |
setStore(store); |
store.load(); |
@Override |
protected void onSelectionValeur() { |
// TODO Auto-generated method stub |
} |
@Override |
public void setValue(String valeur) { |
valeurBrute = valeur; |
super.setValue(valeur); |
protected void onValidationSaisie() { |
// TODO Auto-generated method stub |
} |
public String getCle() { |
return cle; |
} |
public String getLabel() { |
return label; |
} |
} |
/trunk/src/org/tela_botanica/client/util/Util.java |
---|
14,9 → 14,12 |
import org.tela_botanica.client.modeles.objets.Observation; |
import com.google.gwt.dom.client.Element; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.DOM; |
import com.google.gwt.user.client.ui.RootPanel; |
438,4 → 441,28 |
public static void curseurParDefaut() { |
RootPanel.getBodyElement().getStyle().setProperty("cursor", "default"); |
} |
public static Map<String, String> parserRetourReferentielPerso(Response response) { |
final Map<String, String> referentielData = new HashMap<String, String>(); |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray reponse = null; |
// si c'est un tableau |
if ((reponse = responseValue.isArray()) != null) { |
JSONString elementsRef; |
final int taillemax = reponse.size(); |
for (int i = 0; i < taillemax; i++) { |
if ((elementsRef = reponse.get(i).isString()) != null) { |
String valeur = elementsRef.stringValue(); |
referentielData.put(i+"", valeur); |
} |
} |
} |
return referentielData; |
} |
} |
/trunk/src/org/tela_botanica/client/util/FormulaireSaisieChampEtendu.java |
---|
8,57 → 8,31 |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.objets.ListeChampsEtendus; |
import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus; |
import org.tela_botanica.client.util.autocompletion.AutoCompletionComboBox; |
import com.google.gwt.core.client.Callback; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.ListBox; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.core.Ext; |
import com.gwtext.client.core.ListenerConfig; |
import com.gwtext.client.data.ArrayReader; |
import com.gwtext.client.data.FieldDef; |
import com.gwtext.client.data.MemoryProxy; |
import com.gwtext.client.data.Record; |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.SimpleStore; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.widgets.Button; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.event.ButtonListenerAdapter; |
import com.gwtext.client.widgets.form.ComboBox; |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.FormPanel; |
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter; |
import com.gwtext.client.widgets.layout.FormLayout; |
@SuppressWarnings("unchecked") |
public abstract class FormulaireSaisieChampEtendu extends FormPanel implements Rafraichissable { |
private final int KEY_ALT = 18; |
private final int KEY_BACKSPACE = 8; |
private final int KEY_CTRL = 17; |
private final int KEY_DELETE = 46; |
private final int KEY_DOWN = 40; |
private final int KEY_END = 35; |
private final int KEY_ENTER = 13; |
private final int KEY_ESCAPE = 27; |
private final int KEY_HOME = 36; |
private final int KEY_LEFT = 37; |
private final int KEY_PAGEDOWN = 34; |
private final int KEY_PAGEUP = 33; |
private final int KEY_RIGHT = 39; |
private final int KEY_SHIFT = 16; |
private final int KEY_TAB = 9; |
private final int KEY_UP = 38; |
final ComboBox nChamp; |
final String resultTplRefPerso = "<div class=\"search-item-ref\">{label_fmt}</div>"; |
final AutoCompletionComboBox nChamp; |
Button ajouterChampsEtenduEtFermer; |
Button ajouterChampsEtendu; |
Button annulerAjouterChampEtendu; |
65,20 → 39,16 |
String idChamp = null; |
Panel conteneurGroupesChampsEtendus; |
final ComboBox groupesChampsEtendus; |
Panel conteneurlabelGroupe; |
ListBox listeGroupeChampsEtendus; |
HTML indicationSaisieGroupe; |
private static ListeGroupesChampsEtendus cacheGroupes; |
private static Map<String, String> cacheLabelsCle; |
private Timer timer = null; |
private static Map<String, String> cacheClesValeur; |
private HTML descriptionChamp = null; |
private String groupeSelectionne = null; |
private Record rdSelectionne = null; |
private Record groupeSelectionne = null; |
private String valeurBrute = ""; |
public FormulaireSaisieChampEtendu() { |
super(); |
setPaddings(3); |
89,16 → 59,15 |
"De nouveaux groupes seront ajoutés régulièrement en fonction des champs les plus utilisés"); |
indicationSaisieGroupe.addStyleName("aideCreerChampEtendu"); |
groupesChampsEtendus = new ComboBox(); |
groupesChampsEtendus.setWidth("350px"); |
groupesChampsEtendus.setLabel("Ajouter un groupe de champs"); |
groupesChampsEtendus.setDisplayField("label") ; |
groupesChampsEtendus.setValueField("cle"); |
groupesChampsEtendus.setEditable(false); |
groupesChampsEtendus.setHideTrigger(false); |
groupesChampsEtendus.setForceSelection(true); |
groupesChampsEtendus.setCls("champ-separation"); |
groupesChampsEtendus.setValue(""); |
conteneurlabelGroupe = new Panel(); |
conteneurlabelGroupe.setStyleName("panneauEnLigne"); |
conteneurlabelGroupe.addStyleName("selecteurGroupeEtendus"); |
conteneurlabelGroupe.setBorder(false); |
Label labelGroupeChampsEtendus = new Label("Ajouter un groupe de champs :"); |
listeGroupeChampsEtendus = new ListBox(); |
listeGroupeChampsEtendus.setWidth("315px"); |
conteneurlabelGroupe.add(labelGroupeChampsEtendus); |
conteneurlabelGroupe.add(listeGroupeChampsEtendus); |
conteneurGroupesChampsEtendus = new Panel(); |
conteneurGroupesChampsEtendus.setBorder(false); |
126,19 → 95,38 |
HorizontalPanel hp = new HorizontalPanel(); |
hp.setBorderWidth(0); |
nChamp = new ComboBox("Nom du champ", "nom_champ_etendu"); |
nChamp.setWidth("350px"); |
nChamp.setTpl(resultTplRefPerso); |
nChamp.setMode(ComboBox.REMOTE); |
nChamp.setItemSelector("div.search-item-ref"); |
nChamp.setTypeAhead(false); |
nChamp.setLoadingText("Recherche..."); |
nChamp.setHideTrigger(true); |
nChamp.setValidateOnBlur(false); |
Store store = initStoreChampsEtendusVide(); |
store.load(); |
nChamp.setStore(store); |
nChamp = new AutoCompletionComboBox("Nom du champ", ListeReferentielChampsEtendusDAO.getUrlRequeteNomsChampsEtendus()) { |
@Override |
protected Map<String, String> parserResultatRequete( |
Response response) { |
Map<String, String> clesLabels = ListeReferentielChampsEtendusDAO.parserRetourListeNomsChampsEtendus(response); |
cacheLabelsCle = new HashMap<String, String>(); |
for(Map.Entry<String, String> entry : clesLabels.entrySet()){ |
cacheLabelsCle.put(entry.getValue(), entry.getKey()); |
} |
return clesLabels; |
} |
@Override |
protected void onSelectionValeur() { |
telechargerEtAfficherDescriptionChamps(cacheLabelsCle.get(nChamp.getRawValue())); |
} |
@Override |
protected void onValidationSaisie() { |
// rien à faire ici |
} |
@Override |
protected void onModificationValeur() { |
// rien à faire ici non plus |
} |
}; |
nChamp.addStyleName("panneauEnLigne"); |
add(nChamp); |
descriptionChamp = new HTML(); |
161,96 → 149,19 |
} |
private void ajouterListeners() { |
ListenerConfig listenerConfigAutocompletion=new ListenerConfig(); |
listenerConfigAutocompletion.setDelay(200); |
listenerConfigAutocompletion.setStopPropagation(false); |
listenerConfigAutocompletion.setStopEvent(true); |
nChamp.addKeyPressListener(new EventCallback() { |
listeGroupeChampsEtendus.addChangeHandler(new ChangeHandler() { |
@Override |
public void execute(EventObject e) { |
switch(e.getKey()) { |
case KEY_ALT: |
case KEY_CTRL: |
case KEY_END: |
case KEY_HOME: |
case KEY_LEFT: |
case KEY_PAGEDOWN: |
case KEY_PAGEUP: |
case KEY_RIGHT: |
case KEY_SHIFT: |
case KEY_TAB: |
case KEY_UP: |
break; |
case KEY_ENTER: |
if(rdSelectionne != null) { |
nChamp.setValue(rdSelectionne.getAsString("label")); |
valeurBrute = rdSelectionne.getAsString("cle"); |
} |
break; |
case KEY_DOWN: |
if(nChamp.getValueAsString().isEmpty() && !nChamp.isExpanded()) { |
obtenirListeValeurs("*"); |
} |
break; |
case KEY_ESCAPE: |
surAnnulation(); |
break; |
default: |
if(timer != null) { |
timer.cancel(); |
} |
timer = new Timer() { |
@Override |
public void run() { |
obtenirListeValeurs(); |
} |
}; |
timer.schedule(300); |
valeurBrute = nChamp.getRawValue(); |
nChamp.setRawValue(valeurBrute); |
} |
public void onChange(ChangeEvent event) { |
groupeSelectionne = listeGroupeChampsEtendus.getValue(listeGroupeChampsEtendus.getSelectedIndex()); |
} |
},listenerConfigAutocompletion); |
nChamp.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
rdSelectionne = record; |
telechargerEtAfficherDescriptionChamps(rdSelectionne.getAsString("cle")); |
nChamp.setRawValue(rdSelectionne.getAsString("label")); |
valeurBrute = rdSelectionne.getAsString("cle"); |
} |
@Override |
public void onBlur(Field field) { |
if(rdSelectionne != null && !rdSelectionne.getAsString("cle").equals(valeurBrute)) { |
nChamp.setRawValue(valeurBrute); |
} |
telechargerEtAfficherDescriptionChamps(valeurBrute); |
} |
}); |
}); |
groupesChampsEtendus.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
groupeSelectionne = record; |
} |
}); |
ajouterChampsEtenduEtFermer.addListener(new ButtonListenerAdapter() { |
@Override |
public void onClick(Button button, EventObject e) { |
if(doitAjouterGroupe()) { |
surValidationMultiple(renvoyerListeChampsEtendus(groupeSelectionne.getAsString("cle"))); |
surValidationMultiple(renvoyerListeChampsEtendus(groupeSelectionne)); |
} else { |
if(champEtenduEstValide()) { |
surValidation(validerEtRenvoyerChampEtendu()); |
282,19 → 193,16 |
} |
private void raz() { |
timer = null; |
idChamp = null; |
nChamp.clearValue(); |
nChamp.reset(); |
nChamp.focus(); |
} |
private ChampSaisieEtendu validerEtRenvoyerChampEtendu() { |
String valeurChamp = nChamp.getRawValue(); |
// Valeur contient soit la clé, soit le label s'il existe |
// valeur brute contient toujours la clé |
// TODO: utiliser les champs de google et pas ceux de GWT-EXT qui puent du cul |
ChampSaisieEtendu retour = new ChampSaisieEtendu(valeurChamp, valeurBrute); |
retour.setId(valeurBrute); |
String labelChamp = nChamp.getRawValue(); |
String cleChamp = cacheLabelsCle.containsKey(labelChamp) ? cacheLabelsCle.get(labelChamp) : labelChamp; |
ChampSaisieEtendu retour = new ChampSaisieEtendu(labelChamp, cleChamp, ListeReferentielChampsEtendusDAO.getUrlRequeteValeursChampEtendu(cleChamp)); |
retour.setId(cleChamp); |
return retour; |
} |
304,7 → 212,7 |
for (Iterator<String> iterator = listeChampsEtendus.keySet().iterator(); iterator.hasNext();) { |
String cle = iterator.next(); |
String label = listeChampsEtendus.get(cle); |
ChampSaisieEtendu champ = new ChampSaisieEtendu(label, cle); |
ChampSaisieEtendu champ = new ChampSaisieEtendu(label, cle, ListeReferentielChampsEtendusDAO.getUrlRequeteValeursChampEtendu(cle)); |
champsDuGroupe.add(champ); |
} |
312,7 → 220,7 |
} |
private boolean doitAjouterGroupe() { |
return groupeSelectionne != null && !groupeSelectionne.getAsString("cle").equals(""); |
return groupeSelectionne != null && !groupeSelectionne.equals(""); |
} |
private boolean champEtenduEstValide() { |
320,19 → 228,6 |
return (valeurChamp != null && !valeurChamp.isEmpty()); |
} |
private boolean estUnChampSelectionne(String valeur) { |
return cacheClesValeur.containsValue(valeur); |
} |
private void obtenirListeValeurs() { |
obtenirListeValeurs(nChamp.getRawValue()); |
} |
private void obtenirListeValeurs(String valeur) { |
ListeReferentielChampsEtendusDAO lrce = new ListeReferentielChampsEtendusDAO(null); |
lrce.obtenirListeNomsChampsEtendus(this, valeur+"*"); |
} |
public abstract void surAjout(ChampSaisieEtendu champ); |
public abstract void surAjoutMultiple(List<ChampSaisieEtendu> champs); |
public abstract void surValidation(ChampSaisieEtendu champ); |
339,53 → 234,17 |
public abstract void surValidationMultiple(List<ChampSaisieEtendu> champs); |
public abstract void surAnnulation(); |
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
if(nouvelleDonnees instanceof ListeChampsEtendus) { |
int i = 0; |
ListeChampsEtendus clesLabels = (ListeChampsEtendus)nouvelleDonnees; |
cacheClesValeur = clesLabels; |
Object[][] refData = new Object[clesLabels.keySet().size()][3]; |
for (Iterator<String> it = clesLabels.keySet().iterator(); it.hasNext();) |
{ |
String cle = it.next(); |
String label = clesLabels.get(cle); |
refData[i][0]= cle; |
refData[i][1]= label; |
if(cle.equals(label.toLowerCase())) { |
refData[i][2]= label; |
} else { |
refData[i][2]= label+" ("+cle+")"; |
} |
i++; |
} |
FieldDef defCle = new StringFieldDef("cle"); |
FieldDef defLabel = new StringFieldDef("label"); |
FieldDef defLabelFmt = new StringFieldDef("label_fmt"); |
FieldDef[] defTab = {defCle, defLabel, defLabelFmt}; |
RecordDef rd = new RecordDef(defTab); |
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
Store store=new Store(dataProxy,reader); |
nChamp.setStore(store); |
store.load(); |
} |
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
if(nouvelleDonnees instanceof ListeGroupesChampsEtendus) { |
cacheGroupes = (ListeGroupesChampsEtendus)nouvelleDonnees; |
groupesChampsEtendus.setStore(getGroupesChampsEtendusStore(cacheGroupes)); |
listeGroupeChampsEtendus.addItem("..."); |
for (Iterator<String> iterator = cacheGroupes.keySet().iterator(); iterator.hasNext();) { |
listeGroupeChampsEtendus.addItem(iterator.next()); |
} |
if(cacheGroupes.size() > 0) { |
conteneurGroupesChampsEtendus.add(indicationSaisieGroupe); |
conteneurGroupesChampsEtendus.add(groupesChampsEtendus); |
conteneurGroupesChampsEtendus.add(conteneurlabelGroupe); |
doLayout(); |
} |
} |
422,41 → 281,4 |
descriptionChamp.setHTML("<span class=\"descriptionChampEtenduTitre\">Description :</span> "+description); |
} |
} |
private Store getGroupesChampsEtendusStore(ListeGroupesChampsEtendus listeGroupesChampsEtendus) { |
int i = 1; |
Object[][] valeurs = new Object[listeGroupesChampsEtendus.size()+1][2]; |
valeurs[0][0] = "..."; |
valeurs[0][1] = ""; |
if(listeGroupesChampsEtendus.size() > 0) { |
for (Iterator<String> it = listeGroupesChampsEtendus.keySet().iterator(); it.hasNext();) |
{ |
String cle = it.next(); |
valeurs[i][0]= cle; |
valeurs[i][1]= cle; |
i++; |
} |
} |
SimpleStore store = new SimpleStore(new String[] {"label","cle"},valeurs); |
store.load(); |
return store; |
} |
private Store initStoreChampsEtendusVide() { |
Object[][] refData = new Object[0][1]; |
FieldDef defLabel = new StringFieldDef("label"); |
FieldDef defCle = new StringFieldDef("cle"); |
FieldDef[] defTab = {defLabel, defCle}; |
RecordDef rd = new RecordDef(defTab); |
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
Store store = new Store(dataProxy,reader); |
return store; |
} |
} |
/trunk/src/org/tela_botanica/client/util/autocompletion/AutoCompletionComboBox.java |
---|
New file |
0,0 → 1,282 |
package org.tela_botanica.client.util.autocompletion; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.modeles.objets.Utilisateur; |
import com.google.gwt.core.client.Callback; |
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.event.dom.client.KeyCodes; |
import com.google.gwt.event.dom.client.KeyDownEvent; |
import com.google.gwt.event.dom.client.KeyDownHandler; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.event.logical.shared.SelectionEvent; |
import com.google.gwt.event.logical.shared.SelectionHandler; |
import com.google.gwt.event.logical.shared.ValueChangeEvent; |
import com.google.gwt.event.logical.shared.ValueChangeHandler; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.user.client.Event; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.ChangeListener; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.MultiWordSuggestOracle; |
import com.google.gwt.user.client.ui.SuggestBox; |
import com.google.gwt.user.client.ui.SuggestBox.DefaultSuggestionDisplay; |
import com.google.gwt.user.client.ui.TextBox; |
import com.google.gwt.user.client.ui.SuggestBox.SuggestionDisplay; |
import com.google.gwt.user.client.ui.SuggestOracle; |
import com.google.gwt.user.client.ui.Widget; |
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; |
import com.gwtext.client.widgets.BoxComponent; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.event.PanelListener; |
import com.gwtext.client.widgets.event.PanelListenerAdapter; |
import com.gwtext.client.widgets.layout.FitLayout; |
@SuppressWarnings("unchecked") |
public abstract class AutoCompletionComboBox extends Panel { |
Label label = null; |
MultiWordSuggestOracle msu = null; |
SuggestBox suggestions = null; |
DefaultSuggestionDisplay sgd = null; |
Callback<String, String> surCopierColler = null; |
SuggestOracle.Request requeteOracle; |
SuggestOracle.Callback callBackOracle; |
Timer suggestionTimer = null; |
int tempsAvantRequete = 500; |
Map<String, String> possibilites = null; |
String urlRequete = ""; |
public AutoCompletionComboBox(String nomLabel, String urlRequete) { |
this.setStyleName("champAutoComplete"); |
this.label = new Label(nomLabel+":"); |
this.urlRequete = urlRequete; |
sgd = new SuggestBox.DefaultSuggestionDisplay(); |
msu = new MultiWordSuggestOracle() { |
@Override |
public void requestSuggestions(Request request, Callback callback) { |
List<MultiWordSuggestion> retenus = new ArrayList<MultiWordSuggestion>(); |
Iterator<String> it = possibilites.keySet().iterator(); |
while (it.hasNext()) { |
String cle = it.next(); |
MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibilites.get(cle), possibilites.get(cle)); |
retenus.add(muWoSug); |
} |
Response reponse = new Response(retenus); |
callback.onSuggestionsReady(request, reponse); |
} |
}; |
suggestions = new SuggestBox(msu, new TextBox(), sgd) { |
public void onBrowserEvent(Event event) { |
switch (event.getTypeInt()) { |
case Event.ONPASTE: { |
if(surCopierColler != null) { |
surCopierColler.onSuccess(suggestions.getValueBox().getValue()); |
} |
} |
break; |
default: |
super.onBrowserEvent(event); |
} |
} |
}; |
suggestions.setAutoSelectEnabled(false); |
setLayout(new FitLayout()); |
add(label); |
add(suggestions); |
gererEvenements(); |
} |
public void gererEvenements() { |
suggestions.addKeyDownHandler(new KeyDownHandler() { |
@Override |
public void onKeyDown(KeyDownEvent event) { |
// Lorsque la liste de suggestions est ouverte, une frappe sur entrée selectionne la valeur |
// Si elle est fermée, elle déclenche la fonction abstraite de validation (utile pour les champs |
// du genre station, milieu etc... et la saisie d'obs rapide |
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { |
if((sgd == null || !sgd.isSuggestionListShowing())) { |
onValidationSaisie(); |
event.stopPropagation(); |
return; |
} else { |
// Dans les autres cas, un appui sur entrée ne doit pas redéclencher l'autcomplétion |
return; |
} |
} |
// Tout autre frappe d'un caractère "normal" déclenche le timer d'autocomplétion |
if(!KeyDownEvent.isArrow(event.getNativeKeyCode())) { |
gererTimer(); |
} |
} |
}); |
requeteOracle = new SuggestOracle.Request(); |
callBackOracle = new SuggestOracle.Callback() { |
public void onSuggestionsReady(SuggestOracle.Request request, SuggestOracle.Response response) { |
suggestions.showSuggestionList(); |
} |
}; |
suggestions.addSelectionHandler(new SelectionHandler<SuggestOracle.Suggestion>(){ |
@Override |
public void onSelection(SelectionEvent<Suggestion> event) { |
onSelectionValeur(); |
} |
}); |
suggestions.addValueChangeHandler(new ValueChangeHandler<String>() { |
@Override |
public void onValueChange(ValueChangeEvent<String> event) { |
onModificationValeur(); |
} |
}); |
surCopierColler = new Callback<String, String>() { |
@Override |
public void onSuccess(String result) { |
gererTimer(); |
} |
@Override |
public void onFailure(String reason) { |
// rien à faire ça n'échoue jamais |
} |
}; |
addListener(new PanelListenerAdapter() { |
@Override |
public void onResize(BoxComponent component, int adjWidth, int adjHeight, |
int rawWidth, int rawHeight) { |
redimensionner(rawWidth); |
} |
}); |
} |
public void redimensionner(final int largeur) { |
suggestions.setWidth((largeur - label.getOffsetWidth() - 13)+"px"); |
} |
public void gererTimer() { |
if(suggestionTimer == null) { |
suggestionTimer = new Timer() { |
public void run() { |
requeteSuggestions(); |
} |
}; |
suggestionTimer.schedule(tempsAvantRequete); |
} else { |
suggestionTimer.schedule(tempsAvantRequete); |
} |
} |
public void setTempsAvantRequete(int temps) { |
tempsAvantRequete = temps; |
} |
public int getTempsAvantRequete(int temps) { |
return tempsAvantRequete; |
} |
public void requeteSuggestions() { |
// Suppression des espaces et caractères inutiles |
String valeur = suggestions.getValue().trim().isEmpty() ? "*" : suggestions.getValue().trim(); |
final String requeteAjax = URL.encodeQueryString(valeur); |
// ceci permet au composant qui utilise l'autocomplétion |
// d'annuler une requete |
if(requeteAjax == null) { |
return; |
} |
String urlRequeteUtil = urlRequete.replace("{utilisateur}", Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()); |
String urlProxy = urlRequeteUtil+requeteAjax; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlProxy) ; |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(final Request request, final Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(final Request request, |
final Response response) { |
surReponseRequete(requeteAjax, response); |
} |
}) ; |
} catch (RequestException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
} |
public void surReponseRequete(String requete, Response response) { |
possibilites = parserResultatRequete(response); |
msu.clear(); |
Iterator<String> it = possibilites.keySet().iterator(); |
while (it.hasNext()) { |
msu.add(possibilites.get(it.next())); |
} |
requeteOracle.setQuery(requete); |
msu.requestSuggestions(requeteOracle, callBackOracle); |
} |
public String getText() { |
return suggestions.getText(); |
} |
public String getRawValue() { |
return suggestions.getText(); |
} |
public void setValue(String texte) { |
suggestions.setText(texte); |
} |
public void reset() { |
suggestions.setValue(""); |
} |
public void setTabIndex(int index) { |
suggestions.setTabIndex(index); |
} |
protected abstract Map<String, String> parserResultatRequete(Response response); |
protected abstract void onModificationValeur(); |
protected abstract void onSelectionValeur(); |
protected abstract void onValidationSaisie(); |
} |
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java |
---|
12,6 → 12,7 |
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.dao.ListeReferentielPersoAsynchroneDAO; |
import org.tela_botanica.client.modeles.objets.ChampEtendu; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation; |
18,10 → 19,12 |
import org.tela_botanica.client.modeles.objets.ListeObservation; |
import org.tela_botanica.client.modeles.objets.ListeReferentielLocalite; |
import org.tela_botanica.client.modeles.objets.ListeReferentielNom; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso; |
import org.tela_botanica.client.modeles.objets.Observation; |
import org.tela_botanica.client.modeles.objets.Ontologies; |
import org.tela_botanica.client.modeles.objets.ReferentielLocalite; |
import org.tela_botanica.client.modeles.objets.ReferentielNom; |
import org.tela_botanica.client.modeles.objets.Utilisateur; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels; |
import org.tela_botanica.client.observation.ObservationMediateur; |
import org.tela_botanica.client.util.AutoCompletionRefComboBox; |
28,9 → 31,15 |
import org.tela_botanica.client.util.ChampSaisieEtendu; |
import org.tela_botanica.client.util.FormulaireSaisieChampEtendu; |
import org.tela_botanica.client.util.Util; |
import org.tela_botanica.client.util.autocompletion.AutoCompletionComboBox; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTML; |
49,6 → 58,7 |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.widgets.BoxComponent; |
import com.gwtext.client.widgets.Button; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.DatePicker; |
import com.gwtext.client.widgets.Panel; |
91,9 → 101,9 |
FormPanel panneauFormulaire = null; |
private DateField date = null; |
private ComboBox lieudit = null; |
private ComboBox station = null; |
private ComboBox milieu = null; |
private AutoCompletionComboBox lieudit = null; |
private AutoCompletionComboBox station = null; |
private AutoCompletionComboBox milieu = null; |
private TextField comment = null; |
private ComboBox localite = null; |
358,18 → 368,27 |
panneauPremierColonne.add(htmllocalitePanel); |
station = new AutoCompletionRefComboBox("Station", "station", observationMediateur, TypesReferentiels.REFERENTIEL_STATION) { |
station = new AutoCompletionComboBox("Station", ListeReferentielPersoAsynchroneDAO.getUrlReferentielPerso(TypesReferentiels.REFERENTIEL_STATION)) { |
@Override |
public void onModificationValeur() { |
protected Map<String, String> parserResultatRequete(Response response) { |
return Util.parserRetourReferentielPerso(response); |
} |
@Override |
public void onSelectionValeur() { |
stationModifiee = true; |
} |
@Override |
protected void onModificationValeur() { |
stationModifiee = true; |
} |
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.STATION); |
} |
}; |
}; |
panneauPremierColonne.add(station, new AnchorLayoutData("95%")); |
latitude = new TextField("Lat", "lat"); |
500,32 → 519,49 |
selecteurAbondance.setTpl(champsListeTpl); |
panneauPremierColonne.add(selecteurAbondance, new AnchorLayoutData("95%")); |
lieudit = new AutoCompletionRefComboBox("Lieu-dit", "lieudit",observationMediateur,TypesReferentiels.REFERENTIEL_LIEU_DIT) { |
lieudit = new AutoCompletionComboBox("Lieu-dit", ListeReferentielPersoAsynchroneDAO.getUrlReferentielPerso(TypesReferentiels.REFERENTIEL_LIEU_DIT)) { |
@Override |
public void onModificationValeur() { |
protected Map<String, String> parserResultatRequete(Response response) { |
return Util.parserRetourReferentielPerso(response); |
} |
@Override |
public void onSelectionValeur() { |
lieuDitModifie = true; |
} |
@Override |
protected void onModificationValeur() { |
lieuDitModifie = true; |
} |
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.LIEUDIT); |
} |
}; |
} |
}; |
panneauSecondeColonne.add(lieudit, new AnchorLayoutData("95%")); |
milieu = new AutoCompletionRefComboBox("Milieu","milieu",observationMediateur,TypesReferentiels.REFERENTIEL_MILIEU) { |
milieu = new AutoCompletionComboBox("Milieu", ListeReferentielPersoAsynchroneDAO.getUrlReferentielPerso(TypesReferentiels.REFERENTIEL_MILIEU)) { |
@Override |
public void onModificationValeur() { |
protected Map<String, String> parserResultatRequete(Response response) { |
return Util.parserRetourReferentielPerso(response); |
} |
@Override |
public void onSelectionValeur() { |
milieuModifie = true; |
} |
@Override |
protected void onModificationValeur() { |
milieuModifie = true; |
} |
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.MILIEU); |
} |
} |
}; |
panneauSecondeColonne.add(milieu, new AnchorLayoutData("95%")); |
605,6 → 641,8 |
htmllocalitePanel.doLayout(); |
htmlPanel.doLayout(); |
redimensionnerChampsEtendus(); |
doLayout(); |
} |
631,6 → 669,7 |
if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) { |
conteneurChampEtenduGauche.show(); |
conteneurChampEtenduDroite.show(); |
redimensionnerChampsEtendus(); |
} |
lienAfficherChampsEtendus.setText("Cacher les champs étendus"); |
} |
718,7 → 757,7 |
} |
private void ajouterChampEtenduAuFormulaire(ChampSaisieEtendu nChamp, boolean fermerPopup) { |
ChampEtendu chet = new ChampEtendu(nChamp.getName(), nChamp.getFieldLabel(), ""); |
ChampEtendu chet = new ChampEtendu(nChamp.getCle(), nChamp.getLabel(), ""); |
Map<String, ChampEtendu> champsEt = getValeursChampsEtendus(); |
if(!champsEt.containsKey(chet.getCle())) { |
champsEt.put(chet.getCle(), chet); |
860,7 → 899,7 |
@Override |
public void onClick(Button button, EventObject e) { |
if(selectionMultiple) { |
modifierObservationEnMasse(null); |
modifierObservationEnMasse(null); |
} else { |
modifierObservation() ; |
} |
1408,10 → 1447,6 |
observationMediateur.obtenirListeReferentielNom(this,referentiel ,esp); |
} |
protected void obtenirReferentielStation() { |
observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_STATION,station.getText()); |
} |
protected void obtenirListeReferentielMilieu() { |
observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_MILIEU,milieu.getText()); |
} |
1793,7 → 1828,7 |
private void viderChampsEtendus() { |
if(listeChampsEtendus != null) { |
for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) { |
TextField champEtendu = listeChampsEtendus.get(it.next()); |
ChampSaisieEtendu champEtendu = listeChampsEtendus.get(it.next()); |
champEtendu.destroy(); |
} |
if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) { |
1852,7 → 1887,7 |
label = Util.formaterCleChampsEtenduPourAffichage(label); |
} |
ChampSaisieEtendu champTexteEtendu = new ChampSaisieEtendu(label, id); |
ChampSaisieEtendu champTexteEtendu = new ChampSaisieEtendu(label, id, ListeReferentielChampsEtendusDAO.getUrlRequeteValeursChampEtendu(id)); |
if(champ.equals(champsAFocus)) { |
champTexteEtendu.focus(); |
} |
1874,6 → 1909,8 |
if(!afficherChampsEtendus) { |
conteneurChampEtenduGauche.setVisible(false); |
conteneurChampEtenduDroite.setVisible(false); |
} else { |
redimensionnerChampsEtendus(); |
} |
} else { |
lienAfficherChampsEtendus.setVisible(false); |
1880,6 → 1917,25 |
} |
doLayout(); |
} |
private void redimensionnerChampsEtendus() { |
int largeur = conteneurChampEtenduGauche.getWidth(); |
if(largeur <= 0) { |
Timer t = new Timer() { |
@Override |
public void run() { |
redimensionnerChampsEtendus(); |
} |
}; |
t.schedule(150); |
} else { |
for (Iterator<String> iterator = listeChampsEtendus.keySet().iterator(); iterator |
.hasNext();) { |
ChampSaisieEtendu ch = listeChampsEtendus.get(iterator.next()); |
ch.redimensionner(largeur - 15); |
} |
} |
} |
private Map<String, ChampEtendu> getValeursChampsEtendus() { |
Map<String, ChampEtendu> valeursChampsEtendus = new HashMap<String, ChampEtendu>(); |
1886,9 → 1942,9 |
if(listeChampsEtendus != null) { |
for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) { |
String cle = it.next(); |
TextField champTexteEtendu = listeChampsEtendus.get(cle); |
String label = champTexteEtendu.getFieldLabel(); |
String valeur = champTexteEtendu.getValueAsString(); |
ChampSaisieEtendu champTexteEtendu = listeChampsEtendus.get(cle); |
String label = champTexteEtendu.getLabel(); |
String valeur = champTexteEtendu.getRawValue(); |
ChampEtendu champEtendu = new ChampEtendu(cle, label, valeur); |
valeursChampsEtendus.put(cle, champEtendu); |
} |
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielPersoAsynchroneDAO.java |
---|
100,4 → 100,12 |
e.printStackTrace(); |
} |
} |
public static String getUrlReferentielPerso(TypesReferentiels refDemande) { |
return Configuration.getServiceBaseUrl() + |
"/SelfRefList/"+ |
"{utilisateur}/"+ |
refDemande.toString()+ |
"?start=0&limit=50&recherche="; |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielChampsEtendusDAO.java |
---|
3,6 → 3,7 |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.Map; |
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
255,4 → 256,49 |
protected static String obtenirNomPageChampEtendu(String cle) { |
return prefixePageChampEtendu+Util.convertirEnChaMot(cle); |
} |
public static String getUrlRequeteValeursChampEtendu(String cle) { |
return Configuration.getServiceBaseUrl() + |
"/NomsChampsEtendus/valeur"+ |
"?cle="+URL.encode(cle)+"&recherche="; |
} |
public static String getUrlRequeteNomsChampsEtendus() { |
return Configuration.getServiceBaseUrl()+ |
"/NomsChampsEtendus/cle?recherche="; |
} |
public static Map<String, String> parserRetourListeValeursChampsEtendus(Response response) { |
Map<String, String> valeurs = new HashMap<String, String>(); |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray reponse = null; |
if ((reponse = responseValue.isArray()) != null) { |
for(int i = 0; i < reponse.size(); i++) { |
valeurs.put(reponse.get(i).isString().stringValue(), reponse.get(i).isString().stringValue()); |
} |
} |
return valeurs; |
} |
public static Map<String, String> parserRetourListeNomsChampsEtendus(Response response) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONObject reponse = null; |
cacheClesLabels = new HashMap<String, String>(); |
if ((reponse = responseValue.isObject()) != null) { |
Iterator<String> it = reponse.keySet().iterator(); |
while(it.hasNext()) { |
String cle = it.next(); |
String valeur = reponse.get(cle).isString().stringValue(); |
cacheClesLabels.put(cle, valeur); |
} |
} |
return cacheClesLabels; |
} |
} |