Commit db4493f4 authored by Unknown's avatar Unknown

Maj : DTO + UI + Decorator pour Administrer les règles de contrôles

git-svn-id: https://scmforge.ifremer.fr/authscm/lp1ee9d/svn/reefdb/trunk@385 cd918a83-917d-4a2a-92d7-bc1d03929fc5
parent 4f89bc90
......@@ -8,6 +8,7 @@ import org.nuiton.decorator.DecoratorProvider;
import fr.ifremer.reefdb.decorator.DecoratorService;
import fr.ifremer.reefdb.decorator.ReefDbDecorator;
import fr.ifremer.reefdb.dto.config.administrerreglescontroles.ListeReglesDTO;
import fr.ifremer.reefdb.dto.data.contexts.ContextDTO;
import fr.ifremer.reefdb.dto.observation.CampagneDTO;
import fr.ifremer.reefdb.dto.observation.OccasionDTO;
......@@ -62,6 +63,7 @@ public class DecoratorServiceImpl implements DecoratorService {
registerReefDbDecorator(FractionDTO.class, "${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(GroupeTaxonDTO.class, "${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(LieuDTO.class,"${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(ListeReglesDTO.class,"${code}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(MethodeDTO.class, "${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(OccasionDTO.class,"${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
registerReefDbDecorator(ParametreDTO.class, "${mnemonique}$s", TOKEN_SEPARATOR, SEPARATOR);
......
......@@ -4,6 +4,7 @@ import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import fr.ifremer.reefdb.dto.config.administrerreglescontroles.ListeReglesDTO;
import fr.ifremer.reefdb.dto.config.programmesstrategies.ProgrammeProgStratDTO;
/**
......@@ -36,4 +37,16 @@ public interface ConfigurationService {
* @param idLieux Identifiants des lieux
*/
void supprimerLieux(List<Integer> idLieux);
/**
* Recupère une liste de regle de controle
* @param une regle de controle
*/
ListeReglesDTO getListeRegles(final Integer idRegle);
/**
* Recupère toute la liste de regles de controle
* @param une liste de liste de regle de controle
*/
List<ListeReglesDTO> getFullListeRegles();
}
......@@ -5,6 +5,7 @@ import java.util.List;
import org.springframework.stereotype.Service;
import fr.ifremer.reefdb.dto.config.administrerreglescontroles.ListeReglesDTO;
import fr.ifremer.reefdb.dto.config.programmesstrategies.ProgrammeProgStratDTO;
import fr.ifremer.reefdb.service.mock.GestionMock;
......@@ -32,6 +33,24 @@ public class ConfigurationServiceImpl implements ConfigurationService {
return resultat;
}
@Override
public ListeReglesDTO getListeRegles(final Integer idRegle) {
// Recherche d'une regle en fonction de son ID
final List<ListeReglesDTO> listeRegles = GestionMock.getInstance().getListeRegles();
for (final ListeReglesDTO listeReglesMemoire : listeRegles) {
if (listeReglesMemoire.getId() == idRegle) {
return listeReglesMemoire;
}
}
return null;
}
@Override
public List<ListeReglesDTO> getFullListeRegles() {
return GestionMock.getInstance().getListeRegles();
}
@Override
public void supprimerProgrammes(final List<Integer> idProgrammes) {
// Do nothing
......
......@@ -8,6 +8,7 @@ import java.util.List;
import org.nuiton.util.DateUtil;
import fr.ifremer.reefdb.dto.ReefDbBeanFactory;
import fr.ifremer.reefdb.dto.config.administrerreglescontroles.ListeReglesDTO;
import fr.ifremer.reefdb.dto.config.programmesstrategies.LieuProgStratDTO;
import fr.ifremer.reefdb.dto.config.programmesstrategies.ProgrammeProgStratDTO;
import fr.ifremer.reefdb.dto.config.programmesstrategies.PsfmProgStratDTO;
......@@ -52,6 +53,11 @@ public class GestionMock {
*/
private List<GroupeTaxonDTO> groupeTaxons;
/**
* La liste de liste de regles
*/
private List<ListeReglesDTO> listeRegles;
/**
* La liste des programmes et strategies.
*/
......@@ -80,6 +86,7 @@ public class GestionMock {
// Instance des objets
setObservations(new ArrayList<ObservationEntity>());
setGroupeTaxons(new ArrayList<GroupeTaxonDTO>());
setListeRegles(new ArrayList<ListeReglesDTO>());
setProgrammesStrategies(new ArrayList<ProgrammeProgStratDTO>());
setDepartements(new ArrayList<DepartementDTO>());
setServiceReference(new ReferentielServiceImpl());
......@@ -106,6 +113,10 @@ public class GestionMock {
getGroupeTaxons().add(creerGroupeTaxons(2));
getGroupeTaxons().add(creerGroupeTaxons(3));
getListeRegles().add(creerListeRegles(1));
getListeRegles().add(creerListeRegles(2));
getListeRegles().add(creerListeRegles(3));
final List<ProgrammeDTO> programmes = new ArrayList<ProgrammeDTO>();
final List<LieuDTO> lieux = new ArrayList<LieuDTO>();
for (final ObservationEntity observation : getObservations()) {
......@@ -409,6 +420,43 @@ public class GestionMock {
return resultat;
}
private ListeReglesDTO creerListeRegles(final int indice) {
final ListeReglesDTO listeRegles = ReefDbBeanFactory.newListeReglesDTO();
listeRegles.setId(indice);
listeRegles.setActif((indice % 2) == 0 ? true : false);
switch (indice) {
case 1:
listeRegles.setCode("Contrôle Belt Poisson");
listeRegles.setDescription("Controle divers sur les poissons");
listeRegles.setMoisDeDebutApplication("Janvier");
listeRegles.setMoisDeFinApplication("Avril");
break;
case 2:
listeRegles.setCode("Contrôle Lit Poisson");
listeRegles.setDescription("Controle divers sur les algues");
listeRegles.setMoisDeDebutApplication("Septembre");
listeRegles.setMoisDeFinApplication("Novembre");
break;
default:
listeRegles.setCode("Contrôle générique");
listeRegles.setDescription("Contrôle générique, aucune description particulière");
listeRegles.setMoisDeDebutApplication("Janvier");
listeRegles.setMoisDeFinApplication("Decembre");
break;
}
return listeRegles;
}
public List<ListeReglesDTO> getListeRegles() {
return listeRegles;
}
private void setListeRegles(final List<ListeReglesDTO> listeRegles) {
this.listeRegles = listeRegles;
}
public List<ObservationEntity> getObservations() {
return observations;
}
......
......@@ -8,4 +8,12 @@
actionIcon: save;
text: "reefdb.config.boutonSauvegarder.label";
_applicationAction: {fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.actions.SauvegarderAction.class};
}
\ No newline at end of file
}
#scrollMessageAffiche {
border: {BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), t("reefdb.ui.swing.content.config.administrer.regles.adminreglesui.messageaffiche.title"))};
}
#scrollDescription {
border: {BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), t("reefdb.ui.swing.content.config.administrer.regles.adminreglesui.description.title"))};
}
<Table decorator='help' implements='fr.ifremer.reefdb.ui.swing.util.ReefDbUI&lt;AdminReglesUIModel, AdminReglesUIHandler&gt;'>
<JPanel layout="{new BorderLayout()}" decorator='help' implements='fr.ifremer.reefdb.ui.swing.util.ReefDbUI&lt;AdminReglesUIModel, AdminReglesUIHandler&gt;'>
<import>
fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker
fr.ifremer.reefdb.ui.swing.ReefDbUIContext
fr.ifremer.reefdb.ui.swing.util.ReefDbUI
fr.ifremer.reefdb.ui.swing.util.ReefDbUIUtil
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.menu.AdminReglesMenuUI
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.table.listereglestable.ListeReglesTableUI
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.table.programmescontroletable.ProgrammesControleTableUI
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.table.servicescontroletable.ServicesControleTableUI
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.table.reglescontroletable.ReglesControleTableUI
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.table.psfmcontroletable.PSFMControleTableUI
java.awt.FlowLayout
javax.swing.Box
javax.swing.BoxLayout
......@@ -26,23 +33,65 @@
}
]]></script>
<row>
<cell weightx='1' weighty='1' fill='both' columns="3">
</cell>
</row>
<row>
<cell weightx='1' weighty='0' fill='horizontal'>
<JLabel/>
</cell>
<cell weightx='0' weighty='0' fill='horizontal'>
<JPanel layout='{new FlowLayout()}'>
<JButton id='fermerBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
<JLabel/>
<JButton id='sauvegarderBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
</JPanel>
</cell>
<cell weightx='1' weighty='0' fill='horizontal'>
<JLabel/>
</cell>
</row>
</Table>
\ No newline at end of file
<AdminReglesMenuUI id="adminReglesMenuUI" constructorParams='this' constraints='BorderLayout.LINE_START'/>
<Table border="{BorderFactory.createLoweredBevelBorder()}" constraints='BorderLayout.CENTER'>
<row>
<cell weightx='1' weighty='1' fill='both'>
<ListeReglesTableUI id='listeReglesTable' constructorParams='this'/>
</cell>
</row>
<row>
<cell weightx='1' weighty='1' fill='both'>
<Table>
<row>
<cell weightx='0.6' weighty='1' fill='both'>
<ProgrammesControleTableUI id='programmesControleTable' constructorParams='this'/>
</cell>
<cell weightx='0.4' weighty='1' fill='both'>
<ServicesControleTableUI id='servicesControleTable' constructorParams='this'/>
</cell>
</row>
</Table>
</cell>
</row>
<row>
<cell weightx='1' weighty='1' fill='both'>
<ReglesControleTableUI id='reglesControleTable' constructorParams='this'/>
</cell>
</row>
<row>
<cell weightx='1' weighty='1' fill='both'>
<Table>
<row>
<cell weightx='1' weighty='1' fill='both'>
<PSFMControleTableUI id='PSFMControleTable' constructorParams='this'/>
</cell>
<cell weightx='1' weighty='1' fill='both'>
<Table>
<row>
<cell weightx='1' weighty='1' fill='horizontal'>
<JScrollPane id='scrollMessageAffiche' onFocusGained='messageAffiche.requestFocus()'>
<JTextArea id='messageAffiche' rows='3'/>
</JScrollPane>
</cell>
</row>
<row>
<cell weightx='1' weighty='1' fill='horizontal'>
<JScrollPane id='scrollDescription' onFocusGained='description.requestFocus()'>
<JTextArea id='description' rows='3'/>
</JScrollPane>
</cell>
</row>
</Table>
</cell>
</row>
</Table>
</cell>
</row>
</Table>
<JPanel layout='{new FlowLayout()}' alignmentX='{Component.CENTER_ALIGNMENT}' constraints='BorderLayout.PAGE_END'>
<JButton id='fermerBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
<JLabel/>
<JButton id='sauvegarderBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
</JPanel>
</JPanel>
\ No newline at end of file
BeanFilterableComboBox {
showReset: true;
filterable: true;
}
#menuPanel {
border: {BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), t("reefdb.config.menu.title"))};
}
#listeReglesLabel {
text: "reefdb.config.adminRegles.menu.listeRegles.label";
labelFor: {listeReglesCombo};
}
#listeReglesCombo {
showReset: false;
}
#effacerBouton{
actionIcon: reset;
text: "reefdb.config.menu.effacer.label";
toolTipText: "reefdb.config.menu.effacer.tip";
}
#rechercherBouton {
actionIcon: find;
text: "reefdb.config.menu.rechercher.label";
toolTipText: "reefdb.config.menu.rechercher.tip";
}
\ No newline at end of file
<Table fill="horizontal" decorator='help' implements='fr.ifremer.reefdb.ui.swing.util.ReefDbUI&lt;AdminReglesMenuUIModel, AdminReglesMenuUIHandler&gt;'>
<import>
fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker
fr.ifremer.reefdb.ui.swing.ReefDbUIContext
fr.ifremer.reefdb.ui.swing.util.ReefDbUI
fr.ifremer.reefdb.ui.swing.util.ReefDbUIUtil
fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.AdminReglesUI
fr.ifremer.reefdb.dto.config.administrerreglescontroles.ListeReglesDTO
java.awt.FlowLayout
javax.swing.Box
javax.swing.BoxLayout
java.awt.BorderLayout
javax.swing.SwingConstants
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
static org.nuiton.i18n.I18n.*
static org.nuiton.i18n.I18n.t;
</import>
<!--getContextValue est une méthode interne JAXX-->
<AdminReglesMenuUIModel id='model' initializer='getContextValue(AdminReglesMenuUIModel.class)'/>
<ReefDbHelpBroker id='broker' constructorParams='"reefdb.home.help"'/>
<script><![CDATA[
private AdminReglesUI parentUI;
//Le parent est très utile pour intervenir sur les frères
public AdminReglesMenuUI(ReefDbUI parentUI) {
this.parentUI = (AdminReglesUI) parentUI;
ReefDbUIUtil.setParentUI(this, parentUI);
}
public AdminReglesUI getAdminReglesUI() {
return parentUI;
}
]]></script>
<row>
<cell weightx="1" weighty="0" fill="both">
<Table id="menuPanel" fill="both">
<row>
<cell>
<JPanel id='listeReglesPanel' layout='{new BorderLayout()}'>
<JLabel id='listeReglesLabel' constraints='BorderLayout.PAGE_START'/>
<BeanFilterableComboBox id='listeReglesCombo' constructorParams='this' constraints='BorderLayout.CENTER' genericType='ListeReglesDTO'/>
</JPanel>
</cell>
</row>
<row>
<cell>
<JSeparator constructorParams='SwingConstants.HORIZONTAL'/>
</cell>
</row>
<row>
<cell>
<JPanel id='selectionButtonsPanel' layout='{new FlowLayout()}'>
<JButton id='effacerBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
<JButton id='rechercherBouton' alignmentX='{Component.CENTER_ALIGNMENT}'/>
</JPanel>
</cell>
</row>
</Table>
</cell>
</row>
<row>
<cell weightx="1" weighty="1" fill="both">
<JLabel/>
</cell>
</row>
</Table>
\ No newline at end of file
package fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.menu;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import fr.ifremer.reefdb.ui.swing.util.AbstractReefDbUIHandler;
/**
* Controlleur du menu de l'onglet prelevements mesures.
*/
public class AdminReglesMenuUIHandler extends AbstractReefDbUIHandler<AdminReglesMenuUIModel, AdminReglesMenuUI> {
/**
* Logger.
*/
private static final Log log = LogFactory.getLog(AdminReglesMenuUIHandler.class);
@Override
public void beforeInit(final AdminReglesMenuUI ui) {
super.beforeInit(ui);
// create model and register to the JAXX context
final AdminReglesMenuUIModel model = new AdminReglesMenuUIModel();
ui.setContextValue(model);
}
@Override
public void afterInit(final AdminReglesMenuUI ui) {
initUI(ui);
// Initialiser les combobox
initialiserComboBox();
// Initialiser listeners
initialiserListeners();
}
@Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
}
PropertyChangeListener[] listeners = getModel().getPropertyChangeListeners();
for (PropertyChangeListener listener : listeners) {
getModel().removePropertyChangeListener(listener);
}
clearValidators();
}
@Override
public SwingValidator<AdminReglesMenuUIModel> getValidator() {
return null;
}
@Override
protected JComponent getComponentToFocus() {
return null;
}
/**
* Initialisation des combobox
*/
private void initialiserComboBox() {
// Initialisation des groupe de taxons pere
initBeanFilterableComboBox(
getUI().getListeReglesCombo(),
getContext().getConfigurationService().getFullListeRegles(),
null);
}
/**
* Initialiser listeners de l ecran.
*/
private void initialiserListeners() {
}
}
\ No newline at end of file
package fr.ifremer.reefdb.ui.swing.content.config.administrer.regles.menu;
import java.util.Collection;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import fr.ifremer.reefdb.dto.ReefDbBeanFactory;
import fr.ifremer.reefdb.dto.observation.mesures.PrelevementsMesuresDTO;
import fr.ifremer.reefdb.dto.referentiel.EquipementPrelevementDTO;
import fr.ifremer.reefdb.dto.referentiel.pmfm.PmfmDTO;
import fr.ifremer.reefdb.ui.swing.util.AbstractReefDbBeanUIModel;
/**
* Modele du menu de l onglet prelevements mesures.
*/
public class AdminReglesMenuUIModel extends AbstractReefDbBeanUIModel<PrelevementsMesuresDTO, AdminReglesMenuUIModel> implements PrelevementsMesuresDTO {
private static Binder<AdminReglesMenuUIModel, PrelevementsMesuresDTO> toBeanBinder =
BinderFactory.newBinder(AdminReglesMenuUIModel.class, PrelevementsMesuresDTO.class);
private static Binder<PrelevementsMesuresDTO, AdminReglesMenuUIModel> fromBeanBinder =
BinderFactory.newBinder(PrelevementsMesuresDTO.class, AdminReglesMenuUIModel.class);
/**
* Constructeur.
*/
public AdminReglesMenuUIModel() {
super(fromBeanBinder, toBeanBinder);
}
@Override
protected PrelevementsMesuresDTO newBean() {
return ReefDbBeanFactory.newPrelevementsMesuresDTO();
}
@Override
public PmfmDTO getPmfmColonne(int index) {
return delegateObject.getPmfmColonne(index);
}
@Override
public boolean isPmfmColonneEmpty() {
return delegateObject.isPmfmColonneEmpty();
}
@Override
public int sizePmfmColonne() {
return delegateObject.sizePmfmColonne();
}
@Override
public void addPmfmColonne(PmfmDTO pmfmColonne) {
delegateObject.addPmfmColonne(pmfmColonne);
}
@Override
public void addAllPmfmColonne(Collection<PmfmDTO> pmfmColonne) {
delegateObject.addAllPmfmColonne(pmfmColonne);
}
@Override
public boolean removePmfmColonne(PmfmDTO pmfmColonne) {
return delegateObject.removePmfmColonne(pmfmColonne);
}
@Override
public boolean removeAllPmfmColonne(Collection<PmfmDTO> pmfmColonne) {
return delegateObject.removeAllPmfmColonne(pmfmColonne);
}
@Override
public boolean containsPmfmColonne(PmfmDTO pmfmColonne) {
return delegateObject.containsPmfmColonne(pmfmColonne);
}
@Override
public boolean containsAllPmfmColonne(Collection<PmfmDTO> pmfmColonne) {
return delegateObject.containsAllPmfmColonne(pmfmColonne);
}
@Override
public Collection<PmfmDTO> getPmfmColonne() {
return delegateObject.getPmfmColonne();
}
@Override
public void setPmfmColonne(Collection<PmfmDTO> pmfmColonne) {
delegateObject.setPmfmColonne(pmfmColonne);
}
@Override
public PmfmDTO getPmfmLigne(int index) {
return delegateObject.getPmfmLigne(index);
}
@Override
public boolean isPmfmLigneEmpty() {