Mapstoragemanager-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- 329 discussions
r250 - in trunk: msm-monitoring-plugins/src/main/java/org/nuiton/monitoring plugins
by fgilet@users.nuiton.org 18 Mar '10
by fgilet@users.nuiton.org 18 Mar '10
18 Mar '10
Author: fgilet
Date: 2010-03-18 09:47:47 +0100 (Thu, 18 Mar 2010)
New Revision: 250
Log:
ajout de la fonction unload dans le plugin de monitoring
Added:
trunk/plugins/.properties
Modified:
trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
Modified: trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
===================================================================
--- trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-17 14:00:03 UTC (rev 249)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-18 08:47:47 UTC (rev 250)
@@ -31,6 +31,10 @@
// * Height of the frame.
// */
// private static final int FRAME_HEIGHT = 300;
+ /**
+ * MenuItemBigTable.
+ */
+ private static JMenuItem menuItemPlugin;
/**
* Constructor.
@@ -139,27 +143,27 @@
@Override
public void load() {
final String pluginName = getPluginName();
- final JMenu menuItem = new JMenu(pluginName);
+ menuItemPlugin = new JMenu(pluginName);
- JMenuItem menuDisplay = new JMenuItem("Display");
- menuItem.add(menuDisplay);
- JMenuItem menuDelete = new JMenuItem("Delete");
- menuItem.add(menuDelete);
+ final JMenuItem menuItemDisplay = new JMenuItem("Display");
+ menuItemPlugin.add(menuItemDisplay);
+ final JMenuItem menuItemDelete = new JMenuItem("Delete");
+ menuItemPlugin.add(menuItemDelete);
final JMenu menuPlugin = MainUI.getInstance().getMenuPlugin();
- menuPlugin.add(menuItem);
+ menuPlugin.add(menuItemPlugin);
- menuDisplay.addActionListener(new ActionListener() {
+ menuItemDisplay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
display();
}
});
- menuDelete.addActionListener(new ActionListener() {
+ menuItemDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- menuPlugin.remove(menuItem);
+ unload();
}
});
}
@@ -169,5 +173,10 @@
*/
@Override
public void unload() {
+ JMenu menuPlugin = MainUI.getInstance().getMenuPlugin();
+ if(menuItemPlugin != null) {
+ menuPlugin.remove(menuItemPlugin);
+ menuItemPlugin = null;
+ }
}
}
Added: trunk/plugins/.properties
===================================================================
--- trunk/plugins/.properties (rev 0)
+++ trunk/plugins/.properties 2010-03-18 08:47:47 UTC (rev 250)
@@ -0,0 +1,5 @@
+#Thu Mar 18 09:45:43 CET 2010
+/comptes/E045231P/Master2/PFE/Workspace/mapstoragemanager/trunk/msm-bighashmapV2/target/msm-bighashmapV2-0.1-SNAPSHOT.jar=true
+/comptes/E045231P/Master2/PFE/Workspace/mapstoragemanager/trunk/msm-monitoring-plugins/target/msm-monitoring-plugins-0.1-SNAPSHOT.jar=true
+BigHashMapV2=true
+ShowDiskSpace=true
1
0
r249 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager msm/src/main/java/org/nuiton/mapstoragemanager/core msm/src/test/java/org/nuiton/mapstoragemanager/core msm-monitoring-plugins/src/main/java/org/nuiton/monitoring msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 17 Mar '10
by dlanglais@users.nuiton.org 17 Mar '10
17 Mar '10
Author: dlanglais
Date: 2010-03-17 15:00:03 +0100 (Wed, 17 Mar 2010)
New Revision: 249
Log:
Suppression de la classe BigTableLoaderTest.java (inutile).
Nettoyage code.
Am?\195?\169lioration code PluginLoader.
Removed:
trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/BigTableLoaderTest.java
Modified:
trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/MsmConfig.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/PluginLoaderTest.java
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/MsmConfig.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/MsmConfig.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/MsmConfig.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -42,15 +42,17 @@
try {
p.load(stream);
for (Object k : p.keySet()) {
- String key = k + "";
- Object value = p.get(k);
- if (LOG.isDebugEnabled()) {
- LOG.debug("install properties " + k + " : " + value);
- }
- setDefaultOption(key, "" + value);
+ String key = (String) k;
+ String value = (String) p.get(k);
+
+ setDefaultOption(key, value);
+
+ // if (LOG.isDebugEnabled())
+ LOG.debug("install properties " + k + " : " + value);
}
} catch (IOException ex) {
- throw new RuntimeException(ex);
+ LOG.fatal(ex, ex);
+// throw new RuntimeException(ex);
}
}
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -2,6 +2,7 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -14,6 +15,8 @@
import java.util.Properties;
import java.util.ServiceLoader;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.commons.logging.Log;
@@ -62,11 +65,21 @@
/** Load properties file of the folder. */
properties = new Properties();
+ propertiesFile = new File(pluginsFolderPath, ".properties");
try {
- propertiesFile = new File(pluginsFolderPath, ".properties");
- properties.load(new FileInputStream(propertiesFile));
+ FileInputStream fis = new FileInputStream(propertiesFile);
+ properties.load(fis);
+ } catch (FileNotFoundException e) {
+ try {
+ FileOutputStream fos = new FileOutputStream(propertiesFile);
+ properties.store(fos , null);
+ } catch (FileNotFoundException ex) {
+ LOG.fatal(ex, ex);
+ } catch (IOException ex) {
+ LOG.fatal(ex, ex);
+ }
} catch (IOException ex) {
-// LOG.error(ex, ex);
+ LOG.error(ex, ex);
}
/** For each file if the propertie is not false */
@@ -147,7 +160,7 @@
try {
properties.store(new FileOutputStream(propertiesFile), null);
} catch (IOException ex) {
-// LOG.error(ex, ex);
+ LOG.error(ex, ex);
}
}
@@ -218,38 +231,45 @@
*/
public static final void setActive(Plugin plugin, boolean active) {
- properties.put(plugin.getPluginName(), Boolean.toString(active));
+ final String pluginName = plugin.getPluginName();
+
+ properties.put(pluginName, active);
try {
properties.store(new FileOutputStream(propertiesFile), null);
} catch (IOException ex) {
-// LOG.error(ex, ex);
+ LOG.error(ex, ex);
}
- if (active == true) {
+ if (active) {
plugin.load();
} else {
plugin.unload();
}
}
+ /**
+ * Control if the plugin have to be loaded.
+ * @param plugin the plugin to control.
+ */
public static void controlLoadPlugin(Plugin plugin) {
- if (!"false".equals(properties.getProperty(plugin.getPluginName()))) {
- plugins.put(plugin.getPluginName(), plugin);
+
+ final String pluginName = plugin.getPluginName();
+ final String pluginProperty = properties.getProperty(pluginName);
+ plugins.put(pluginName, plugin);
+
+ if ("true".equals(pluginProperty)) {
+ /** If plugin must be loaded */
plugin.load();
- properties.put(plugin.getPluginName(), "true");
+ } else if(!"false".equals(pluginProperty)) {
+ /** If plugin is not in .properties,
+ * it is load and writted in .properties */
+ plugin.load();
+ properties.put(pluginName, "true");
try {
properties.store(new FileOutputStream(propertiesFile), null);
} catch (IOException ex) {
- // LOG.error(ex, ex);
+ LOG.error(ex, ex);
}
- } else {
- plugins.put(plugin.getPluginName(), plugin);
- properties.put(plugin.getPluginName(), "false");
- try {
- properties.store(new FileOutputStream(propertiesFile), null);
- } catch (IOException ex) {
- // LOG.error(ex, ex);
- }
}
}
}
Deleted: trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/BigTableLoaderTest.java
===================================================================
--- trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/BigTableLoaderTest.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/BigTableLoaderTest.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -1,67 +0,0 @@
-package org.nuiton.mapstoragemanager.core;
-
-import java.net.MalformedURLException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Created: 28 janv. 2010
- *
- * @author fdesbois
- * @version $Revision: 36 $
- *
- * Mise a jour: $Date: 2010-01-28 22:02:49 +0100 (jeu., 28 janv. 2010) $
- * par : $Author$
- */
-public class BigTableLoaderTest {
-
- private static final Log log = LogFactory.getLog(BigTableLoaderTest.class);
-
- public BigTableLoaderTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
- /**
- * Test of getBigTable method, of class BigTableLoader.
- * @throws MalformedURLException
- */
- @Test
- public void testGetBigTable() throws MalformedURLException {
- log.info("getBigTable");
- //BigTableLoader p = new BigTableLoader("plugins", this.getClass().getClassLoader());
-
- // FIXME-FD20100128 NPE :
- // java.lang.NullPointerException at org.nuiton.mapstoragemanager.core.BigTableLoader.<init>(BigTableLoader.java:34)
-
- //Assert.assertNotNull(p.getBigTable());
- }
-
- /**
- * Test of getBigTableSetLoader method, of class BigTableLoader.
- */
- //@Test
- public void testGetBigTableSetLoader() {
- log.info("getBigTableSetLoader");
- }
-}
Modified: trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/PluginLoaderTest.java
===================================================================
--- trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/PluginLoaderTest.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm/src/test/java/org/nuiton/mapstoragemanager/core/PluginLoaderTest.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -5,6 +5,7 @@
package org.nuiton.mapstoragemanager.core;
+import com.opensymphony.xwork2.interceptor.annotations.After;
import java.io.File;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
@@ -51,7 +52,9 @@
* Initialisation.
*/
try {
- pl = new PluginLoader(new File("").getAbsolutePath(),
+ String basedir = new File("").getAbsolutePath();
+ File pluginFolder = new File(basedir, "/src/test/resources");
+ pl = new PluginLoader(pluginFolder.getAbsolutePath(),
this.getClass().getClassLoader());
Field fPlugins = pl.getClass().getDeclaredField("plugins");
fPlugins.setAccessible(true);
@@ -77,6 +80,17 @@
}
}
+ /**
+ *
+ */
+ @Override
+ @After
+ public void tearDown() {
+ String basedir = new File("").getAbsolutePath();
+ File properties = new File(basedir, "/src/test/resources/.properties");
+ properties.deleteOnExit();
+ }
+
public void testGetAllPluginNames() {
this.setUp();
Modified: trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
===================================================================
--- trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -23,14 +23,14 @@
* Number for division byte -> Mb -> Gb.
*/
private static final int DIV = 1024;
- /**
- * Width of the frame.
- */
- private static final int FRAME_WIDTH = 300;
- /**
- * Height of the frame.
- */
- private static final int FRAME_HEIGHT = 300;
+// /**
+// * Width of the frame.
+// */
+// private static final int FRAME_WIDTH = 300;
+// /**
+// * Height of the frame.
+// */
+// private static final int FRAME_HEIGHT = 300;
/**
* Constructor.
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-17 08:40:41 UTC (rev 248)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-17 14:00:03 UTC (rev 249)
@@ -13,7 +13,7 @@
* This class is used to get the view of a plugin.
* @author Dorian Langlais
*/
-public class PluginView {
+public final class PluginView {
/**
* Private Constructor.
1
0
r248 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager msm/src/main/java/org/nuiton/mapstoragemanager/core msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 17 Mar '10
by dlanglais@users.nuiton.org 17 Mar '10
17 Mar '10
Author: dlanglais
Date: 2010-03-17 09:40:41 +0100 (Wed, 17 Mar 2010)
New Revision: 248
Log:
Quelques modifs visant ?\195?\160 rendre persistants les choix des plugins charg?\195?\169s ou non au d?\195?\169marrage...
C'est assez brouillon...
Pour r?\195?\169sumer :
- le dossier plugins ?\195?\160 la racine de MapStorageManager contient un fichier .properties :
- Ce fichier contient la localisation de tous les plugins (.jar) ?\195?\160 charger ou non au d?\195?\169marrage (true ou false).
Actuellement, lorsque l'on va chercher un plugin manuellement dans l'application, celui-ci sera charg?\195?\169 automatiquement au prochain d?\195?\169marrage, sauf si l'on modifie manuellement le fichier .properties pour supprimer le jar ou en le mettant ?\195?\160 false.
- ce fichier liste l'ensemble des plugins (Classe), ?\195?\160 charger ou non au d?\195?\169marrage.
Via le pluginManager, lorsque l'on active/d?\195?\169sactive un plugin, celui-ci est charg?\195?\169/d?\195?\169charg?\195?\169 directement, mais aussi gardera cette configuration pour le prochain d?\195?\169marrage. Contrairement aux boutons charger/d?\195?\169charger qui ne le font que pour la session en cours...
C'est tr?\195?\168s facilement am?\195?\169liorable.
Modified:
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java 2010-03-17 06:39:07 UTC (rev 247)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java 2010-03-17 08:40:41 UTC (rev 248)
@@ -59,6 +59,7 @@
SwingUtil.loadUIConfig(MsmConfig.APPLICATION_PROPERTIES, null);
final MainUI ui = MainUI.getInstance();
+ ui.getEngine().loadPlugins();
SwingUtilities.invokeLater(new Runnable() {
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-17 06:39:07 UTC (rev 247)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-17 08:40:41 UTC (rev 248)
@@ -1,6 +1,9 @@
package org.nuiton.mapstoragemanager.core;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -8,16 +11,17 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Properties;
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.Monitoring;
import org.nuiton.mapstoragemanager.plugins.Plugin;
/**
@@ -30,18 +34,19 @@
* Logger.
*/
private static final Log LOG = LogFactory.getLog(PluginLoader.class);
-
/**
- * The BigTable Set Loader.
+ * Properties, to store properties about plugins.
*/
-// private ServiceLoader<BigTable> bigTableSetLoader;
-// private ServiceLoader<Importer> importerSetLoader;
-// private ServiceLoader<Exporter> exporterSetLoader;
+ private static Properties properties;
+ /**
+ * Properties File path, to load and save properties about plugins.
+ */
+ private static File propertiesFile;
/**
* Map Identifiant - BigTable implementation.
*/
- private Map<String, Plugin> plugins = new HashMap<String, Plugin>();
+ private static Map<String, Plugin> plugins = new HashMap<String, Plugin>();
/**
* Class constructor.
@@ -55,8 +60,33 @@
super(new URL[]{new File(pluginsFolderPath).toURI().toURL()},
classLoader);
- for (File file : new File(pluginsFolderPath).listFiles()) {
- if (file.getAbsolutePath().endsWith(".jar")) {
+ /** Load properties file of the folder. */
+ properties = new Properties();
+ try {
+ propertiesFile = new File(pluginsFolderPath, ".properties");
+ properties.load(new FileInputStream(propertiesFile));
+ } catch (IOException ex) {
+// LOG.error(ex, ex);
+ }
+
+ /** For each file if the propertie is not false */
+// for (File file : new File(pluginsFolderPath).listFiles()) {
+// String fileProp = (String) properties.get(file.getPath());
+// if(fileProp == null) {
+// fileProp = "";
+// }
+// if (!fileProp.equals("false")
+// && file.getAbsolutePath().endsWith(".jar")) {
+// loadPlugin(file);
+// }
+// }
+
+ /** For each properties keys with value is true, load the file */
+ Set<Object> props = properties.keySet();
+ for (Object property : props) {
+ if(property.toString().endsWith(".jar")
+ && properties.get(property).equals("true")) {
+ File file = new File(property.toString());
loadPlugin(file);
}
}
@@ -86,8 +116,6 @@
ServiceLoader.load(Importer.class, this);
ServiceLoader<Exporter> exporterSetLoader =
ServiceLoader.load(Exporter.class, this);
-// ServiceLoader<Monitoring> monitoringSetLoader =
-// ServiceLoader.load(Monitoring.class, this);
ServiceLoader<Plugin> pluginSetLoader =
ServiceLoader.load(Plugin.class, this);
@@ -95,25 +123,32 @@
* Add plugin in the plugin's map.
*/
for (BigTable bigTable : bigTableSetLoader) {
- bigTable.load();
- plugins.put(bigTable.getPluginName(), bigTable);
+ controlLoadPlugin(bigTable);
+// bigTable.load();
+// plugins.put(bigTable.getPluginName(), bigTable);
}
for (Importer importer : importerSetLoader) {
- importer.load();
- plugins.put(importer.getPluginName(), importer);
+ controlLoadPlugin(importer);
+// importer.load();
+// plugins.put(importer.getPluginName(), importer);
}
for (Exporter exporter : exporterSetLoader) {
- exporter.load();
- plugins.put(exporter.getPluginName(), exporter);
+ controlLoadPlugin(exporter);
+// exporter.load();
+// plugins.put(exporter.getPluginName(), exporter);
}
-// for (Monitoring monitor : monitoringSetLoader) {
-// monitor.load();
-// plugins.put(monitor.getPluginName(), monitor);
-// }
for (Plugin plugin : pluginSetLoader) {
- plugin.load();
- plugins.put(plugin.getPluginName(), plugin);
+ controlLoadPlugin(plugin);
+// plugin.load();
+// plugins.put(plugin.getPluginName(), plugin);
}
+
+ properties.put(file.getPath(), "true");
+ try {
+ properties.store(new FileOutputStream(propertiesFile), null);
+ } catch (IOException ex) {
+// LOG.error(ex, ex);
+ }
}
/**
@@ -134,15 +169,6 @@
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 plugin implementation according to an identifiant.
* @param id the identifiant - typically the plugins name -.
@@ -185,4 +211,45 @@
public final Set<String> getAllPluginNames() {
return plugins.keySet();
}
+
+ /**
+ * Set active or not a plugin at startup.
+ *
+ */
+ public static final void setActive(Plugin plugin, boolean active) {
+
+ properties.put(plugin.getPluginName(), Boolean.toString(active));
+ try {
+ properties.store(new FileOutputStream(propertiesFile), null);
+ } catch (IOException ex) {
+// LOG.error(ex, ex);
+ }
+
+ if (active == true) {
+ plugin.load();
+ } else {
+ plugin.unload();
+ }
+ }
+
+ public static void controlLoadPlugin(Plugin plugin) {
+ if (!"false".equals(properties.getProperty(plugin.getPluginName()))) {
+ plugins.put(plugin.getPluginName(), plugin);
+ plugin.load();
+ properties.put(plugin.getPluginName(), "true");
+ try {
+ properties.store(new FileOutputStream(propertiesFile), null);
+ } catch (IOException ex) {
+ // LOG.error(ex, ex);
+ }
+ } else {
+ plugins.put(plugin.getPluginName(), plugin);
+ properties.put(plugin.getPluginName(), "false");
+ try {
+ properties.store(new FileOutputStream(propertiesFile), null);
+ } catch (IOException ex) {
+ // LOG.error(ex, ex);
+ }
+ }
+ }
}
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-17 06:39:07 UTC (rev 247)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java 2010-03-17 08:40:41 UTC (rev 248)
@@ -55,26 +55,27 @@
*/
private static final File MSM_BASEDIR =
new File(new File("").getAbsolutePath()).getParentFile();
+ /**
+ * msm plugin dir.
+ */
+ private static final File MSM_PLUGINS_DIR =
+ new File(MSM_BASEDIR, "plugins/");
/**
* Constructor.
*/
private ApplicationEngine() {
-// String basedir = new File("").getAbsolutePath();
-// msmBasedir = new File(basedir).getParentFile();
lastPath = MSM_BASEDIR.toString();
+ }
+ /**
+ * Load plugins for plugins directory.
+ */
+ public void loadPlugins() {
try {
- String toPlugin = "plugins/";
- String pluginsFolderPath =
- new File(MSM_BASEDIR, toPlugin).getPath();
-
- LOG.info("msmBasedir : " + MSM_BASEDIR + '\n'
- + "pluginsFolderPath : " + pluginsFolderPath);
-
- pluginLoader = new PluginLoader(pluginsFolderPath,
- this.getClass().getClassLoader());
+ pluginLoader = new PluginLoader(MSM_PLUGINS_DIR.getPath(),
+ this.getClass().getClassLoader());
} catch (MalformedURLException ex) {
LOG.error(ex, ex);
}
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-17 06:39:07 UTC (rev 247)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-17 08:40:41 UTC (rev 248)
@@ -1,4 +1,4 @@
-<Application id='pluginManagerFrame' width='640' height='480' implements='Plugin' >
+<Application id='pluginManagerFrame' width='640' height='480' implements='Plugin' onWindowClosing=''>
<!-- include java files for treatment -->
<script>
@@ -25,6 +25,7 @@
if (instance == null){
instance = new PluginManager();
}
+ instance.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
return instance;
}
@@ -88,7 +89,8 @@
buttonActivate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
- //TODO;
+
+ PluginLoader.setActive(plugin, true);
buttonActivate.setEnabled(false);
buttonDesactivate.setEnabled(true);
}
@@ -97,7 +99,8 @@
buttonDesactivate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
- //TODO;
+
+ PluginLoader.setActive(plugin, false);
buttonActivate.setEnabled(true);
buttonDesactivate.setEnabled(false);
}
@@ -174,6 +177,7 @@
@Override
public void actionPerformed(ActionEvent e) {
PluginManager.getInstance().setVisible(true);
+ PluginManager.getInstance().refreshPluginList();
}
});
menuPluginMSM.add(menuItemPlugin);
1
0
r247 - in trunk: msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter msm-monitoring-plugins/src/main/java/org/nuiton/monitoring msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 17 Mar '10
by dlanglais@users.nuiton.org 17 Mar '10
17 Mar '10
Author: dlanglais
Date: 2010-03-17 07:39:07 +0100 (Wed, 17 Mar 2010)
New Revision: 247
Log:
Corrections mineures.
Modified:
trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java
trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
Modified: trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java
===================================================================
--- trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-16 13:39:09 UTC (rev 246)
+++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-17 06:39:07 UTC (rev 247)
@@ -93,8 +93,6 @@
serializer.endDocument();
- serializer.flush();
-
final long t2 = System.currentTimeMillis();
LOG.info("temps d'enregistrement : " + (t2 - t1) + " ms.");
} catch (IOException ex) {
Modified: trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
===================================================================
--- trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-16 13:39:09 UTC (rev 246)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-17 06:39:07 UTC (rev 247)
@@ -12,7 +12,6 @@
import javax.swing.JPanel;
import org.nuiton.mapstoragemanager.plugins.Plugin;
import org.nuiton.mapstoragemanager.ui.MainUI;
-import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
/**
*
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-16 13:39:09 UTC (rev 246)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-17 06:39:07 UTC (rev 247)
@@ -16,11 +16,18 @@
public class PluginView {
/**
+ * Private Constructor.
+ */
+ private PluginView() {
+
+ }
+
+ /**
* Map to store the JPanel 'plugin view' that describe a plugin.
* The key is the plugin name, the value is the JPanel containing its
* description.
*/
- private static final Map<String, JPanel> pluginViews
+ private static final Map<String, JPanel> PLUGIN_VIEW
= new HashMap<String, JPanel>();
/**
@@ -29,7 +36,7 @@
* @param pluginView the plugin view of the plugin.
*/
public static void put(String pluginName, JPanel pluginView) {
- pluginViews.put(pluginName, pluginView);
+ PLUGIN_VIEW.put(pluginName, pluginView);
}
/**
@@ -38,6 +45,6 @@
* @return return the plugin view of the plugin.
*/
public static JPanel get(String pluginName) {
- return pluginViews.get(pluginName);
+ return PLUGIN_VIEW.get(pluginName);
}
}
1
0
16 Mar '10
Author: fgilet
Date: 2010-03-16 14:39:09 +0100 (Tue, 16 Mar 2010)
New Revision: 246
Log:
Ajout d'un paragraphe dans le rapport
Creation d'un HowTo pour faire un plugin
Added:
trunk/msm/src/main/resources/HowToPlugin
Modified:
trunk/src/site/doc/rapport/rapport.rst
Modified: trunk/src/site/doc/rapport/rapport.rst
===================================================================
--- trunk/src/site/doc/rapport/rapport.rst 2010-03-15 19:46:44 UTC (rev 245)
+++ trunk/src/site/doc/rapport/rapport.rst 2010-03-16 13:39:09 UTC (rev 246)
@@ -163,7 +163,8 @@
Jaxx est un framework permettant de générer une interface graphique en
SWING (Java). SWING est parfois fastidieux à gérer et le code n'est
-pas toujours très propre. Le but de Jaxx est donc de contraindre un
+pas toujours très propre, nous pensons notamment à la gestion des conteneurs,
+aux styles graphique,... Le but de Jaxx est donc de contraindre un
développeur à obtenir du code propre et performant en SWING.
Le principe est très simple. On définit les éléments de la vue
@@ -318,6 +319,11 @@
du PluginLoader. C'est également un singleton récupéré grâce à la méthode
statique getInstance().
+Grâce à la technologie JAXX, on peut établir une feuille de style propre à
+notre application mais qui pourra être reutiliser si besoin. Cela offre une
+flexibilité dans la création de l'interface graphique puisqu'on a un découpage
+entre les éléments graphique, le style attribué et les actions sur ces éléments.
+
3.4 Initialisation et lancement de MSM
--------------------------------------
1
0
r245 - in trunk/msm-pluginmanager/src: main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 15 Mar '10
by dlanglais@users.nuiton.org 15 Mar '10
15 Mar '10
Author: dlanglais
Date: 2010-03-15 20:46:44 +0100 (Mon, 15 Mar 2010)
New Revision: 245
Log:
L?\195?\169g?\195?\168res modifications...
Par contre, j'ai un soucis avec le layout manager de la "PluginView" :
- Lorsque l'on agrandit la fen?\195?\170tre le JPanel contenant la description du plugin d'agrandit correctement idem lorsque diminue la hauteur de la fen?\195?\170tre.
- Par contre, le soucis appara?\195?\174t lorsque l'on diminue la taille de la fen?\195?\170tre en largeur...
Added:
trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginViewTest.java
Modified:
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 18:35:39 UTC (rev 244)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 19:46:44 UTC (rev 245)
@@ -66,12 +66,17 @@
titre.add(new JLabel(pluginName), BorderLayout.CENTER);
pluginView.add(titre, BorderLayout.PAGE_START);
- JPanel description = new JPanel();
- description.add(new JLabel(" "));
- description.add(new JTextArea(pluginDescritpion));
- pluginView.add(description, BorderLayout.CENTER);
+ JTextArea description = new JTextArea(pluginDescritpion);
+ description.setLineWrap(true);
+ description.setWrapStyleWord(true);
+ description.setEditable(false);
+ JScrollPane descriptionScrollPane = new JScrollPane(description);
+ descriptionScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ descriptionScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ pluginView.add(descriptionScrollPane, BorderLayout.CENTER);
+
JPanel southButton = new JPanel();
southButton.setLayout(new GridLayout(1,4));
@@ -127,7 +132,7 @@
}
getPluginView().removeAll();
- getPluginView().add(PluginView.get(pluginName));
+ getPluginView().add(PluginView.get(pluginName), BorderLayout.CENTER);
getPluginView().updateUI();
}
});
@@ -216,7 +221,7 @@
<VBox layout='{new GridLayout(0,1)}' id='pluginList' />
</JScrollPane>
<JScrollPane>
- <JPanel layout='{new BoxLayout(pluginView, BoxLayout.PAGE_AXIS)}' id='pluginView' />
+ <JPanel layout='{new BorderLayout()}' id='pluginView' />
</JScrollPane>
</JSplitPane>
</JPanel>
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-15 18:35:39 UTC (rev 244)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-15 19:46:44 UTC (rev 245)
@@ -10,22 +10,33 @@
import javax.swing.JPanel;
/**
- *
+ * This class is used to get the view of a plugin.
* @author Dorian Langlais
*/
public class PluginView {
+ /**
+ * Map to store the JPanel 'plugin view' that describe a plugin.
+ * The key is the plugin name, the value is the JPanel containing its
+ * description.
+ */
private static final Map<String, JPanel> pluginViews
= new HashMap<String, JPanel>();
-// public PluginView() {
-// pluginViews = new HashMap<String, JPanel>();
-// }
-
+ /**
+ * Put the pluginView of a plugin.
+ * @param pluginName the name of the plugin.
+ * @param pluginView the plugin view of the plugin.
+ */
public static void put(String pluginName, JPanel pluginView) {
pluginViews.put(pluginName, pluginView);
}
+ /**
+ * Method to get the plugin view of a plugin.
+ * @param pluginName the plugin name.
+ * @return return the plugin view of the plugin.
+ */
public static JPanel get(String pluginName) {
return pluginViews.get(pluginName);
}
Added: trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginViewTest.java
===================================================================
--- trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginViewTest.java (rev 0)
+++ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginViewTest.java 2010-03-15 19:46:44 UTC (rev 245)
@@ -0,0 +1,27 @@
+package org.nuiton.mapstoragemanager.plugins.pluginmanager;
+
+import javax.swing.JPanel;
+import junit.framework.TestCase;
+
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/**
+ *
+ * @author Dorian Langlais
+ */
+public class PluginViewTest extends TestCase {
+
+ /**
+ * Test to put and get a JPanel in the PluginView map.
+ */
+ public void testPutAndGet() {
+ String pluginName = "test";
+ JPanel pluginView = new JPanel();
+ PluginView.put(pluginName, pluginView);
+
+ assertEquals(pluginView, PluginView.get(pluginName));
+ }
+}
1
0
r244 - in trunk: msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 15 Mar '10
by dlanglais@users.nuiton.org 15 Mar '10
15 Mar '10
Author: dlanglais
Date: 2010-03-15 19:35:39 +0100 (Mon, 15 Mar 2010)
New Revision: 244
Log:
Petite modification consistant ?\195?\160 stocker la vue/description d'un plugin afin de ne pas la r?\195?\169construire ?\195?\160 chaque fois que l'on souhaite la voir...
Added:
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
Modified:
trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java
trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java
===================================================================
--- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-15 02:37:16 UTC (rev 243)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-15 18:35:39 UTC (rev 244)
@@ -68,8 +68,6 @@
// Construction of the document.
forEachTable(bigTable, database);
- // print the jdom document.
-// toSreen();
save(file);
}
@@ -141,45 +139,28 @@
String content;
for (String key : keys) {
-// try {
- content = bigTable.get(tableName, columnName, key);
- if (content != null && !"".equals(content)) {
+ content = bigTable.get(tableName, columnName, key);
+ if (content != null && !"".equals(content)) {
- // new cell Element.
- Element cell = new Element("cell");
- // new attribute which contain the cell key.
- Attribute cellKeyAttr = new Attribute("key", key);
- cell.setAttribute(cellKeyAttr);
+ // new cell Element.
+ Element cell = new Element("cell");
+ // new attribute which contain the cell key.
+ Attribute cellKeyAttr = new Attribute("key", key);
+ cell.setAttribute(cellKeyAttr);
- // we add the cell to the column.
- column.addContent(cell);
+ // we add the cell to the column.
+ column.addContent(cell);
- // new value Element.
- Element value = new Element("value");
- value.setText(content);
+ // new value Element.
+ Element value = new Element("value");
+ value.setText(content);
- // we add the value to the cell.
- cell.addContent(value);
- }
-// } catch (NoSuchElementException e) {
-// LOG.trace(e, e);
-// }
+ // we add the value to the cell.
+ cell.addContent(value);
+ }
}
}
-// /**
-// * toSreen().
-// * show the XML content on System.out
-// */
-// void toSreen() {
-// try {
-// XMLOutputter output = new XMLOutputter(Format.getPrettyFormat());
-// output.output(document, System.out);
-// } catch (java.io.IOException e) {
-// LOG.error(e, e);
-// }
-// }
-
/**
* Method to save the file.
* @param file the file in which we save the database.
Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java
===================================================================
--- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-15 02:37:16 UTC (rev 243)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-15 18:35:39 UTC (rev 244)
@@ -67,8 +67,6 @@
// Construction of the bigtable database.
forEachTable(bigTable, racine);
- // print the jdomDocument.
-// toSreen();
} catch (IOException ex) {
LOG.error(ex, ex);
}
@@ -140,19 +138,6 @@
}
}
-// /**
-// * toSreen().
-// * show the XML content on System.out
-// */
-// void toSreen() {
-// try {
-// XMLOutputter output = new XMLOutputter(Format.getPrettyFormat());
-// output.output(document, System.out);
-// } catch (java.io.IOException e) {
-// LOG.error(e, e);
-// }
-// }
-
/**
* Method to load the jdom document of the file.
* @param file the file from which the database is saved.
@@ -185,10 +170,6 @@
*/
@Override
public final FileFilter getFileFilter() {
-// if(fileFilter == null){
-// fileFilter =
-// new FileNameExtensionFilter("Fichiers XML", "xml");
-// }
return fileFilter;
}
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 02:37:16 UTC (rev 243)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 18:35:39 UTC (rev 244)
@@ -58,71 +58,77 @@
public void actionPerformed(ActionEvent e) {
- JPanel pluginView = getPluginView();
- pluginView.setLayout(new BorderLayout());
+ if (PluginView.get(pluginName) == null) {
- pluginView.removeAll();
- JPanel titre = new JPanel();
- titre.add(new JLabel(pluginName), BorderLayout.CENTER);
- pluginView.add(titre, BorderLayout.PAGE_START);
+ JPanel pluginView = new JPanel(new BorderLayout());
- JPanel description = new JPanel();
- description.add(new JLabel(" "));
- description.add(new JTextArea(pluginDescritpion));
- pluginView.add(description, BorderLayout.CENTER);
+ JPanel titre = new JPanel();
+ titre.add(new JLabel(pluginName), BorderLayout.CENTER);
+ pluginView.add(titre, BorderLayout.PAGE_START);
+ JPanel description = new JPanel();
+ description.add(new JLabel(" "));
+ description.add(new JTextArea(pluginDescritpion));
+ pluginView.add(description, BorderLayout.CENTER);
- JPanel southButton = new JPanel();
- southButton.setLayout(new GridLayout(1,4));
- final JButton buttonActivate = new JButton(_("activate"));
- final JButton buttonDesactivate = new JButton(_("desactivate"));
- final JButton buttonLoad = new JButton(_("load"));
- final JButton buttonUnload = new JButton(_("unload"));
+ JPanel southButton = new JPanel();
+ southButton.setLayout(new GridLayout(1,4));
- buttonActivate.addActionListener(new ActionListener() {
+ final JButton buttonActivate = new JButton(_("activate"));
+ final JButton buttonDesactivate = new JButton(_("desactivate"));
+ final JButton buttonLoad = new JButton(_("load"));
+ final JButton buttonUnload = new JButton(_("unload"));
- public void actionPerformed(ActionEvent e) {
- //TODO;
- buttonActivate.setEnabled(false);
- buttonDesactivate.setEnabled(true);
- }
- });
+ buttonActivate.addActionListener(new ActionListener() {
- buttonDesactivate.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(false);
+ buttonDesactivate.setEnabled(true);
+ }
+ });
- public void actionPerformed(ActionEvent e) {
- //TODO;
- buttonActivate.setEnabled(true);
- buttonDesactivate.setEnabled(false);
- }
- });
+ buttonDesactivate.addActionListener(new ActionListener() {
- buttonLoad.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(true);
+ buttonDesactivate.setEnabled(false);
+ }
+ });
- public void actionPerformed(ActionEvent e) {
- plugin.load();
- buttonLoad.setEnabled(false);
- buttonUnload.setEnabled(true);
- }
- });
+ buttonLoad.addActionListener(new ActionListener() {
- buttonUnload.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ plugin.load();
+ buttonLoad.setEnabled(false);
+ buttonUnload.setEnabled(true);
+ }
+ });
- public void actionPerformed(ActionEvent e) {
- plugin.unload();
- buttonLoad.setEnabled(true);
- buttonUnload.setEnabled(false);
- }
- });
+ buttonUnload.addActionListener(new ActionListener() {
- southButton.add(buttonActivate);
- southButton.add(buttonDesactivate);
- southButton.add(buttonLoad);
- southButton.add(buttonUnload);
+ public void actionPerformed(ActionEvent e) {
+ plugin.unload();
+ buttonLoad.setEnabled(true);
+ buttonUnload.setEnabled(false);
+ }
+ });
- pluginView.add(southButton, BorderLayout.PAGE_END);
- pluginView.updateUI();
+ southButton.add(buttonActivate);
+ southButton.add(buttonDesactivate);
+ southButton.add(buttonLoad);
+ southButton.add(buttonUnload);
+
+ pluginView.add(southButton, BorderLayout.PAGE_END);
+
+ PluginView.put(pluginName, pluginView);
+
+ }
+ getPluginView().removeAll();
+ getPluginView().add(PluginView.get(pluginName));
+ getPluginView().updateUI();
}
});
@@ -131,7 +137,6 @@
getPluginList().updateUI();
}
-
/**
* {@inheritDoc}
*/
Added: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java (rev 0)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginView.java 2010-03-15 18:35:39 UTC (rev 244)
@@ -0,0 +1,32 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.nuiton.mapstoragemanager.plugins.pluginmanager;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.swing.JPanel;
+
+/**
+ *
+ * @author Dorian Langlais
+ */
+public class PluginView {
+
+ private static final Map<String, JPanel> pluginViews
+ = new HashMap<String, JPanel>();
+
+// public PluginView() {
+// pluginViews = new HashMap<String, JPanel>();
+// }
+
+ public static void put(String pluginName, JPanel pluginView) {
+ pluginViews.put(pluginName, pluginView);
+ }
+
+ public static JPanel get(String pluginName) {
+ return pluginViews.get(pluginName);
+ }
+}
1
0
Author: dlanglais
Date: 2010-03-15 03:37:16 +0100 (Mon, 15 Mar 2010)
New Revision: 243
Log:
Test des fonctions de chargement / d?\195?\169chargement des plugins.
-> V?\195?\169rifie que les MenuItem sont correctement ajout?\195?\169s au menu...
-> mise ?\195?\160 null des MenuItem lors du d?\195?\169chargement des plugins.
Added:
trunk/msm-pluginmanager/src/test/java/
trunk/msm-pluginmanager/src/test/java/org/
trunk/msm-pluginmanager/src/test/java/org/nuiton/
trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/
trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/
trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/
trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java
Removed:
trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/fromto/
trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/tofrom/
trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/fromto/
trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/tofrom/
Modified:
trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java
trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java
trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java
trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java
trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java
trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java
trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java
trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java
trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java
trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java
trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java
trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
Modified: trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java
===================================================================
--- trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -225,6 +225,7 @@
JMenu menuConnect = MainUI.getInstance().getMenuConnect();
if(menuItemConnect != null) {
menuConnect.remove(menuItemConnect);
+ menuItemConnect = null;
}
if (menuConnect.getComponentCount() == 0) {
menuConnect.setEnabled(false);
Modified: trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java
===================================================================
--- trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -5,13 +5,17 @@
package org.nuiton.mapstoragemanager.plugins.bighashmap;
+import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.mapstoragemanager.plugins.BigTable;
import org.nuiton.mapstoragemanager.plugins.Plugin;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -195,4 +199,89 @@
bigHashMapV2.put(tableName1, columnName1, key3, string3);
assertEquals(keys, bigHashMapV2.getKeys(tableName1));
}
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin bigHashMap = new BigHashMap();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuConnect = mainUI.getMenuConnect();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuConnect.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuConnect.getItemCount();
+ JMenuItem lastMenuItem = menuConnect.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuConnect.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java
===================================================================
--- trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -228,6 +228,7 @@
JMenu menuConnect = MainUI.getInstance().getMenuConnect();
if(menuItemConnect != null) {
menuConnect.remove(menuItemConnect);
+ menuItemConnect = null;
}
if (menuConnect.getComponentCount() == 0) {
menuConnect.setEnabled(false);
Modified: trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java
===================================================================
--- trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -5,13 +5,17 @@
package org.nuiton.mapstoragemanager.plugins.bighashmapv2;
+import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.mapstoragemanager.plugins.BigTable;
import org.nuiton.mapstoragemanager.plugins.Plugin;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -195,4 +199,89 @@
bigHashMapV2.put(tableName1, columnName1, key3, string3);
assertEquals(keys, bigHashMapV2.getKeys(tableName1));
}
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin bigHashMap = new BigHashMapV2();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuConnect = mainUI.getMenuConnect();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuConnect.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuConnect.getItemCount();
+ JMenuItem lastMenuItem = menuConnect.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemConnect");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuConnect.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java
===================================================================
--- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -263,6 +263,7 @@
JMenu menuExport = MainUI.getInstance().getMenuExport();
if(menuItemExport != null) {
menuExport.remove(menuItemExport);
+ menuItemExport = null;
}
if (menuExport.getComponentCount() == 0) {
menuExport.setEnabled(false);
Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java
===================================================================
--- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -235,6 +235,7 @@
JMenu menuImport = MainUI.getInstance().getMenuImport();
if(menuItemImport != null) {
menuImport.remove(menuItemImport);
+ menuItemImport = null;
}
if (menuImport.getComponentCount() == 0) {
menuImport.setEnabled(false);
Modified: trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java
===================================================================
--- trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -9,6 +9,8 @@
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
@@ -22,6 +24,7 @@
import org.nuiton.mapstoragemanager.plugins.Plugin;
import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2;
import org.nuiton.mapstoragemanager.plugins.getFile;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -304,4 +307,89 @@
}
assertEquals(acceptedExtensionExpected, acceptedExtensionActual);
}
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin bigHashMap = new ToXML();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuExport = mainUI.getMenuExport();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuExport.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuExport.getItemCount();
+ JMenuItem lastMenuItem = menuExport.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuExport.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java
===================================================================
--- trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -5,11 +5,14 @@
package org.nuiton.mapstoragemanager.plugins.importer;
import java.io.File;
+import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -20,6 +23,7 @@
import org.nuiton.mapstoragemanager.plugins.Plugin;
import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2;
import org.nuiton.mapstoragemanager.plugins.getFile;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -307,50 +311,87 @@
}
/**
- * test Load/UnLoad
+ * Test load and unload plugin.
*/
-// public void testLoadUnLoad() {
-// JMenu menuImport;
-// Set<Component> components;
-// JMenuItem menuItem = null;
-//
-// Importer fromXML = new FromXML();
-// try {
-// Field fMenuItem
-// = fromXML.getClass().getDeclaredField("menuItemImport");
-// fMenuItem.setAccessible(true);
-// menuItem = (JMenuItem) fMenuItem.get(fromXML);
-// } catch (IllegalArgumentException ex) {
-// LOG.error(ex, ex);
-// } catch (IllegalAccessException ex) {
-// LOG.error(ex, ex);
-// } catch (NoSuchFieldException ex) {
-// LOG.error(ex, ex);
-// } catch (SecurityException ex) {
-// LOG.error(ex, ex);
-// }
-//
-// fromXML.load();
-//
-// menuImport = MainUI.getInstance().getMenuImportBis();
-// System.out.println(menuImport.e);
-// components = new HashSet<Component>();
-// for (int i = 0 ; i < menuImport.getItemCount() ; i++) {
-// System.out.println(menuImport.getItem(i));
-// components.add(menuImport.getItem(i));
-// }
-//
-// assertEquals(true, components.contains(menuItem));
-//
-// fromXML.unload();
-//
-// menuImport = MainUI.getInstance().getMenuImportBis();
-// components = new HashSet<Component>();
-// for (int i = 0 ; i < menuImport.getItemCount() ; i++) {
-// components.add(menuImport.getItem(i));
-// }
-//
-// assertEquals(false, components.contains(menuItem));
-//
-// }
+ public void testLoadUnload() {
+ Plugin bigHashMap = new FromXML();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuImport = mainUI.getMenuImport();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuImport.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuImport.getItemCount();
+ JMenuItem lastMenuItem = menuImport.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuImport.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java
===================================================================
--- trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -233,6 +233,7 @@
JMenu menuExport = MainUI.getInstance().getMenuExport();
if(menuItemExport != null) {
menuExport.remove(menuItemExport);
+ menuItemExport = null;
}
if (menuExport.getComponentCount() == 0) {
menuExport.setEnabled(false);
Modified: trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java
===================================================================
--- trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -295,6 +295,7 @@
JMenu menuImport = MainUI.getInstance().getMenuImport();
if(menuItemImport != null) {
menuImport.remove(menuItemImport);
+ menuItemImport = null;
}
if (menuImport.getComponentCount() == 0) {
menuImport.setEnabled(false);
Modified: trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java
===================================================================
--- trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -6,8 +6,11 @@
package org.nuiton.mapstoragemanager.plugins.exporter;
import java.io.File;
+import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
@@ -19,6 +22,7 @@
import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2;
import org.nuiton.mapstoragemanager.plugins.getFile;
import org.nuiton.mapstoragemanager.plugins.importer.FromXMLXPP3;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -272,4 +276,89 @@
exporter.exportTo(bigTable,exportTest);
exportTest.delete();
}
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin bigHashMap = new ToXMLXPP3();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuExport = mainUI.getMenuExport();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuExport.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuExport.getItemCount();
+ JMenuItem lastMenuItem = menuExport.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemExport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuExport.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java
===================================================================
--- trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -5,11 +5,14 @@
package org.nuiton.mapstoragemanager.plugins.importer;
import java.io.File;
+import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -20,6 +23,7 @@
import org.nuiton.mapstoragemanager.plugins.Plugin;
import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2;
import org.nuiton.mapstoragemanager.plugins.getFile;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
@@ -305,4 +309,89 @@
}
assertEquals(acceptedExtensionExpected, acceptedExtensionActual);
}
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin bigHashMap = new FromXMLXPP3();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuImport = mainUI.getMenuImport();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuImport.getItemCount();
+ assertNull(menuItemPlugin);
+
+ bigHashMap.load();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuImport.getItemCount();
+ JMenuItem lastMenuItem = menuImport.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ bigHashMap.unload();
+
+ try {
+ fMenuItemPlugin =
+ bigHashMap.getClass().getDeclaredField("menuItemImport");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuImport.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
}
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-14 21:06:55 UTC (rev 242)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 02:37:16 UTC (rev 243)
@@ -181,6 +181,7 @@
JMenu menuPluginMSM = MainUI.getInstance().getMenuPlugin();
if(menuItemPlugin != null) {
menuPluginMSM.remove(menuItemPlugin);
+ menuItemPlugin = null;
}
if (menuPluginMSM.getComponentCount() == 0) {
menuPluginMSM.setEnabled(false);
Added: trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java
===================================================================
--- trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java (rev 0)
+++ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java 2010-03-15 02:37:16 UTC (rev 243)
@@ -0,0 +1,121 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.nuiton.mapstoragemanager.plugins.pluginmanager;
+
+import java.lang.reflect.Field;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import junit.framework.TestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.mapstoragemanager.plugins.Plugin;
+import org.nuiton.mapstoragemanager.ui.MainUI;
+
+/**
+ *
+ * @author Dorian Langlais
+ */
+public class PluginManagerTest extends TestCase {
+
+ /**
+ * Logger.
+ */
+ private static final Log LOG = LogFactory.getLog(PluginManagerTest.class);
+
+ public void testGetPluginName() {
+ Plugin pluginManager = new PluginManager();
+ String expectedPluginName = pluginManager.getClass().getSimpleName();
+ String actualPluginName = pluginManager.getPluginName();
+ LOG.info("pluginName : {expected,'" + expectedPluginName
+ + "'} - {actual,'" + actualPluginName + "'}");
+ assertEquals(expectedPluginName, actualPluginName);
+ }
+
+ /**
+ * Test load and unload plugin.
+ */
+ public void testLoadUnload() {
+ Plugin pluginManager = new PluginManager();
+ MainUI mainUI = MainUI.getInstance();
+ JMenu menuPlugin = mainUI.getMenuPlugin();
+
+ Field fMenuItemPlugin = null;
+ JMenuItem menuItemPlugin = null;
+ try {
+ fMenuItemPlugin =
+ pluginManager.getClass().getDeclaredField("menuItemPlugin");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+
+ /**
+ * Before load plugin we get the number of MenuItem of the PluginMenu,
+ * We control that menuItemPlugin is null.
+ */
+ int nbMenuItemBeforeLoad = menuPlugin.getItemCount();
+ assertNull(menuItemPlugin);
+
+ pluginManager.load();
+
+ try {
+ fMenuItemPlugin =
+ pluginManager.getClass().getDeclaredField("menuItemPlugin");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After load the plugin, we verify that a new MenuItem is added in the
+ * Plugin Menu, and that it is the MenuItem of the PluginManager.
+ */
+ int nbMenuItemAfterLoad = menuPlugin.getItemCount();
+ JMenuItem lastMenuItem = menuPlugin.getItem(nbMenuItemAfterLoad - 1);
+
+ assertNotNull(menuItemPlugin);
+ assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad);
+ assertEquals(menuItemPlugin, lastMenuItem);
+
+ pluginManager.unload();
+
+ try {
+ fMenuItemPlugin =
+ pluginManager.getClass().getDeclaredField("menuItemPlugin");
+ fMenuItemPlugin.setAccessible(true);
+ menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager);
+ } catch (IllegalArgumentException ex) {
+ LOG.error(ex, ex);
+ } catch (IllegalAccessException ex) {
+ LOG.error(ex, ex);
+ } catch (NoSuchFieldException ex) {
+ LOG.error(ex, ex);
+ } catch (SecurityException ex) {
+ LOG.error(ex, ex);
+ }
+ /**
+ * After unload the plugin, we verify that his MenuItem is deleted in
+ * the Plugin Menu.
+ */
+ int nbMenuItemAfterUnload = menuPlugin.getItemCount();
+
+ assertNull(menuItemPlugin);
+ assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload);
+ }
+}
1
0
r242 - in trunk: msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2
by dlanglais@users.nuiton.org 14 Mar '10
by dlanglais@users.nuiton.org 14 Mar '10
14 Mar '10
Author: dlanglais
Date: 2010-03-14 22:06:55 +0100 (Sun, 14 Mar 2010)
New Revision: 242
Log:
Ajout de test sur BigHashMap et BigHashMapV2.
Modified:
trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java
trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java
Modified: trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java
===================================================================
--- trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-14 20:06:23 UTC (rev 241)
+++ trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-14 21:06:55 UTC (rev 242)
@@ -5,9 +5,12 @@
package org.nuiton.mapstoragemanager.plugins.bighashmap;
+import java.util.HashSet;
+import java.util.Set;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.mapstoragemanager.plugins.BigTable;
import org.nuiton.mapstoragemanager.plugins.Plugin;
/**
@@ -29,4 +32,167 @@
+ "'} - {actual,'" + actualPluginName + "'}");
assertEquals(expectedPluginName, actualPluginName);
}
+
+ /**
+ * We put tables, get tablesNames and control the result.
+ * We delete tables, get tablesNames and control the result.
+ */
+ public void testCreateAndDeleteTable() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMap();
+ Set<String> tablesName = new HashSet<String>();
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We put a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+ tablesName.add(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We put a new table TestTable2 */
+ String tableName2 = "TestTable2";
+ bigHashMapV2.createTable(tableName2);
+ tablesName.add(tableName2);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We remove the table TestTable1 */
+ bigHashMapV2.deleteTable(tableName1);
+ tablesName.remove(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We remove the table TestTable2 */
+ bigHashMapV2.deleteTable(tableName1);
+ tablesName.remove(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ }
+
+ /**
+ * We create a table.
+ * We put columns, get columnsNames and control the result.
+ * We delete columns, get columnsNames and control the result.
+ */
+ public void testCreateAndDeleteColumns() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMap();
+ Set<String> columnsName = new HashSet<String>();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We put a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+ columnsName.add(columnName1);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We put a column TestColumn2 */
+ String columnName2 = "TestColumn2";
+ bigHashMapV2.createColumn(tableName1, columnName2);
+ columnsName.add(columnName2);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We remove the column TestColumn1 */
+ bigHashMapV2.deleteColumn(tableName1, columnName1);
+ columnsName.remove(columnName1);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We remove the column TestColumn2 */
+ bigHashMapV2.deleteColumn(tableName1, columnName2);
+ columnsName.remove(columnName2);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+ }
+
+ /**
+ * We create a table with a column.
+ * We put and try to get String in the BigHashMap.
+ */
+ public void testPutAndGet() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMap();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We create a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+
+ /** We put and try to get String in the BigHashMap */
+ String string = "TestString";
+ String key = "testKey";
+ bigHashMapV2.put(tableName1, columnName1, key, string);
+ assertEquals(string, bigHashMapV2.get(tableName1, columnName1, key));
+
+ /** We put and try to get String in the BigHashMap */
+ String string1 = "TestString1";
+ String key1 = "testKey1";
+ bigHashMapV2.put(tableName1, columnName1, key1, string1);
+ assertEquals(string1, bigHashMapV2.get(tableName1, columnName1, key1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string2 = "TestString2";
+ String key2 = "testKey2";
+ bigHashMapV2.put(tableName1, columnName1, key2, string2);
+ assertEquals(string2, bigHashMapV2.get(tableName1, columnName1, key2));
+
+ /** We put and try to get String in the BigHashMap */
+ String string3 = "TestString3";
+ String key3 = "testKey3";
+ bigHashMapV2.put(tableName1, columnName1, key3, string3);
+ assertEquals(string3, bigHashMapV2.get(tableName1, columnName1, key3));
+ }
+
+ /**
+ * We create a table with a column.
+ * We put and try to get String in the BigHashMap.
+ */
+ public void testGetKeys() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMap();
+ Set<String> keys = new HashSet<String>();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We create a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+
+ /** We put and try to get String in the BigHashMap */
+ String string = "TestString";
+ String key = "testKey";
+ keys.add(key);
+ bigHashMapV2.put(tableName1, columnName1, key, string);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string1 = "TestString1";
+ String key1 = "testKey1";
+ keys.add(key1);
+ bigHashMapV2.put(tableName1, columnName1, key1, string1);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string2 = "TestString2";
+ String key2 = "testKey2";
+ keys.add(key2);
+ bigHashMapV2.put(tableName1, columnName1, key2, string2);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string3 = "TestString3";
+ String key3 = "testKey3";
+ keys.add(key3);
+ bigHashMapV2.put(tableName1, columnName1, key3, string3);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+ }
}
Modified: trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java
===================================================================
--- trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-14 20:06:23 UTC (rev 241)
+++ trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-14 21:06:55 UTC (rev 242)
@@ -5,9 +5,12 @@
package org.nuiton.mapstoragemanager.plugins.bighashmapv2;
+import java.util.HashSet;
+import java.util.Set;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.mapstoragemanager.plugins.BigTable;
import org.nuiton.mapstoragemanager.plugins.Plugin;
/**
@@ -29,4 +32,167 @@
+ "'} - {actual,'" + actualPluginName + "'}");
assertEquals(expectedPluginName, actualPluginName);
}
+
+ /**
+ * We put tables, get tablesNames and control the result.
+ * We delete tables, get tablesNames and control the result.
+ */
+ public void testCreateAndDeleteTable() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMapV2();
+ Set<String> tablesName = new HashSet<String>();
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We put a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+ tablesName.add(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We put a new table TestTable2 */
+ String tableName2 = "TestTable2";
+ bigHashMapV2.createTable(tableName2);
+ tablesName.add(tableName2);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We remove the table TestTable1 */
+ bigHashMapV2.deleteTable(tableName1);
+ tablesName.remove(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ /** We remove the table TestTable2 */
+ bigHashMapV2.deleteTable(tableName1);
+ tablesName.remove(tableName1);
+
+ assertEquals(tablesName, bigHashMapV2.getTablesNames());
+
+ }
+
+ /**
+ * We create a table.
+ * We put columns, get columnsNames and control the result.
+ * We delete columns, get columnsNames and control the result.
+ */
+ public void testCreateAndDeleteColumns() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMapV2();
+ Set<String> columnsName = new HashSet<String>();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We put a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+ columnsName.add(columnName1);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We put a column TestColumn2 */
+ String columnName2 = "TestColumn2";
+ bigHashMapV2.createColumn(tableName1, columnName2);
+ columnsName.add(columnName2);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We remove the column TestColumn1 */
+ bigHashMapV2.deleteColumn(tableName1, columnName1);
+ columnsName.remove(columnName1);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+
+ /** We remove the column TestColumn2 */
+ bigHashMapV2.deleteColumn(tableName1, columnName2);
+ columnsName.remove(columnName2);
+ assertEquals(columnsName, bigHashMapV2.getColumnsNames(tableName1));
+ }
+
+ /**
+ * We create a table with a column.
+ * We put and try to get String in the BigHashMap.
+ */
+ public void testPutAndGet() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMapV2();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We create a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+
+ /** We put and try to get String in the BigHashMap */
+ String string = "TestString";
+ String key = "testKey";
+ bigHashMapV2.put(tableName1, columnName1, key, string);
+ assertEquals(string, bigHashMapV2.get(tableName1, columnName1, key));
+
+ /** We put and try to get String in the BigHashMap */
+ String string1 = "TestString1";
+ String key1 = "testKey1";
+ bigHashMapV2.put(tableName1, columnName1, key1, string1);
+ assertEquals(string1, bigHashMapV2.get(tableName1, columnName1, key1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string2 = "TestString2";
+ String key2 = "testKey2";
+ bigHashMapV2.put(tableName1, columnName1, key2, string2);
+ assertEquals(string2, bigHashMapV2.get(tableName1, columnName1, key2));
+
+ /** We put and try to get String in the BigHashMap */
+ String string3 = "TestString3";
+ String key3 = "testKey3";
+ bigHashMapV2.put(tableName1, columnName1, key3, string3);
+ assertEquals(string3, bigHashMapV2.get(tableName1, columnName1, key3));
+ }
+
+ /**
+ * We create a table with a column.
+ * We put and try to get String in the BigHashMap.
+ */
+ public void testGetKeys() {
+ /** We create a new BigTable */
+ BigTable bigHashMapV2 = new BigHashMapV2();
+ Set<String> keys = new HashSet<String>();
+
+ /** We create a new table TestTable1 */
+ String tableName1 = "TestTable1";
+ bigHashMapV2.createTable(tableName1);
+
+ /** We create a column TestColumn1 */
+ String columnName1 = "TestColumn1";
+ bigHashMapV2.createColumn(tableName1, columnName1);
+
+ /** We put and try to get String in the BigHashMap */
+ String string = "TestString";
+ String key = "testKey";
+ keys.add(key);
+ bigHashMapV2.put(tableName1, columnName1, key, string);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string1 = "TestString1";
+ String key1 = "testKey1";
+ keys.add(key1);
+ bigHashMapV2.put(tableName1, columnName1, key1, string1);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string2 = "TestString2";
+ String key2 = "testKey2";
+ keys.add(key2);
+ bigHashMapV2.put(tableName1, columnName1, key2, string2);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+
+ /** We put and try to get String in the BigHashMap */
+ String string3 = "TestString3";
+ String key3 = "testKey3";
+ keys.add(key3);
+ bigHashMapV2.put(tableName1, columnName1, key3, string3);
+ assertEquals(keys, bigHashMapV2.getKeys(tableName1));
+ }
}
1
0
r241 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager/core src/site/doc/analyse src/site/doc/rapport src/site/doc/rapport/img
by afages@users.nuiton.org 14 Mar '10
by afages@users.nuiton.org 14 Mar '10
14 Mar '10
Author: afages
Date: 2010-03-14 21:06:23 +0100 (Sun, 14 Mar 2010)
New Revision: 241
Log:
Modif rapport
Added:
trunk/src/site/doc/rapport/img/msm.png
trunk/src/site/doc/rapport/img/ui.png
Modified:
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/Messages.java
trunk/src/site/doc/analyse/analyseBT.rst
trunk/src/site/doc/analyse/msm.zargo
trunk/src/site/doc/analyse/usecase.rst
trunk/src/site/doc/rapport/rapport.rst
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/Messages.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/Messages.java 2010-03-14 17:57:25 UTC (rev 240)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/Messages.java 2010-03-14 20:06:23 UTC (rev 241)
@@ -16,7 +16,7 @@
private static final String BUNDLE_NAME = "core.messages"; //$NON-NLS-1$
/**
- * ressource bundle.
+ * resource bundle.
*/
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
.getBundle(BUNDLE_NAME);
Modified: trunk/src/site/doc/analyse/analyseBT.rst
===================================================================
--- trunk/src/site/doc/analyse/analyseBT.rst 2010-03-14 17:57:25 UTC (rev 240)
+++ trunk/src/site/doc/analyse/analyseBT.rst 2010-03-14 20:06:23 UTC (rev 241)
@@ -89,4 +89,4 @@
projet, issue de la spécification même de Google Inc.
"BigTable: A Distributed Storage System for Structured Data"
-lien : labs.google.com/papers/bigtable-osdi06.pdf
+lien : http://labs.google.com/papers/bigtable-osdi06.pdf
Modified: trunk/src/site/doc/analyse/msm.zargo
===================================================================
(Binary files differ)
Modified: trunk/src/site/doc/analyse/usecase.rst
===================================================================
--- trunk/src/site/doc/analyse/usecase.rst 2010-03-14 17:57:25 UTC (rev 240)
+++ trunk/src/site/doc/analyse/usecase.rst 2010-03-14 20:06:23 UTC (rev 241)
@@ -7,7 +7,7 @@
BigTable (Hbase, HashMap...) en affichant les différentes tables graphiquement
selon le plugin de la base.
-**Scope :** MSM -GUI/IHM.
+**Scope :** GUI - Plugin.
**Level :** sous-fonctionnalité.
@@ -48,7 +48,7 @@
BigTable (Hbase, HashMap...) en affichant les différents éléments
(colonnes, types...) graphiquement selon le plugin de la base.
-**Scope :** MSM -GUI/IHM
+**Scope :** GUI - Plugin.
**Level :** sous-fonctionnalité
@@ -91,7 +91,7 @@
**Goal in context :** obtenir les données d'une table (son contenu) d'une base
BigTable (Hbase, HashMap...) selon le plugin de la base.
-**Scope :** MSM - GUI/IHM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
@@ -131,38 +131,37 @@
**Use case :** 3.Monitor.
**Goal in context :** surveiller la base de sorte à vérifier l'activité des
-noeuds (charge, espace disque...).
+noeuds (charge, espace disque...). Ces informations peuvent varier (plugin).
-**Scope :** MSM - GUI/IHM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
**Primary actor :** utilisateur de MSM.
-**Trigger :**
+**Trigger :** l'utilisateur souhaite afficher des informations précises
+sur l'application en cours.
-**Frequency :** peu souvent ~= 10/jour.
+**Frequency :** constamment (temps-réel).
**Pre-conditions :**
- - PRE1 :
+ - PRE1 : l'application MSM est lancée.
+ - PRE2 : le plugin désiré est chargé.
**Post-conditions :**
- - POST1 :
+ - POST1 : les informations désirées sont affichées.
**Main success scenario :**
- 1)
- 2)
- 3)
- 4)
- 5)
- 6)
- 7)
+ 1) l'utilisateur charge le module de monitor désiré
+ 2) MSM récupère les informations
+ 3) MSM affiche les informations et les retourne à l'utilisateur
+ 4) l'utilisateur traite les données
**Extensions :**
**Performance :** la qualité du monitoring est tout aussi importante que
-la temps-réel (actualité des données) de la tâche.
+le temps-réel (actualité des données) de la tâche.
2.8 Import
----------
@@ -172,7 +171,7 @@
**Goal in context :** importer des données dans une base de données
(tables, données).
-**Scope :** MSM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
@@ -217,7 +216,7 @@
**Goal in context :** exporter des données dans un fichier depuis une base
(tables, données).
-**Scope :** MSM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
@@ -260,7 +259,7 @@
**Goal in context :** se connecter à une base de données BigTable
préalablement choisie pour la rendre active dans MSM.
-**Scope :** MSM - GUI/IHM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
@@ -281,8 +280,8 @@
1) L'utilisateur désire se connecter
2) L'utilisateur choisit une base de données à laquelle se connecter
- 3) En fonction de la base, MSM demande diverses informations de connexion
-(utilisateur, mot de passe, port...)
+ 3) En fonction de la base, MSM demande diverses informations de connexion utilisateur, mot de passe, port...)
+
4) L'utilisateur entre ces informations et se connecte
5) MSM renvoie le résultat de la connexion
6) L'utilisateur traite la base
@@ -302,7 +301,7 @@
une nouvelle base de données BigTable (graphique et fonctionnalités) pour la
rendre active dans MSM.
-**Scope :** MSM - GUI/IHM.
+**Scope :** GUI - Plugin.
**Level :** fonctionnalité.
@@ -321,9 +320,8 @@
**Main success scenario :**
1) Le développeur désire développer un plugin
- 2) Le développeur implémente l'interface BigTable
- 3) Le développeur implémente l'interface GUI en se servant de son
- implémentation de BigTable
+ 2) Le développeur implémente l'interface Plugin
+ 3) Le développeur implémente son plugin
4) Le développeur crée un JAR du plugin
**Extensions :**
Added: trunk/src/site/doc/rapport/img/msm.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/msm.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/src/site/doc/rapport/img/ui.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/ui.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/src/site/doc/rapport/rapport.rst
===================================================================
--- trunk/src/site/doc/rapport/rapport.rst 2010-03-14 17:57:25 UTC (rev 240)
+++ trunk/src/site/doc/rapport/rapport.rst 2010-03-14 20:06:23 UTC (rev 241)
@@ -229,7 +229,7 @@
.. figure:: img/package.png
:scale: 300%
- Diagramme de package
+ Diagramme de packages
En réalité, on veut donner la possibilité à un développeur d'intégrer
la base et les fonctionnalités qu'il souhaite dans MSM. L'application doit
@@ -246,13 +246,94 @@
3.1 Msm (Core)
--------------
-3.2 GUI
--------
+.. figure:: img/msm.png
+ :scale: 400%
+ Diagramme de classes de conception du module msm
+
+Le coeur de MSM est constitué principalement d'une architecture à plugins.
+Un PluginLoader étend un URLClassLoader. On construit un PluginLoader
+en lui fournissant le chemin des plugins et le ClassLoader parent.
+
+Dans le processus de construction, on récupère chacun des plugins
+correspondants à chaque fichier JAR présent dans le chemin passé en paramètre
+dans le PluginLoader. On utilise ensuite un ServiceLoader de Java pour charger
+chacun des plugins de chaque type (BigTable, Importer, Exporter, Monitoring).
+
+Finallement, on stocke chaque plugin dans une Map dont la clé est le nom
+du plugin (un plugin doit implémenter la méthode getPluginName()).
+
+Le PluginLoader propose ensuite différents services permettant de récupérer,
+d'utiliser les différents plugins.
+
3.2 Plugin
----------
.. figure:: img/plugin.png
:scale: 400%
- Diagramme de classe de conception du module plugin
+ Diagramme de classes de conception du module plugin
+
+Un plugin est avant tout décrit via une interface *Plugin* permettant de
+s'auto-décrire, se charger, se désactiver. Lorsqu'un plugin se charge, il
+définit explicitement ses menus et ses actions associés au sein de
+l'application qu'on leur fournit. Ceci permet notamment de ne pas avoir de
+restrictions sur les possibilités d'extension de MSM puisque les
+fonctionnalités de chaque plugin sont chargées peu importe ce dont il
+s'agit.
+
+On trouve ensuite différentes interfaces prévues par défaut dans l'API de
+l'application qui sont des types de plugins, notamment en ce qui concerne
+l'importation, l'exportation, le monitoring et enfin la base en elle-même
+grâce à l'interface BigTable extraite de l'analyse de la spécification Google
+déjà étudiée.
+
+Hbase, BigHashMap, Cassandra... sont des plugins de type BigTable.
+Un développeur voulant rajouter une nouvelle base doit donc implémenter cette
+interface.
+
+3.3 GUI
+-------
+
+.. figure:: img/ui.png
+ :scale: 400%
+
+ Diagramme de classes de conception du module gui
+
+Comme dit précédemment, on utilise JAXX pour générer automatiquement une
+classe SWING. En l'occurence, la classe MainUI faisant office de Vue dans
+notre framework MVC. Cette vue est une frame composée de plusieurs composants
+SWING associés à leur listener et modèles de données le cas échéant.
+La vue ainsi générée implémente l'interface JaxxObject et est un type
+d'application Jaxx. Il existe une uniquement instance de l'application,
+implémentée grâce au pattern Singleton et récupérable via la méthode
+getInstance() en statique.
+
+On trouve ensuite le contrôleur, ApplicationEngine qui connaît la vue du
+module *gui*, l'interface BigTable du module *plugin* (une seule
+implémentation de BigTable à la fois est possible, et ApplicationEngine
+la connaît) et le PluginLoader du module *msm*. Il fait office de pivot
+entre les trois modules. On y trouve les différentes méthodes appelées depuis
+l'application MainUI ainsi qu'une méthode pour charger un plugin à partir
+du PluginLoader. C'est également un singleton récupéré grâce à la méthode
+statique getInstance().
+
+3.4 Initialisation et lancement de MSM
+--------------------------------------
+
+Au lancement du programme principal, l'instance de MainUI est récupérée,
+la configuration autour de Msm concernant notamment la localisation
+(gérée par des classes i18n propres à Code Lutin et dont les dépendances
+sont écrites dans le pom.xml du projet) également.
+
+Ensuite, on initialise l'application en récupérant l'instance de
+ApplicationEngine.
+
+Ainsi, à chaque évènement de l'utilisateur capturée par l'application,
+on fait appel au contrôleur ApplicationEngine (défini à chaque appel dans
+le fichier MainUI.jaxx et donc généré tel quel dans MainUI) qui se charge
+de faire le lien entre les différents plugins de son PluginLoader et
+l'interface graphique, qu'il peut modifier à sa guise.
+
+.. Manuel utilisateur TODO
+.. Manuel développeur TODO
1
0