package net.codjo.broadcast.gui.selector; import net.codjo.broadcast.gui.AbstractGuiPreference; import net.codjo.mad.client.request.FieldsList; import net.codjo.mad.client.request.RequestException; import net.codjo.mad.client.request.RequestSender; import net.codjo.mad.client.request.Result; import net.codjo.mad.client.request.ResultManager; import net.codjo.mad.client.request.Row; import net.codjo.mad.common.structure.StructureReader; import net.codjo.mad.gui.request.factory.SelectFactory; import java.util.HashMap; import javax.swing.JComboBox; /** * */ public abstract class AbstractSelectorGuiPreference extends AbstractGuiPreference { protected AbstractSelectorGuiPreference(String family, String computedTable, StructureReader structures) { super(family, computedTable, structures); } protected abstract String getSelectorColumnsDescription(); protected abstract SelectionComboBoxBuilder addStaticSelectors(SelectionComboBoxBuilder comboBoxBuilder); public JComboBox buildSelectionComboBox() throws RequestException { return createComboBox(usingBuilder()); } @Override protected JComboBox createComboBox(SelectionComboBoxBuilder builder) { SelectionComboBoxBuilder selectionComboBoxBuilder = addStaticSelectors(builder); try { Result result = selectAllQueries(); for (int index = 0; index < result.getRowCount(); index++) { final Row row = result.getRow(index); String selectorId = "-" + row.getFieldValue("selectorId"); String selectorName = "<G�n�rique> " + row.getFieldValue("selectorName"); selectionComboBoxBuilder = selectionComboBoxBuilder.withSelector(selectorId, selectorName); } } catch (RequestException e) { throw new RuntimeException( "Une erreur s'est produite durant l'initialisation de la combo des s�lections."); } return selectionComboBoxBuilder.create(); } private Result selectAllQueries() throws RequestException { SelectFactory selectFactory = new SelectFactory("selectAllBroadcastSelectorByFamily"); FieldsList selector = new FieldsList("family", this.getFamily()); selectFactory.init(selector); RequestSender requestSender = new RequestSender(); ResultManager resultManager = requestSender.send(selectFactory.buildRequest(new HashMap())); return (Result)resultManager.getResults().iterator().next(); } }