/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.utils.sql; import net.codjo.gui.toolkit.fileChooser.FileChooserManager; import net.codjo.gui.toolkit.util.ErrorDialog; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import org.apache.log4j.Logger; /** * Action declanchant un "BCP out" de la table. D�s que l'action est initialis�e, elle est disponible sur * toutes les DbToolBar cr�es. * * @author $Author: acharif $ * @version $Revision: 1.5 $ */ public class BcpOutAction extends AbstractAction { private static String user; private static String pwd; private static String server; private static String catalog; private String dbTableName; // Log private static final Logger APP = Logger.getLogger(BcpOutAction.class); /** * Constructeur * * @param dbTableName Nom physique de la table. */ public BcpOutAction(String dbTableName) { this.dbTableName = dbTableName; putValue(NAME, "BCP"); putValue(SHORT_DESCRIPTION, "Execute un BCP out de la table " + dbTableName); } /** * Accesseur user * * @return The User value */ public String getUser() { return this.user; } /** * Accesseur pwd * * @return The Pwd value */ public String getPwd() { return this.pwd; } /** * Accesseur server * * @return The Server value */ public String getServer() { return this.server; } /** * Execute l'action. * * @param evt Event */ public void actionPerformed(ActionEvent evt) { String fileName = FileChooserManager.showChooserForExport("..\\" + dbTableName + ".txt", "Fichier du bcp out"); if (fileName == null) { return; } String cmd = "bcp " + catalog + ".." + dbTableName + " out " + fileName + " -U" + user + " -P" + pwd + " -S" + server + " -c"; execute(cmd); } /** * Execute le bcp out. * * @param cmd La commande de BCP out */ private void execute(String cmd) { APP.debug("Commande de BCP out : " + cmd); try { Process proc = Runtime.getRuntime().exec(cmd); int r = proc.waitFor(); if (r != 0) { APP.error("Le bcp out a echoue : " + dbTableName); ErrorDialog.show(null, "Le bcp out a echoue", "code erreur=" + r); } } catch (Exception ex) { ErrorDialog.show(null, "Le bcp out a echoue", ex); } } /** * Initialise l'action. D�s que l'action est initialis�e, elle est disponible sur toutes les DbToolBar * cr�es. * * @param user Utilisateur * @param pwd Password * @param server Nom du serveur * @param catalog Le catalogue */ public static void initAction(String user, String pwd, String server, String catalog) { APP.debug("InitBCP"); BcpOutAction.user = user; BcpOutAction.pwd = pwd; BcpOutAction.server = server; BcpOutAction.catalog = catalog; } /** * Indique si l'action est initialis�. * * @return 'true' si initialis� */ static boolean isInited() { return user != null; } }