Author: norman Date: Tue Sep 5 12:14:25 2006 New Revision: 440446 URL: http://svn.apache.org/viewvc?view=rev&rev=440446 Log: Add jmx support for BayesianAnalyzerManagement and some refactoring. Thx Bernd for the patch. See JAMES-590
Added: james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagementMBean.java Modified: james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.java james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.xinfo james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java james/server/trunk/src/java/org/apache/james/services/BayesianAnalyzerManagementService.java Modified: james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.java?view=diff&rev=440446&r1=440445&r2=440446 ============================================================================== --- james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.java (original) +++ james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.java Tue Sep 5 12:14:25 2006 @@ -30,7 +30,9 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.io.InputStream; import java.sql.SQLException; +import java.sql.Connection; import java.util.HashMap; import java.util.Map; @@ -58,7 +60,7 @@ /** * Management for BayesianAnalyzer */ -public class BayesianAnalyzerManagement implements BayesianAnalyzerManagementService, Serviceable, Initializable, Contextualizable, Configurable { +public class BayesianAnalyzerManagement implements BayesianAnalyzerManagementService, Serviceable, Initializable, Contextualizable, Configurable, BayesianAnalyzerManagementMBean { private final static String HAM = "HAM"; private final static String SPAM = "SPAM"; @@ -134,7 +136,7 @@ /** * @see org.apache.james.services.BayesianAnalyzerManagementService#addHamFromDir(String) */ - public int addHamFromDir(String dir) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException { + public int addHamFromDir(String dir) throws BayesianAnalyzerManagementException { if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); return feedBayesianAnalyzerFromDir(dir,HAM); @@ -143,7 +145,7 @@ /** * @see org.apache.james.services.BayesianAnalyzerManagementService#addSpamFromDir(String) */ - public int addSpamFromDir(String dir) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException { + public int addSpamFromDir(String dir) throws BayesianAnalyzerManagementException { if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); return feedBayesianAnalyzerFromDir(dir,SPAM); @@ -152,7 +154,7 @@ /** * @see org.apache.james.services.BayesianAnalyzerManagementService#addHamFromMbox(String) */ - public int addHamFromMbox(String file) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException { + public int addHamFromMbox(String file) throws BayesianAnalyzerManagementException { if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); return feedBayesianAnalyzerFromMbox(file,HAM); } @@ -160,7 +162,7 @@ /** * @see org.apache.james.services.BayesianAnalyzerManagementService#addSpamFromMbox(String) */ - public int addSpamFromMbox(String file) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException { + public int addSpamFromMbox(String file) throws BayesianAnalyzerManagementException { if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); return feedBayesianAnalyzerFromMbox(file,SPAM); } @@ -171,50 +173,83 @@ * @param dir The directory which contains the emails which should be used to feed the BayesianAnalysis * @param type The type to train. HAM or SPAM * @return count The count of trained messages - * @throws IOException - * @throws FileNotFoundException - * @throws SQLException + * @throws BayesianAnalyzerManagementException * @throws IllegalArgumentException Get thrown if the directory is not valid */ - private int feedBayesianAnalyzerFromDir(String dir, String type) throws FileNotFoundException, IOException, SQLException, IllegalArgumentException { - + private int feedBayesianAnalyzerFromDir(String dir, String type) throws BayesianAnalyzerManagementException { + //Clear out any existing word/counts etc.. analyzer.clear(); - + File tmpFile = new File(dir); int count = 0; - + synchronized(JDBCBayesianAnalyzer.DATABASE_LOCK) { // check if the provided dir is really a directory if (tmpFile.isDirectory()) { File[] files = tmpFile.listFiles(); - + for (int i = 0; i < files.length; i++) { - if (type.equalsIgnoreCase(HAM)) { - analyzer.addHam(new BufferedReader(new FileReader(files[i]))); - count++; - } else if (type.equalsIgnoreCase(SPAM)) { - analyzer.addSpam(new BufferedReader(new FileReader(files[i]))); - count++; - } + BufferedReader stream = null; + try { + stream = new BufferedReader(new FileReader(files[i])); + } catch (FileNotFoundException e) { + throw new BayesianAnalyzerManagementException("acessing mail file failed.", e); + } + addMailToCorpus(type, stream); + count++; } - - //Update storage statistics. - if (type.equalsIgnoreCase(HAM)) { - analyzer.updateHamTokens(component.getConnection()); - } else if (type.equalsIgnoreCase(SPAM)) { - analyzer.updateSpamTokens(component.getConnection()); - } - + + updateTokens(type); + } else { throw new IllegalArgumentException("Please provide an valid directory"); } } - + return count; } - + + /** + * Update the tokens + * + * @param type The type whichs tokens should be updated. Valid types are HAM or SPAM + * @throws BayesianAnalyzerManagementException + */ + private void updateTokens(String type) throws BayesianAnalyzerManagementException { + //Update storage statistics. + try { + Connection connection = component.getConnection(); + if (type.equalsIgnoreCase(HAM)) { + analyzer.updateHamTokens(connection); + } else if (type.equalsIgnoreCase(SPAM)) { + analyzer.updateSpamTokens(connection); + } + } catch (SQLException e) { + throw new BayesianAnalyzerManagementException("updating tokens failed.", e); + } + } + + /** + * Add mail to corpus + * + * @param type The type to add to corpus. Valid types are HAM or SPAM + * @param stream The stream which is used to transfer the data + * @throws BayesianAnalyzerManagementException + */ + private void addMailToCorpus(String type, BufferedReader stream) throws BayesianAnalyzerManagementException { + try { + if (type.equalsIgnoreCase(HAM)) { + analyzer.addHam(stream); + } else if (type.equalsIgnoreCase(SPAM)) { + analyzer.addSpam(stream); + } + } catch (IOException e) { + throw new BayesianAnalyzerManagementException("adding to corpus failed.", e); + } + } + /** * Helper method to train the BayesianAnalysis from mbox file @@ -222,65 +257,75 @@ * @param mboxFile The mbox file * @param type The type to train. HAM or SPAM * @return count The count of trained messages - * @throws IOException - * @throws FileNotFoundException - * @throws SQLException - * @throws IllegalArgumentException Get thrown if the file is not a valid mbox file + * @throws BayesianAnalyzerManagementException */ - private int feedBayesianAnalyzerFromMbox(String mboxFile, String type) throws FileNotFoundException, IOException, SQLException, IllegalArgumentException { + private int feedBayesianAnalyzerFromMbox(String mboxFile, String type) throws BayesianAnalyzerManagementException { int count = 0; - + //Clear out any existing word/counts etc.. analyzer.clear(); - + File tmpFile = new File(mboxFile); - - if (MboxFile.isValid(tmpFile) == true ) { + + if (MboxFile.isValid(tmpFile)) { MboxFile mbox = new MboxFile(tmpFile,MboxFile.READ_ONLY); - + synchronized(JDBCBayesianAnalyzer.DATABASE_LOCK) { - for (int i = 0; i < mbox.getMessageCount(); i++) { - if (type.equalsIgnoreCase(HAM)) { - - analyzer.addHam(new BufferedReader(new InputStreamReader(mbox.getMessageAsStream(i)))); - count++; - } else if (type.equalsIgnoreCase(SPAM)) { - analyzer.addSpam(new BufferedReader(new InputStreamReader(mbox.getMessageAsStream(i)))); - count++; - } + int messageCount = 0; + try { + messageCount = mbox.getMessageCount(); + } catch (IOException e) { + throw new BayesianAnalyzerManagementException(e); } - + for (int i = 0; i < messageCount; i++) { + InputStream message = null; + try { + message = mbox.getMessageAsStream(i); + } catch (IOException e) { + throw new BayesianAnalyzerManagementException("could not access mail from mbox streanm", e); + } + BufferedReader stream = new BufferedReader(new InputStreamReader(message)); + addMailToCorpus(type, stream); + count++; + } + //Update storage statistics. - if (type.equalsIgnoreCase(HAM)) { - analyzer.updateHamTokens(component.getConnection()); - } else if (type.equalsIgnoreCase(SPAM)) { - analyzer.updateSpamTokens(component.getConnection()); - } + updateTokens(type); } } else { throw new IllegalArgumentException("Please provide an valid mbox file"); } - + return count; } /** * @see org.apache.james.services.BayesianAnalyzerManagementService#exportData(String) */ - public void exportData(String file) throws IOException, BayesianAnalyzerManagementException, SQLException { + public void exportData(String file) throws BayesianAnalyzerManagementException { if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); - - synchronized(JDBCBayesianAnalyzer.DATABASE_LOCK) { - analyzer.loadHamNSpam(component.getConnection()); - + + synchronized(JDBCBayesianAnalyzer.DATABASE_LOCK) { + try { + analyzer.loadHamNSpam(component.getConnection()); + } catch (SQLException e) { + throw new BayesianAnalyzerManagementException("loading ham and spam failed.", e); + } + int hamMessageCount = analyzer.getHamMessageCount(); int spamMessageCount = analyzer.getSpamMessageCount(); Map hamTokenCounts = analyzer.getHamTokenCounts(); Map spamTokenCounts = analyzer.getSpamTokenCounts(); - + XStream xstream = new XStream(new DomDriver()); xstream.alias("bayesianAnalyzer", BayesianAnalyzerXml.class); - PrintWriter printwriter = new PrintWriter(new FileOutputStream(file)); + FileOutputStream fileOutputStream = null; + try { + fileOutputStream = new FileOutputStream(file); + } catch (FileNotFoundException e) { + throw new BayesianAnalyzerManagementException("opening export file failed", e); + } + PrintWriter printwriter = new PrintWriter(fileOutputStream); printwriter.println(xstream.toXML(new BayesianAnalyzerXml(hamMessageCount,spamMessageCount,hamTokenCounts,spamTokenCounts))); printwriter.close(); } @@ -289,29 +334,35 @@ /** * @see org.apache.james.services.BayesianAnalyzerManagementService#importData(String) */ - public void importData(String file) throws IOException, BayesianAnalyzerManagementException, SQLException, FileNotFoundException { - if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); + public void importData(String file) throws BayesianAnalyzerManagementException { + if (repos == null) throw new BayesianAnalyzerManagementException("RepositoryPath not configured"); synchronized(JDBCBayesianAnalyzer.DATABASE_LOCK){ XStream xstream = new XStream(new DomDriver()); - - BayesianAnalyzerXml bAnalyzerXml = (BayesianAnalyzerXml) xstream.fromXML(new FileReader(file)); - + + FileReader fileReader = null; + try { + fileReader = new FileReader(file); + } catch (FileNotFoundException e) { + throw new BayesianAnalyzerManagementException("opening input file failed", e); + } + BayesianAnalyzerXml bAnalyzerXml = (BayesianAnalyzerXml) xstream.fromXML(fileReader); + // clear old data analyzer.clear(); analyzer.tokenCountsClear(); - + //TODO: Drop old corpus in database; - + // add the new data analyzer.setHamMessageCount(bAnalyzerXml.getHamMessageCount()); analyzer.setSpamMessageCount(bAnalyzerXml.getSpamMessageCount()); analyzer.setHamTokenCounts(bAnalyzerXml.getHamTokenCounts()); analyzer.setSpamTokenCounts(bAnalyzerXml.getSpamTokenCounts()); - analyzer.updateHamTokens(component.getConnection()); - analyzer.updateSpamTokens(component.getConnection()); + updateTokens(HAM); + updateTokens(SPAM); } - + } private JDBCBayesianAnalyzer analyzer = new JDBCBayesianAnalyzer() { Modified: james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.xinfo URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.xinfo?view=diff&rev=440446&r1=440445&r2=440446 ============================================================================== --- james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.xinfo (original) +++ james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagement.xinfo Tue Sep 5 12:14:25 2006 @@ -11,6 +11,11 @@ <service name="org.apache.james.services.BayesianAnalyzerManagementService" version="1.0" /> </services> + <!-- interfaces that may be exported to manange this block --> + <management-access-points> + <service name="org.apache.james.management.BayesianAnalyzerManagementMBean"/> + </management-access-points> + <dependencies> <dependency> <service name="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" version="1.0"/> Added: james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagementMBean.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagementMBean.java?view=auto&rev=440446 ============================================================================== --- james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagementMBean.java (added) +++ james/server/trunk/src/java/org/apache/james/management/BayesianAnalyzerManagementMBean.java Tue Sep 5 12:14:25 2006 @@ -0,0 +1,85 @@ +package org.apache.james.management; + +/** + * Expose spool management functionality through JMX. + * + * @phoenix:mx-topic name="BayesianAnalyzerAdministration" + */ +public interface BayesianAnalyzerManagementMBean { + + /** + * adds data to existing corpus by importing all the mails contained in the given dir as ham + * + * @phoenix:mx-operation + * @phoenix:mx-description adds data to existing corpus by importing all the mails contained in the given dir as ham + * + * @param dir full path to the directory containing mail files + * @return number of processes mails + * + * @throws BayesianAnalyzerManagementException + */ + int addHamFromDir(String dir) throws BayesianAnalyzerManagementException; + + /** + * adds data to existing corpus by importing all the mails contained in the given dir as spam + * + * @phoenix:mx-operation + * @phoenix:mx-description adds data to existing corpus by importing all the mails contained in the given dir as spam + * + * @param dir full path to the directory containing mail files + * @return number of processes mails + * + * @throws BayesianAnalyzerManagementException + */ + int addSpamFromDir(String dir) throws BayesianAnalyzerManagementException; + + /** + * adds data to existing corpus by importing all the mails contained in the given mbox as ham + * + * @phoenix:mx-operation + * @phoenix:mx-description adds data to existing corpus by importing all the mails contained in the given mbox as ham + * + * @param file path to the mbox file + * @return number of processes mails + * + * @throws BayesianAnalyzerManagementException + */ + int addHamFromMbox(String file) throws BayesianAnalyzerManagementException; + + /** + * adds data to existing corpus by importing all the mails contained in the given mbox as spam + * + * @phoenix:mx-operation + * @phoenix:mx-description adds data to existing corpus by importing all the mails contained in the given mbox as spam + * + * @param file path to the mbox file + * @return number of processes mails + * + * @throws BayesianAnalyzerManagementException + */ + int addSpamFromMbox(String file) throws BayesianAnalyzerManagementException; + + /** + * exports the corpus to a file + * + * @phoenix:mx-operation + * @phoenix:mx-description exports the corpus to a file + * + * @param file path to the mbox file + * + * @throws BayesianAnalyzerManagementException + */ + void exportData(String file) throws BayesianAnalyzerManagementException; + + /** + * imports the corpus from a file + * + * @phoenix:mx-operation + * @phoenix:mx-description imports the corpus from a file + * + * @param file path to the mbox file + * + * @throws BayesianAnalyzerManagementException + */ + void importData(String file) throws BayesianAnalyzerManagementException; +} Modified: james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java?view=diff&rev=440446&r1=440445&r2=440446 ============================================================================== --- james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java (original) +++ james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java Tue Sep 5 12:14:25 2006 @@ -21,10 +21,8 @@ package org.apache.james.remotemanager; -import java.io.FileNotFoundException; import java.io.IOException; import java.net.Socket; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -1095,7 +1093,6 @@ * the argument passed in with the command */ private boolean doADDHAM(String argument) { - String exception = null; String [] args = null; int count = 0; @@ -1125,27 +1122,15 @@ out.println("Feed the BayesianAnalysis with " + count + " HAM"); out.flush(); - } catch (SQLException e) { - exception = e.getMessage(); - } catch (FileNotFoundException e) { - exception = e.getMessage(); - } catch (IllegalArgumentException e) { - exception = e.getMessage(); - } catch (IOException e) { - exception = e.getMessage(); } catch (BayesianAnalyzerManagementException e) { - writeLoggedFlushedResponse("Command disabled. Configure BayesianAnalyzerMangement to enable it"); + getLogger().error("Error on feeding BayesianAnalysis: " + e); + out.println("Error on feeding BayesianAnalysis: " + e); + out.flush(); return true; - } finally { + } finally { theWatchdog.start(); } - // check if any exception was thrown - if (exception != null) { - getLogger().error("Error on feeding BayesianAnalysis: " + exception); - out.println("Error on feeding BayesianAnalysis: " + exception); - out.flush(); - } return true; } @@ -1157,7 +1142,6 @@ * the argument passed in with the command */ private boolean doADDSPAM(String argument) { - String exception = null; String [] args = null; int count = 0; @@ -1186,35 +1170,21 @@ out.println("Feed the BayesianAnalysis with " + count + " SPAM"); out.flush(); - } catch (SQLException e) { - exception = e.getMessage(); - } catch (FileNotFoundException e) { - exception = e.getMessage(); - } catch (IllegalArgumentException e) { - exception = e.getMessage(); - } catch (IOException e) { - exception = e.getMessage(); } catch (BayesianAnalyzerManagementException e) { - writeLoggedFlushedResponse("Command disabled. Configure BayesianAnalyzerMangement to enable it"); + getLogger().error("Error on feeding BayesianAnalysis: " + e); + out.println("Error on feeding BayesianAnalysis: " + e); + out.flush(); return true; - } finally { + } finally { theWatchdog.start(); } - // check if any exception was thrown - if (exception != null) { - getLogger().error("Error on feeding BayesianAnalysis: " + exception); - out.println("Error on feeding BayesianAnalysis: " + exception); - out.flush(); - } return true; } private boolean doEXPORTBAYESIANDATA(String argument) { - String exception = null; - // check if the command was called correct if (argument == null || argument.trim().equals("")) { writeLoggedFlushedResponse("Usage: EXPORTBAYESIANALYZERDATA [dir]"); @@ -1230,33 +1200,20 @@ out.println("Exported the BayesianAnalysis data"); out.flush(); - } catch (SQLException e) { - exception = e.getMessage(); - } catch (FileNotFoundException e) { - exception = e.getMessage(); - } catch (IllegalArgumentException e) { - exception = e.getMessage(); - } catch (IOException e) { - exception = e.getMessage(); } catch (BayesianAnalyzerManagementException e) { - writeLoggedFlushedResponse("Command disabled. Configure BayesianAnalyzerMangement to enable it"); - return true; - } finally { + getLogger().error("Error on exporting BayesianAnalysis data: " + e); + out.println("Error on exporting BayesianAnalysis data: " + e); + out.flush(); + return false; + } finally { theWatchdog.start(); } // check if any exception was thrown - if (exception != null) { - getLogger().error("Error on exporting BayesianAnalysis data: " + exception); - out.println("Error on exporting BayesianAnalysis data: " + exception); - out.flush(); - } return true; } private boolean doIMPORTBAYESIANDATA(String argument) { - String exception = null; - // check if the command was called correct if (argument == null || argument.trim().equals("")) { writeLoggedFlushedResponse("Usage: IMPORTBAYESIANALYZERDATA [dir]"); @@ -1272,27 +1229,15 @@ out.println("Imported the BayesianAnalysis data"); out.flush(); - } catch (SQLException e) { - exception = e.getMessage(); - } catch (FileNotFoundException e) { - exception = e.getMessage(); - } catch (IllegalArgumentException e) { - exception = e.getMessage(); - } catch (IOException e) { - exception = e.getMessage(); } catch (BayesianAnalyzerManagementException e) { - writeLoggedFlushedResponse("Command disabled. Configure BayesianAnalyzerMangement to enable it"); - return true; - } finally { + getLogger().error("Error on importing BayesianAnalysis data: " + e); + out.println("Error on importing BayesianAnalysis data: " + e); + out.flush(); + return false; + } finally { theWatchdog.start(); } - // check if any exception was thrown - if (exception != null) { - getLogger().error("Error on importing BayesianAnalysis data: " + exception); - out.println("Error on imporitng BayesianAnalysis data: " + exception); - out.flush(); - } return true; } } Modified: james/server/trunk/src/java/org/apache/james/services/BayesianAnalyzerManagementService.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/services/BayesianAnalyzerManagementService.java?view=diff&rev=440446&r1=440445&r2=440446 ============================================================================== --- james/server/trunk/src/java/org/apache/james/services/BayesianAnalyzerManagementService.java (original) +++ james/server/trunk/src/java/org/apache/james/services/BayesianAnalyzerManagementService.java Tue Sep 5 12:14:25 2006 @@ -42,7 +42,7 @@ * @throws SQLException * @throws BayesianAnalyzerManagementException If the service is not configured */ - public int addSpamFromDir(String dir) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException; + public int addSpamFromDir(String dir) throws BayesianAnalyzerManagementException; /** * Feed the BayesianAnalyzer with ham. The given directory contain the mail files @@ -55,7 +55,7 @@ * @throws SQLException * @throws BayesianAnalyzerManagementException If the service is not configured */ - public int addHamFromDir(String dir) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException; + public int addHamFromDir(String dir) throws BayesianAnalyzerManagementException; /** * Feed the BayesianAnalyzer with ham. The given file must be a valid mbox file @@ -68,7 +68,7 @@ * @throws SQLException * @throws BayesianAnalyzerManagementException If the service is not configured */ - public int addSpamFromMbox(String file) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException; + public int addSpamFromMbox(String file) throws BayesianAnalyzerManagementException; /** * Feed the BayesianAnalyzer with ham. The given file must be a valid mbox file @@ -81,7 +81,7 @@ * @throws SQLException * @throws BayesianAnalyzerManagementException If the service is not configured */ - public int addHamFromMbox(String file) throws FileNotFoundException, IllegalArgumentException, IOException, SQLException, BayesianAnalyzerManagementException; + public int addHamFromMbox(String file) throws BayesianAnalyzerManagementException; /** * Export the data to a xml file @@ -91,7 +91,7 @@ * @throws BayesianAnalyzerManagementException If the service is not configured * @throws SQLException */ - public void exportData(String file) throws IOException, BayesianAnalyzerManagementException, SQLException; + public void exportData(String file) throws BayesianAnalyzerManagementException; /** * Import the data from a xml file @@ -102,5 +102,5 @@ * @throws BayesianAnalyzerManagementException IF the service is not configured * @throws SQLException */ - public void importData(String file) throws IOException, BayesianAnalyzerManagementException, SQLException; + public void importData(String file) throws BayesianAnalyzerManagementException; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]