package net.codjo.dataprocess.gui.repository; import net.codjo.dataprocess.client.RepositoryClientHelper; import net.codjo.dataprocess.client.TreatmentClientHelper; import net.codjo.dataprocess.common.DataProcessConstants; import net.codjo.dataprocess.common.codec.TreatmentModelCodec; import net.codjo.dataprocess.common.model.ArgList; import net.codjo.dataprocess.common.model.ResultTable; import net.codjo.dataprocess.common.model.TreatmentModel; import net.codjo.dataprocess.gui.util.GuiUtils; import net.codjo.dataprocess.gui.util.InternalInputDialog; import net.codjo.mad.client.request.RequestException; import net.codjo.mad.gui.framework.MutableGuiContext; import javax.swing.DefaultListModel; import javax.swing.Icon; import javax.swing.JInternalFrame; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.UIManager; /** * */ public class TreatmentModelGuiActionUtils { private RepositoryWindow repoWin; private MutableGuiContext ctxt; private JInternalFrame frame; public TreatmentModelGuiActionUtils(RepositoryWindow repoWin, MutableGuiContext ctxt, JInternalFrame frame) { this.repoWin = repoWin; this.ctxt = ctxt; this.frame = frame; } void actionDeleteTreatment(String repositoryId) { int result = JOptionPane.showInternalConfirmDialog(frame, "Voulez vous vraiment supprimer ce traitement ?", "Demande de confirmation", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { TreatmentModel treatmentModel; try { treatmentModel = repoWin.getCurrentTreatmentModel(); } catch (ArrayIndexOutOfBoundsException e1) { return; } try { TreatmentClientHelper.manageTreatmentModel(ctxt, DataProcessConstants.Command.DELETE, repositoryId, TreatmentModelCodec.encode(treatmentModel)); repoWin.updateTreatmentList(); } catch (RequestException ex) { GuiUtils.showErrorDialog(frame, getClass(), "Une erreur est survenue lors de la suppression de " + treatmentModel .getId(), ex); } } } void actionNewTreatment(String repository) { if (repository != null) { TreatmentInputDialog treatmentInputDialog = new TreatmentInputDialog(ctxt, repository, frame, repoWin.getGuiTreatmentList(), "Ajout d'un nouveau traitement", "Nom du traitement:", UIManager.getIcon("dataprocess.add2")); try { String treatmentName = treatmentInputDialog.input(); if (treatmentName == null) { return; } TreatmentModel trtModel = new TreatmentModel(); trtModel.setId(treatmentName); trtModel.setTitle(treatmentName); trtModel.setComment(treatmentName); trtModel.setResultTable(new ResultTable("", "")); trtModel.setTarget(""); trtModel.setType(DataProcessConstants.JAVA_TYPE); trtModel.setArguments(new ArgList()); TreatmentClientHelper.manageTreatmentModel(ctxt, DataProcessConstants.Command.CREATE, repository, TreatmentModelCodec.encode(trtModel)); repoWin.updateTreatmentList(); } catch (Exception ex) { GuiUtils.showErrorDialog(frame, getClass(), "Le traitement n'a pas pu �tre cr��.", ex); } } else { JOptionPane.showInternalMessageDialog(frame, "Aucun r�f�rentiel de traitement s�lectionn� !\n", "Erreur", JOptionPane.ERROR_MESSAGE); } } void actionCopyTreatment(String repositoryDestination, String currentRepositoryId) throws RequestException { String repositoryId; if ("".equals(repositoryDestination)) { repositoryId = currentRepositoryId; } else { repositoryId = repositoryDestination; } if (repositoryId != null) { TreatmentModel trtModel = repoWin.getCurrentTreatmentModel(); boolean alreadyExist = repoWin.isTreatmentInRepository(trtModel, repositoryId); if (alreadyExist) { String repositoryName = RepositoryClientHelper.getRepositoryName(ctxt, repositoryId); JOptionPane.showInternalMessageDialog(frame, String.format("Un traitement nomm� '%s'" + " existe d�j� dans le r�f�rentiel de traitement '%s'.", trtModel.getId(), repositoryName), "Probl�me de copie de traitement", JOptionPane.ERROR_MESSAGE); TreatmentInputDialog treatmentInputDialog = new TreatmentInputDialog(ctxt, repositoryId, frame, repoWin.getGuiTreatmentList(), "Copie d'un traitement", "Nom de la copie:", UIManager.getIcon("dataprocess.copy")); String treatmentId = treatmentInputDialog.input(); if (treatmentId == null) { return; } TreatmentModel trt = new TreatmentModel(); trt.setId(treatmentId); if (repoWin.isTreatmentInRepository(trt, repositoryId)) { JOptionPane.showInternalMessageDialog(frame, String.format("Un traitement nomm� '%s'" + " existe d�j� dans le r�f�rentiel de traitement '%s'.", trtModel.getId(), repositoryName), "Erreur", JOptionPane.ERROR_MESSAGE); } else { trtModel.setId(treatmentId); TreatmentClientHelper.manageTreatmentModel(ctxt, DataProcessConstants.Command.CREATE, repositoryId, TreatmentModelCodec.encode(trtModel)); repoWin.initTreatmentList(); } } else { TreatmentClientHelper.manageTreatmentModel(ctxt, DataProcessConstants.Command.CREATE, repositoryId, TreatmentModelCodec.encode(trtModel)); repoWin.initTreatmentList(); } } else { JOptionPane.showInternalMessageDialog(frame, "Aucun r�f�rentiel de traitement s�lectionn� !\n", "Erreur", JOptionPane.ERROR_MESSAGE); } } private static class TreatmentInputDialog extends InternalInputDialog { private MutableGuiContext ctxt; private String repositoryId; private JInternalFrame frame; private JList guiTreatmentList; TreatmentInputDialog(MutableGuiContext ctxt, String repositoryId, JInternalFrame frame, JList guiTreatmentList, String titre, String message, Icon icon) { super(frame, titre, message, icon); this.ctxt = ctxt; this.repositoryId = repositoryId; this.frame = frame; this.guiTreatmentList = guiTreatmentList; } @Override public String input() { String value = super.input(); if (value == null) { return null; } DefaultListModel listModel = (DefaultListModel)guiTreatmentList.getModel(); if (listModel.contains(value)) { try { String repositoryName = RepositoryClientHelper.getRepositoryName(ctxt, repositoryId); JOptionPane.showInternalMessageDialog(frame, String.format( "Le traitement '%s' existe d�j� dans le r�f�rentiel de traitement '%s'.", value, repositoryName), "Erreur", JOptionPane.ERROR_MESSAGE); return input(); } catch (RequestException ex) { GuiUtils.showErrorDialog(frame, getClass(), "Erreur interne", ex); return null; } } else { return value; } } } }