Author: dlanglais Date: 2010-03-04 19:27:07 +0100 (Thu, 04 Mar 2010) New Revision: 187 Log: BigTableLoader -> PluginLoader -> impl?\195?\169mentation crade (mais il en fallait une). L'import marche, mais j'ai un doute sur l'impl?\195?\169mentation (si on importe dans un table qui existe d?\195?\169j?\195?\160, on risque d'?\195?\169craser le contenu d?\195?\169j?\195?\160 pr?\195?\169sent, d'en perdre une partie....). L'export marche parfaitement. L'impl?\195?\169mentation graphique des fonctionnalit?\195?\169s d'import/export : -> deux JInternalFrames, peut-?\195?\170tre ?\195?\160 revoir en ce qui concerne l'ergonomie, ?\195?\160 coller dans le menu peut-?\195?\170tre... C-a-d sur le sujet, le gros oeuvre est fait, reste la finition. Added: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java Removed: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/BigTableLoader.java Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java trunk/msm/src/main/resources/i18n/msm-en_GB.properties trunk/msm/src/main/resources/i18n/msm-fr_FR.properties trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java Deleted: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/BigTableLoader.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/BigTableLoader.java 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/BigTableLoader.java 2010-03-04 18:27:07 UTC (rev 187) @@ -1,139 +0,0 @@ -package org.nuiton.mapstoragemanager.core; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.ServiceLoader; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.nuiton.mapstoragemanager.plugins.BigTable; - -/** - * @author Crieloue Gilles. - * This class loads the BigTable implementations. - */ -public class BigTableLoader extends URLClassLoader { - - /** - * Logger. - */ - private static final Log LOG = LogFactory.getLog(BigTableLoader.class); - - /** - * The BigTable Set Loader. - */ - private ServiceLoader<BigTable> bigTableSetLoader; - - /** - * Map Identifiant - BigTable implementation. - */ - private Map<String, BigTable> plugins = new HashMap<String, BigTable>(); - - /** - * Class constructor. - * @param pluginsFolderPath the plugins folder path - * @param classLoader the parent classloader - * @throws MalformedURLException if the plugin folder is not found - */ - public BigTableLoader(final String pluginsFolderPath, - final ClassLoader classLoader) throws MalformedURLException { - - super(new URL[]{new File(pluginsFolderPath).toURI().toURL()}, - classLoader); - - for (File file : new File(pluginsFolderPath).listFiles()) { - loadPlugin(file); - } - - bigTableSetLoader = ServiceLoader.load(BigTable.class, this); - - for (BigTable bigTableImpl : bigTableSetLoader) { - plugins.put(bigTableImpl.getPluginName(), bigTableImpl); - } - } - - /** - * Loads a plugin from a jar file. - * @param file the plugin file. - */ - public final void loadPlugin(final File file) { - LOG.info("Load plugin : " + file.getAbsolutePath()); - if (file.getAbsolutePath().endsWith(".jar")) { - try { - this.addURL(file.toURI().toURL()); - } catch (MalformedURLException e) { - LOG.error(e.toString(), e); - } - } - bigTableSetLoader = ServiceLoader.load(BigTable.class, this); - for (BigTable bigTableImpl : bigTableSetLoader) { - plugins.put(bigTableImpl.getPluginName(), bigTableImpl); - } - } - - /** - * Returns a string displaying all the available BigTable implementations. - * @return a string displaying all the available BigTable implementations - */ - public final String getBigTable() { - - String s = "Available Plugins :\n"; - - s += "\t* "; - if (!bigTableSetLoader.iterator().hasNext()) { - s += "No plugin."; - } else { - for (BigTable bt : bigTableSetLoader) { - s += bt.getClass().getName(); -// bt.put("key", "value"); -// if (bt.get("key").equals("value")) { -// s += " (working)" + "\n"; -// } else { -// s += " (not working)" + "\n"; -// } - } - } - return s; - } - - /** - * Returns the BigTable Set Loader. - * @return the BigTable Set Loader - * @deprecated Use {@link #getAllBigTable()} - */ - public final ServiceLoader<BigTable> getBigTableSetLoader() { - return bigTableSetLoader; - } - - /** - * Returns a BigTable implementation according to an identifiant. - * @param id the identifiant - * @return the BigTable - */ - public final BigTable getBigTable(final String id) { - return plugins.get(id); - } - - /** - * Returns all the BigTable implementations loaded. - * @return all the BigTable implementations loaded - */ - public final Collection<BigTable> getAllBigTable() { - return plugins.values(); - } - - /** - * Returns all the BigTable implementations names. - * @return all the BigTable implementations names - */ - public final Set<String> getAllBigTableNames() { - return plugins.keySet(); - } -} Added: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java (rev 0) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-04 18:27:07 UTC (rev 187) @@ -0,0 +1,160 @@ +package org.nuiton.mapstoragemanager.core; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.ServiceLoader; +import java.util.Set; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.nuiton.mapstoragemanager.plugins.BigTable; +import org.nuiton.mapstoragemanager.plugins.Exporter; +import org.nuiton.mapstoragemanager.plugins.Importer; +import org.nuiton.mapstoragemanager.plugins.Plugin; + +/** + * @author Crieloue Gilles. + * This class loads the BigTable implementations. + */ +public class PluginLoader extends URLClassLoader { + + /** + * Logger. + */ + private static final Log LOG = LogFactory.getLog(PluginLoader.class); + + /** + * The BigTable Set Loader. + */ + private ServiceLoader<BigTable> bigTableSetLoader; + private ServiceLoader<Importer> importerSetLoader; + private ServiceLoader<Exporter> exporterSetLoader; + + /** + * Map Identifiant - BigTable implementation. + */ + private Map<String, Plugin> plugins = new HashMap<String, Plugin>(); + + /** + * Class constructor. + * @param pluginsFolderPath the plugins folder path + * @param classLoader the parent classloader + * @throws MalformedURLException if the plugin folder is not found + */ + public PluginLoader(final String pluginsFolderPath, + final ClassLoader classLoader) throws MalformedURLException { + + super(new URL[]{new File(pluginsFolderPath).toURI().toURL()}, + classLoader); + + for (File file : new File(pluginsFolderPath).listFiles()) { + loadPlugin(file); + } + } + + /** + * Loads a plugin from a jar file. + * Loads Plugin classes from this jar file into the correct ServiceLoader. + * @param file the plugin file. + */ + public final void loadPlugin(final File file) { + LOG.info("Load plugin : " + file.getAbsolutePath()); + if (file.getAbsolutePath().endsWith(".jar")) { + try { + this.addURL(file.toURI().toURL()); + } catch (MalformedURLException e) { + LOG.error(e.toString(), e); + } + } + + bigTableSetLoader = ServiceLoader.load(BigTable.class, this); + importerSetLoader = ServiceLoader.load(Importer.class, this); + exporterSetLoader = ServiceLoader.load(Exporter.class, this); + + for (BigTable bigTable : bigTableSetLoader) { + plugins.put(bigTable.getPluginName(), bigTable); + } + for (Importer importer : importerSetLoader) { + plugins.put(importer.getPluginName(), importer); + } + for (Exporter exporter : exporterSetLoader) { + plugins.put(exporter.getPluginName(), exporter); + } + } + + /** + * Returns a string displaying all the available BigTable implementations. + * @return a string displaying all the available BigTable implementations + */ + public final String getBigTable() { + + String s = "Available Plugins :\n"; + + s += "\t* "; + if (!bigTableSetLoader.iterator().hasNext()) { + s += "No plugin."; + } else { + for (BigTable bt : bigTableSetLoader) { + s += bt.getPluginName(); + } + } + return s; + } + + /** + * Returns the BigTable Set Loader. + * @return the BigTable Set Loader + * @deprecated Use {@link #getAllBigTable()} + */ + public final ServiceLoader<BigTable> getBigTableSetLoader() { + return bigTableSetLoader; + } + + /** + * Returns a BigTable implementation according to an identifiant. + * @param id the identifiant + * @return the BigTable + */ + public final Plugin getBigTable(final String id) { + return plugins.get(id); + } + + /** + * Returns all the loaded plugins which implements pluginClass. + * @param pluginClass the plugin class that we want to get, null if we want + * to get all the plugin. + * @return returns all the loaded plugins which implements pluginClass or + * all the plugin if pluginClass is null. + */ + public final Collection<Plugin> getAllPlugin(Class pluginClass) { + + Collection<Plugin> pluginsWanted = new HashSet<Plugin>(); + + if(pluginClass != null) { + for (Plugin plugin : plugins.values()) { + if (pluginClass.isInstance(plugin)) { + pluginsWanted.add(plugin); + } + } + } else { + pluginsWanted = plugins.values(); + } + + return pluginsWanted; + } + + /** + * Returns all the Plugin implementations names. + * @return all the BigTable implementations names + */ + public final Set<String> getAllPluginNames() { + return plugins.keySet(); + } +} Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java 2010-03-04 18:27:07 UTC (rev 187) @@ -22,8 +22,8 @@ */ private TestServiceLoader() { try { - BigTableLoader p = - new BigTableLoader("plugins", this.getClass().getClassLoader()); + PluginLoader p = + new PluginLoader("plugins", this.getClass().getClassLoader()); LOG.info(p.getBigTable()); } catch (MalformedURLException e) { //Auto-generated catch block Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-04 18:27:07 UTC (rev 187) @@ -4,106 +4,104 @@ <!-- include java files for treatment --> <script> <![CDATA[ - import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine; - import org.nuiton.mapstoragemanager.core.BigTableLoader; - import javax.swing.tree.*; - import static org.nuiton.i18n.I18n.n_; - import static org.nuiton.i18n.I18n._; - import javax.swing.JLabel; - import org.nuiton.mapstoragemanager.MsmConfig; - import org.nuiton.mapstoragemanager.plugins.BigTable; - import org.nuiton.mapstoragemanager.ui.gui.MessageThread; +import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine; +import org.nuiton.mapstoragemanager.core.PluginLoader; +import javax.swing.tree.*; +import static org.nuiton.i18n.I18n.n_; +import static org.nuiton.i18n.I18n._; +import javax.swing.JLabel; +import org.nuiton.mapstoragemanager.MsmConfig; +import org.nuiton.mapstoragemanager.plugins.BigTable; +import org.nuiton.mapstoragemanager.plugins.Plugin; +import org.nuiton.mapstoragemanager.ui.gui.MessageThread; - ApplicationEngine engine = ApplicationEngine.getInstance(); +ApplicationEngine engine = ApplicationEngine.getInstance(); - /** - * classe instance (singleton pattern). - */ - private static MainUI instance = null; +/** + * classe instance (singleton pattern). + */ +private static MainUI instance = null; - /** - * getInstance method (singleton pattern). - * @return instance of the class - */ - public static MainUI getInstance() { - if (instance == null){ - instance = new MainUI(); - for (BigTable btPlugin : instance.getEngine().getBigTableLoader().getAllBigTable()) { - String btName = btPlugin.getPluginName(); - jaxx.runtime.swing.Item bigTableItem = - new jaxx.runtime.swing.Item(btName, null, btName, true); - instance.getNameBase().addItem(bigTableItem); - } - } - return instance; +/** + * getInstance method (singleton pattern). + * @return instance of the class + */ +public static MainUI getInstance() { + if (instance == null){ + instance = new MainUI(); + for (Plugin btPlugin : instance.getEngine().getBigTableLoader().getAllPlugin(BigTable.class)) { + String btName = btPlugin.getPluginName(); + jaxx.runtime.swing.Item bigTableItem = + new jaxx.runtime.swing.Item(btName, null, btName, true); + instance.getNameBase().addItem(bigTableItem); } + } + return instance; +} - /** - * Access to the engine. - * @return instance of the class - */ - public ApplicationEngine getEngine(){ - return engine; - } +/** +* Access to the engine. +* @return instance of the class +*/ +public ApplicationEngine getEngine(){ + return engine; +} - /** - * Access to the config. - * @return instance of the class - */ - public MsmConfig getConfig() { - return getContextValue(MsmConfig.class); - } +/** +* Access to the config. +* @return instance of the class +*/ +public MsmConfig getConfig() { + return getContextValue(MsmConfig.class); +} - /** - * Dispose UI. - */ - public void dispose(){ - instance = null; - engine.dispose(); - this.setVisible(false); - } +/** +* Dispose UI. +*/ +public void dispose(){ + instance = null; + engine.dispose(); + this.setVisible(false); +} - /** - * Display the appropriate message. - * @param message the message to display. - * @param code code error (for images). - */ - public void displayMessage(String message, int code){ +/** +* Display the appropriate message. +* @param message the message to display. +* @param code code error (for images). +*/ +public void displayMessage(String message, int code){ - //clear the message panel - this.getMessagesPanel().removeAll(); + //clear the message panel + this.getMessagesPanel().removeAll(); - //display message - if (code==0){ - String icon ="ok_16"; - }else if (code==1){ - String icon ="warning_16.png"; - }else if (code==2){ - String icon ="cancel_16.png"; - } + //display message + if (code==0){ + String icon ="ok_16"; + }else if (code==1){ + String icon ="warning_16.png"; + }else if (code==2){ + String icon ="cancel_16.png"; + } - JLabel label = new JLabel(message); - label.setIcon(jaxx.runtime.SwingUtil.getUIManagerActionIcon("ok_16")); - this.getMessagesPanel().add(label); - this.getMessagesPanel().repaint(); - this.getMessagesPanel().revalidate(); + JLabel label = new JLabel(message); + label.setIcon(jaxx.runtime.SwingUtil.getUIManagerActionIcon("ok_16")); + this.getMessagesPanel().add(label); + this.getMessagesPanel().repaint(); + this.getMessagesPanel().revalidate(); - //remove message after a short time - MessageThread m = new MessageThread(); - m.start(); + //remove message after a short time + MessageThread m = new MessageThread(); + m.start(); +} - } - - /** - * Test. - */ - public DefaultTreeModel getModelTree(){ - n_("Empty"); - return new DefaultTreeModel(new DefaultMutableTreeNode(_("Empty"))); - } - - +/** +* Test. +*/ +public DefaultTreeModel getModelTree(){ + n_("Empty"); + return new DefaultTreeModel(new DefaultMutableTreeNode(_("Empty"))); +} ]]> </script> @@ -188,10 +186,6 @@ <JLabel text="Exporter :" actionIcon='database_16' styleClass='boldUnderline' /> <JAXXComboBox id='exporter' onActionPerformed='engine.doSomething()' > <item value=' ' selected='true'/> - <item value='A' selected='false'/> - <item value='B' selected='false'/> - <item value='C' selected='false'/> - <item value='D' selected='false'/> </JAXXComboBox> <JButton text="ok" actionIcon='ok_16' onActionPerformed='engine.exportBase()'/> </JPanel> Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java 2010-03-04 18:27:07 UTC (rev 187) @@ -4,10 +4,8 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; -import java.util.Iterator; import java.util.Locale; import java.util.Properties; -import java.util.Set; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JTree; @@ -20,9 +18,12 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.mapstoragemanager.Main; import org.nuiton.mapstoragemanager.MsmConfig; -import org.nuiton.mapstoragemanager.core.BigTableLoader; +import org.nuiton.mapstoragemanager.core.PluginLoader; import org.nuiton.mapstoragemanager.plugins.BigTable; +import org.nuiton.mapstoragemanager.plugins.Exporter; +import org.nuiton.mapstoragemanager.plugins.Importer; import org.nuiton.mapstoragemanager.plugins.OurHashMap2; +import org.nuiton.mapstoragemanager.plugins.Plugin; import org.nuiton.mapstoragemanager.ui.MainUI; import static org.nuiton.i18n.I18n._; @@ -41,29 +42,48 @@ */ private BigTable bigTable; /** + * Importer. + */ + private Importer importer; + /** + * Exporter. + */ + private Exporter exporter; + /** * classe instance (singleton pattern). */ private static ApplicationEngine instance = null; /** - * BigtableLoader. + * PluginLoader. */ - private static BigTableLoader btl; + private static PluginLoader pluginLoader; + /** + * LastPath. + */ + private static String lastPath; + /** + * msmBasedir. + */ + private static final File msmBasedir = + new File(new File("").getAbsolutePath()).getParentFile();; /** * Constructor. */ private ApplicationEngine() { + +// String basedir = new File("").getAbsolutePath(); +// msmBasedir = new File(basedir).getParentFile(); + lastPath = msmBasedir.toString(); + try { - String basedir = new File("").getAbsolutePath(); - File msnBasedir = new File(basedir).getParentFile(); String toPlugin = "plugins/"; - String pluginsFolderPath = new File(msnBasedir, toPlugin).getPath(); + String pluginsFolderPath = new File(msmBasedir, toPlugin).getPath(); - LOG.info("basedir : " + basedir + '\n' - + "msnBasedir : " + msnBasedir + '\n' + LOG.info("msmBasedir : " + msmBasedir + '\n' + "pluginsFolderPath : " + pluginsFolderPath); - btl = new BigTableLoader(pluginsFolderPath, + pluginLoader = new PluginLoader(pluginsFolderPath, this.getClass().getClassLoader()); } catch (MalformedURLException ex) { LOG.error(ex, ex); @@ -80,74 +100,48 @@ * do nothing. */ public void loadAPlugin() { - - String basedir = new File("").getAbsolutePath(); - File msnBasedir = new File(basedir).getParentFile(); -// String toPlugin = "msm-bighashmapV2/target/"; - JFileChooser jfc = new javax.swing.JFileChooser(msnBasedir); + JFileChooser jfc = new javax.swing.JFileChooser(msmBasedir); jfc.getSelectedFiles(); -// File pluginPath = new File(msnBasedir, toPlugin); - switch (jfc.showOpenDialog(MainUI.getFrames()[0])) { - case JFileChooser.CANCEL_OPTION: - return; - case JFileChooser.ERROR_OPTION: - return; - case JFileChooser.APPROVE_OPTION: - break; - default: - break; - } - File pluginPath = jfc.getSelectedFile(); + int jfcReturn = jfc.showOpenDialog(MainUI.getFrames()[0]); -// BigTableLoader btl = null; + if( JFileChooser.APPROVE_OPTION == jfcReturn ) { +// case JFileChooser.CANCEL_OPTION: +// case JFileChooser.ERROR_OPTION: +// case JFileChooser.APPROVE_OPTION: - LOG.info("basedir : " + basedir + '\n' - + "msnBasedir : " + msnBasedir + '\n' - + "pluginPath : " + pluginPath.getAbsolutePath()); + File pluginPath = jfc.getSelectedFile(); -// try { - btl.loadPlugin(pluginPath); -// bigTableLoader = -// new BigTableLoader(pluginPath.getPath(), -// this.getClass().getClassLoader()); -// } catch (MalformedURLException ex) { -// LOG.fatal(ex, ex); -// } + LOG.info("msmBasedir : " + msmBasedir + '\n' + + "pluginPath : " + pluginPath.getAbsolutePath()); - LOG.info("getBigtable() : " + btl.getBigTable()); + pluginLoader.loadPlugin(pluginPath); - MainUI ui = MainUI.getInstance(); - for (BigTable btPlugin : btl.getAllBigTable()) { - String btName = btPlugin.getPluginName(); - jaxx.runtime.swing.Item bigTableItem = - new jaxx.runtime.swing.Item(btName, null, btName, true); - ui.getNameBase().addItem(bigTableItem); - ui.getNameBase().setSelectedItem(bigTableItem); + LOG.info("getAllPluginNames : " + pluginLoader.getAllPluginNames()); + + MainUI ui = MainUI.getInstance(); + for (Plugin btPlugin : pluginLoader.getAllPlugin(BigTable.class)) { + String btName = btPlugin.getPluginName(); + jaxx.runtime.swing.Item bigTableItem = + new jaxx.runtime.swing.Item(btName, null, btName, true); + ui.getNameBase().addItem(bigTableItem); + ui.getNameBase().setSelectedItem(bigTableItem); + } + for (Plugin imPlugin : pluginLoader.getAllPlugin(Importer.class)) { + String imName = imPlugin.getPluginName(); + jaxx.runtime.swing.Item importerItem = + new jaxx.runtime.swing.Item(imName, null, imName, true); + ui.getImporter().addItem(importerItem); + ui.getImporter().setSelectedItem(importerItem); + } + for (Plugin exPlugin : pluginLoader.getAllPlugin(Exporter.class)) { + String exName = exPlugin.getPluginName(); + jaxx.runtime.swing.Item exporterItem = + new jaxx.runtime.swing.Item(exName, null, exName, true); + ui.getExporter().addItem(exporterItem); + ui.getExporter().setSelectedItem(exporterItem); + } } -// ui.getNameBase().re - -// bigTable = btl.getBigTable("BigHashMapV2"); -// bigTable = new OurHashMap2(); -// bigTable.createTable("table1"); -// bigTable.createTable("table2"); -// bigTable.createColumn("table1", "column1"); -// bigTable.createColumn("table1", "column2"); -// bigTable.createColumn("table2", "column3"); -// bigTable.createColumn("table2", "column4"); -// bigTable.createColumn("table2", "column5"); -// -// bigTable.put("table1", "column1", "1", "content1"); -// bigTable.put("table1", "column1", "2", "content2"); -// bigTable.put("table1", "column2", "3", "content3"); -// bigTable.put("table1", "column2", "4", "content4"); -// -// bigTable.put("table2", "column3", "5", "content5"); -// bigTable.put("table2", "column3", "6", "content6"); -// bigTable.put("table2", "column4", "7", "content7"); -// bigTable.put("table2", "column4", "8", "content8"); -// bigTable.put("table2", "column5", "9", "content9"); -// bigTable.put("table2", "column5", "10", "content10"); } /** @@ -183,7 +177,6 @@ MainUI ui = MainUI.getInstance(); boolean visible = ui.getImportFrame().isVisible(); ui.getImportFrame().setVisible(!visible); - clean(ui); } /** @@ -194,7 +187,6 @@ MainUI ui = MainUI.getInstance(); boolean visible = ui.getExportFrame().isVisible(); ui.getExportFrame().setVisible(!visible); - clean(ui); } /** @@ -236,7 +228,7 @@ if ("OurHashMap".equals(nameBase)) { bigTable = new OurHashMap2(); } else { - bigTable = btl.getBigTable(nameBase); + bigTable = (BigTable) pluginLoader.getBigTable(nameBase); } { @@ -269,30 +261,7 @@ //update tree uptableNavigationTree(ui.getNavigation(), nameBase); -// JTree tree = ui.getNavigation(); -// tree.setModel(new MSMModel(nameBase)); -// tree.addTreeSelectionListener(new MSMNavigationListener()); -// -// TreeModel model = tree.getModel(); -// DefaultMutableTreeNode root; -// root = (DefaultMutableTreeNode) model.getRoot(); -// DefaultTreeModel dtm = ((DefaultTreeModel) tree.getModel()); -// -// //display the node table -// for (String tableName : bigTable.getTablesNames()) { -// DefaultMutableTreeNode tableNameInsert; -// tableNameInsert = new DefaultMutableTreeNode(tableName); -// dtm.insertNodeInto(tableNameInsert, root, root.getChildCount()); -// -// //display the node column -// for (String columnName : bigTable.getColumnsNames(tableName)) { -// DefaultMutableTreeNode columnNameToInsert; -// columnNameToInsert = new DefaultMutableTreeNode(columnName); -// dtm.insertNodeInto(columnNameToInsert, tableNameInsert, -// tableNameInsert.getChildCount()); -// } -// -// } + String connexionOk = _("connectionValid"); ui.displayMessage(connexionOk, 0); ui.getNavigation().repaint(); @@ -393,8 +362,8 @@ * Get the bigTableLoader. * @return return the bigTableLoader. */ - public BigTableLoader getBigTableLoader() { - return btl; + public PluginLoader getBigTableLoader() { + return pluginLoader; } /** @@ -428,24 +397,55 @@ } } + /** + * Import database from a file. + */ public void importBase() { - JFileChooser jfc = new JFileChooser(); - jfc.showOpenDialog(jfc); - File exportFile = jfc.getSelectedFile(); - LOG.info("chosen file for import : " + exportFile.getPath()); + JFileChooser jfc = new JFileChooser(lastPath); + int jfcReturn = jfc.showOpenDialog(MainUI.getFrames()[0]); - MainUI ui = MainUI.getInstance(); - Item selectedItem = ui.getImporter().getSelectedJaxxItem(); - String importerName = selectedItem.getValue().toString(); + if( JFileChooser.APPROVE_OPTION == jfcReturn ) { + + lastPath = jfc.getSelectedFile().getAbsolutePath(); + + File importFile = jfc.getSelectedFile(); + LOG.info("chosen file for import : " + importFile.getPath()); + + MainUI ui = MainUI.getInstance(); + Item selectedItem = ui.getImporter().getSelectedJaxxItem(); + String importerName = selectedItem.getValue().toString(); + + importer = (Importer) pluginLoader.getBigTable(importerName); + + + importer.importFrom(bigTable, importFile); + clean(ui); + uptableNavigationTree(ui.getNavigation(), importFile.getName()); + } } + + /** + * Export the database into a file. + */ public void exportBase() { - JFileChooser jfc = new JFileChooser(); - jfc.showSaveDialog(jfc); - File exportFile = jfc.getSelectedFile(); - LOG.info("chosen file for export : " + exportFile.getPath()); - MainUI ui = MainUI.getInstance(); - Item selectedItem = ui.getExporter().getSelectedJaxxItem(); - String exporterName = selectedItem.getValue().toString(); + JFileChooser jfc = new JFileChooser(lastPath); + int jfcReturn = jfc.showOpenDialog(MainUI.getFrames()[0]); + + if( JFileChooser.APPROVE_OPTION == jfcReturn ) { + + lastPath = jfc.getSelectedFile().getAbsolutePath(); + + File importFile = jfc.getSelectedFile(); + LOG.info("chosen file for export : " + importFile.getPath()); + + MainUI ui = MainUI.getInstance(); + Item selectedItem = ui.getExporter().getSelectedJaxxItem(); + String exporterName = selectedItem.getValue().toString(); + + exporter = (Exporter) pluginLoader.getBigTable(exporterName); + + exporter.exportTo(bigTable, importFile); + } } } Modified: trunk/msm/src/main/resources/i18n/msm-en_GB.properties =================================================================== --- trunk/msm/src/main/resources/i18n/msm-en_GB.properties 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/resources/i18n/msm-en_GB.properties 2010-03-04 18:27:07 UTC (rev 187) @@ -1,54 +1,54 @@ -Empty=Empty -Export\ Database= -Exporter\ \:= -Import\ Database= -Importer\ \:= -Map\ Storage\ Manager=Map Storage Manager -connectionError=The connection attempt to failed, please retry \! -connectionValid=The connection is established -jaxxdemo.message.goto.site=Visit site -login\ \:=Login -mapstoragemanager.action.aboutUs=About us -mapstoragemanager.action.aboutUs.tip=About Code Lutin -mapstoragemanager.action.connect=Connect -mapstoragemanager.action.connect.tip=Start a new connection -mapstoragemanager.action.disconnect=Disconnect -mapstoragemanager.action.disconnect.tip=Disconnect the current session -mapstoragemanager.action.edit=Edit -mapstoragemanager.action.edit.tip= -mapstoragemanager.action.exit=Exit -mapstoragemanager.action.exit.tip= -mapstoragemanager.action.export= -mapstoragemanager.action.export.tip= -mapstoragemanager.action.file=File -mapstoragemanager.action.file.tip= -mapstoragemanager.action.fr=French -mapstoragemanager.action.fr.tip=Change to french language -mapstoragemanager.action.help=Help -mapstoragemanager.action.help.tip= -mapstoragemanager.action.import= -mapstoragemanager.action.import.tip= -mapstoragemanager.action.language=Choose language -mapstoragemanager.action.language.tip= -mapstoragemanager.action.menuHelp=Help -mapstoragemanager.action.menuHelp.tip= -mapstoragemanager.action.plugin=Plugins -mapstoragemanager.action.plugin.tip= -mapstoragemanager.action.pluginload=Load -mapstoragemanager.action.pluginload.tip=Load plugins -mapstoragemanager.action.pluginshow=Show -mapstoragemanager.action.pluginshow.tip=Show plugins -mapstoragemanager.action.preferences=Preferences -mapstoragemanager.action.preferences.tip= -mapstoragemanager.action.uk=English -mapstoragemanager.action.uk.tip=Change to english language -mapstoragemanager.action.visitSite=Visit our site -mapstoragemanager.action.visitSite.tip= -messageEntry=Welcome to MapStorageManager -name\ base\ \:=Name base -no.help=No help today, sorry \! -ok=Validate -password\ \:=Password -table.keys=Keys -table.values=Values -welcome.MapStorageManager=Welcome to MapStorageManager +Empty=Empty +Export\ Database= +Exporter\ \:= +Import\ Database= +Importer\ \:= +Map\ Storage\ Manager=Map Storage Manager +connectionError=The connection attempt to failed, please retry \! +connectionValid=The connection is established +jaxxdemo.message.goto.site=Visit site +login\ \:=Login +mapstoragemanager.action.aboutUs=About us +mapstoragemanager.action.aboutUs.tip=About Code Lutin +mapstoragemanager.action.connect=Connect +mapstoragemanager.action.connect.tip=Start a new connection +mapstoragemanager.action.disconnect=Disconnect +mapstoragemanager.action.disconnect.tip=Disconnect the current session +mapstoragemanager.action.edit=Edit +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit=Exit +mapstoragemanager.action.exit.tip= +mapstoragemanager.action.export= +mapstoragemanager.action.export.tip= +mapstoragemanager.action.file=File +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr=French +mapstoragemanager.action.fr.tip=Change to french language +mapstoragemanager.action.help=Help +mapstoragemanager.action.help.tip= +mapstoragemanager.action.import= +mapstoragemanager.action.import.tip= +mapstoragemanager.action.language=Choose language +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp=Help +mapstoragemanager.action.menuHelp.tip= +mapstoragemanager.action.plugin=Plugins +mapstoragemanager.action.plugin.tip= +mapstoragemanager.action.pluginload=Load +mapstoragemanager.action.pluginload.tip=Load plugins +mapstoragemanager.action.pluginshow=Show +mapstoragemanager.action.pluginshow.tip=Show plugins +mapstoragemanager.action.preferences=Preferences +mapstoragemanager.action.preferences.tip= +mapstoragemanager.action.uk=English +mapstoragemanager.action.uk.tip=Change to english language +mapstoragemanager.action.visitSite=Visit our site +mapstoragemanager.action.visitSite.tip= +messageEntry=Welcome to MapStorageManager +name\ base\ \:=Name base +no.help=No help today, sorry \! +ok=Validate +password\ \:=Password +table.keys=Keys +table.values=Values +welcome.MapStorageManager=Welcome to MapStorageManager Modified: trunk/msm/src/main/resources/i18n/msm-fr_FR.properties =================================================================== --- trunk/msm/src/main/resources/i18n/msm-fr_FR.properties 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/main/resources/i18n/msm-fr_FR.properties 2010-03-04 18:27:07 UTC (rev 187) @@ -1,54 +1,54 @@ -Empty=Vide -Export\ Database= -Exporter\ \:= -Import\ Database= -Importer\ \:= -Map\ Storage\ Manager=Map Storage Manager -connectionError=La connexion \u00E0 \u00E9chou\u00E9e, r\u00E9essayez s'il vous pla\u00EEt \! -connectionValid=La connexion est \u00E9tablie -jaxxdemo.message.goto.site=Visitez le site -login\ \:=Identifiant -mapstoragemanager.action.aboutUs=A propos -mapstoragemanager.action.aboutUs.tip=A propos de Code Lutin -mapstoragemanager.action.connect=Connexion -mapstoragemanager.action.connect.tip=Etablir une nouvelle connexion -mapstoragemanager.action.disconnect=D\u00E9connexion -mapstoragemanager.action.disconnect.tip=D\u00E9connecte la session courante -mapstoragemanager.action.edit=Edition -mapstoragemanager.action.edit.tip= -mapstoragemanager.action.exit=Quitter -mapstoragemanager.action.exit.tip=Quitte l'application -mapstoragemanager.action.export= -mapstoragemanager.action.export.tip= -mapstoragemanager.action.file=Fichier -mapstoragemanager.action.file.tip= -mapstoragemanager.action.fr=Fran\u00E7ais -mapstoragemanager.action.fr.tip=Changer la langue en fran\u00E7ais -mapstoragemanager.action.help=Aide -mapstoragemanager.action.help.tip= -mapstoragemanager.action.import= -mapstoragemanager.action.import.tip= -mapstoragemanager.action.language=Choisir la langue -mapstoragemanager.action.language.tip= -mapstoragemanager.action.menuHelp=Aide -mapstoragemanager.action.menuHelp.tip=Aide contextuelle -mapstoragemanager.action.plugin=Plugins -mapstoragemanager.action.plugin.tip= -mapstoragemanager.action.pluginload=R\u00E9cup\u00E9rer -mapstoragemanager.action.pluginload.tip=R\u00E9cup\u00E9ration des plugins \u00E0 partir d'un dossier -mapstoragemanager.action.pluginshow=Lister -mapstoragemanager.action.pluginshow.tip=Liste des plugins disponible -mapstoragemanager.action.preferences=Pr\u00E9f\u00E9rences -mapstoragemanager.action.preferences.tip=Configurer l'application -mapstoragemanager.action.uk=Anglais -mapstoragemanager.action.uk.tip=Changer la langue en anglais -mapstoragemanager.action.visitSite=Visiter notre site -mapstoragemanager.action.visitSite.tip= -messageEntry=Bienvenue dans MapStorageManager -name\ base\ \:=Nom de la base -no.help=Pas d'aide pour l'instant, d\u00E9sol\u00E9 \! -ok=Valider -password\ \:=Mot de passe -table.keys=Cl\u00E9s -table.values=Valeurs -welcome.MapStorageManager=Bienvenue dans MapStorageManager +Empty=Vide +Export\ Database= +Exporter\ \:= +Import\ Database= +Importer\ \:= +Map\ Storage\ Manager=Map Storage Manager +connectionError=La connexion \u00E0 \u00E9chou\u00E9e, r\u00E9essayez s'il vous pla\u00EEt \! +connectionValid=La connexion est \u00E9tablie +jaxxdemo.message.goto.site=Visitez le site +login\ \:=Identifiant +mapstoragemanager.action.aboutUs=A propos +mapstoragemanager.action.aboutUs.tip=A propos de Code Lutin +mapstoragemanager.action.connect=Connexion +mapstoragemanager.action.connect.tip=Etablir une nouvelle connexion +mapstoragemanager.action.disconnect=D\u00E9connexion +mapstoragemanager.action.disconnect.tip=D\u00E9connecte la session courante +mapstoragemanager.action.edit=Edition +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit=Quitter +mapstoragemanager.action.exit.tip=Quitte l'application +mapstoragemanager.action.export= +mapstoragemanager.action.export.tip= +mapstoragemanager.action.file=Fichier +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr=Fran\u00E7ais +mapstoragemanager.action.fr.tip=Changer la langue en fran\u00E7ais +mapstoragemanager.action.help=Aide +mapstoragemanager.action.help.tip= +mapstoragemanager.action.import= +mapstoragemanager.action.import.tip= +mapstoragemanager.action.language=Choisir la langue +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp=Aide +mapstoragemanager.action.menuHelp.tip=Aide contextuelle +mapstoragemanager.action.plugin=Plugins +mapstoragemanager.action.plugin.tip= +mapstoragemanager.action.pluginload=R\u00E9cup\u00E9rer +mapstoragemanager.action.pluginload.tip=R\u00E9cup\u00E9ration des plugins \u00E0 partir d'un dossier +mapstoragemanager.action.pluginshow=Lister +mapstoragemanager.action.pluginshow.tip=Liste des plugins disponible +mapstoragemanager.action.preferences=Pr\u00E9f\u00E9rences +mapstoragemanager.action.preferences.tip=Configurer l'application +mapstoragemanager.action.uk=Anglais +mapstoragemanager.action.uk.tip=Changer la langue en anglais +mapstoragemanager.action.visitSite=Visiter notre site +mapstoragemanager.action.visitSite.tip= +messageEntry=Bienvenue dans MapStorageManager +name\ base\ \:=Nom de la base +no.help=Pas d'aide pour l'instant, d\u00E9sol\u00E9 \! +ok=Valider +password\ \:=Mot de passe +table.keys=Cl\u00E9s +table.values=Valeurs +welcome.MapStorageManager=Bienvenue dans MapStorageManager Modified: trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java =================================================================== --- trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java 2010-03-04 14:40:08 UTC (rev 186) +++ trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/TestServiceLoader.java 2010-03-04 18:27:07 UTC (rev 187) @@ -3,7 +3,7 @@ import java.net.MalformedURLException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.mapstoragemanager.core.BigTableLoader; +import org.nuiton.mapstoragemanager.core.PluginLoader; /** * @author fdesbois @@ -19,8 +19,8 @@ private TestServiceLoader() { try { - BigTableLoader p = - new BigTableLoader("plugins", this.getClass().getClassLoader()); + PluginLoader p = + new PluginLoader("plugins", this.getClass().getClassLoader()); LOG.info(p.getBigTable()); } catch (MalformedURLException e) { // TODO Auto-generated catch block