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
14 Mar '10
Author: dlanglais
Date: 2010-03-14 18:57:25 +0100 (Sun, 14 Mar 2010)
New Revision: 240
Log:
Suppression des anciennes classes du plugin HBase (inutiles).
Suppression de l'interface de plugin 'Monitoring' -> il s'agit d'un plugin tout simplement.
Le plugin Monitoring impl?\195?\169mente l'interface Plugin au lieu de Monitoring ( modifi?\195?\169 aussi dans META-INF ).
Suppression des imports inutilis?\195?\169s dans le main() de PluginManager.
A faire :
Il me faudrait modifier le PluginManager afin qu'il ne r?\195?\169g?\195?\169n?\195?\168re par un nouveau JPanel 'PluginView' ?\195?\160 chaque fois que l'on clique sur un autre Plugin. De m?\195?\170me, il faudrait faire en sorte que la description du plugin ne prenne pas plus de place que la taille du JPanel pr?\195?\169vu...
Added:
trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin
Removed:
trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/MyLittleHBaseClient.java
trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/NoSuchTableException.java
trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/OLDHBase.java
trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Monitoring
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java
Modified:
trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/Main.java
trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
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-14 16:20:17 UTC (rev 239)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -17,7 +17,7 @@
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.Monitoring;
import org.nuiton.mapstoragemanager.plugins.Plugin;
/**
@@ -86,8 +86,8 @@
ServiceLoader.load(Importer.class, this);
ServiceLoader<Exporter> exporterSetLoader =
ServiceLoader.load(Exporter.class, this);
- ServiceLoader<Monitoring> monitoringSetLoader =
- ServiceLoader.load(Monitoring.class, this);
+// ServiceLoader<Monitoring> monitoringSetLoader =
+// ServiceLoader.load(Monitoring.class, this);
ServiceLoader<Plugin> pluginSetLoader =
ServiceLoader.load(Plugin.class, this);
@@ -106,10 +106,10 @@
exporter.load();
plugins.put(exporter.getPluginName(), exporter);
}
- for (Monitoring monitor : monitoringSetLoader) {
- monitor.load();
- plugins.put(monitor.getPluginName(), monitor);
- }
+// for (Monitoring monitor : monitoringSetLoader) {
+// monitor.load();
+// plugins.put(monitor.getPluginName(), monitor);
+// }
for (Plugin plugin : pluginSetLoader) {
plugin.load();
plugins.put(plugin.getPluginName(), plugin);
Deleted: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -1,13 +0,0 @@
-package org.nuiton.mapstoragemanager.plugins;
-
-/**
- * @author E045231P
- */
-public interface Monitoring extends Plugin {
-
- /**
- * display.
- */
- void display();
-
-}
Modified: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/Main.java
===================================================================
--- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/Main.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/Main.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -14,7 +14,7 @@
*/
private static final Log LOG = LogFactory.getLog(HBase.class);
- public static void main(String[] args){
+ private Main() {
String tableName = "myTable";
String columnName = "myColumn";
String contentValue = "val";
@@ -29,4 +29,8 @@
LOG.fatal(ex, ex);
}
}
+
+ public static void main(String[] args){
+ new Main();
+ }
}
\ No newline at end of file
Deleted: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/MyLittleHBaseClient.java
===================================================================
--- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/MyLittleHBaseClient.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/MyLittleHBaseClient.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -1,108 +0,0 @@
-package org.nuiton.mapstoragemanager.plugins.hbase;
-
-import java.io.IOException;
-
-import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.util.Bytes;
-
-
-// Class that has nothing but a main.
-// Does a Put, Get and a Scan against an hbase table.
-public class MyLittleHBaseClient {
- public static void main(String[] args) throws IOException {
- // You need a configuration object to tell the client where to connect.
- // When you create a HBaseConfiguration, it reads in whatever you've set
- // into your hbase-site.xml and in hbase-default.xml, as long as these can
- // be found on the CLASSPATH
- HBaseConfiguration config = new HBaseConfiguration();
-
-// HBaseAdmin hBaseAdmin = new HBaseAdmin(config);
-// {
-// HTableDescriptor hTableDescriptor = new HTableDescriptor("myLittleHBaseTable2");
-// HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("myLittleRow2");
-// hTableDescriptor.addFamily(hColumnDescriptor);
-// hBaseAdmin.createTable(hTableDescriptor);
-// }
-// for (HTableDescriptor hTableDescriptor : hBaseAdmin.listTables()) {
-// System.out.println(hTableDescriptor.getNameAsString());
-// for (HColumnDescriptor hColumnDescriptor : hTableDescriptor.getColumnFamilies()) {
-// System.out.println("\t" + hColumnDescriptor.getNameAsString());
-// }
-// }
-
- // This instantiates an HTable object that connects you to
- // the "myLittleHBaseTable" table.
- HTable table = new HTable(config, "myLittleHBaseTable");
-
- // To add to a row, use Put. A Put constructor takes the name of the row
- // you want to insert into as a byte array. In HBase, the Bytes class has
- // utility for converting all kinds of java types to byte arrays. In the
- // below, we are converting the String "myLittleRow" into a byte array to
- // use as a row key for our update. Once you have a Put instance, you can
- // adorn it by setting the names of columns you want to update on the row,
- // the timestamp to use in your update, etc.If no timestamp, the server
- // applies current time to the edits.
- Put p = new Put(Bytes.toBytes("myLittleRow"));
-
- // To set the value you'd like to update in the row 'myLittleRow', specify
- // the column family, column qualifier, and value of the table cell you'd
- // like to update. The column family must already exist in your table
- // schema. The qualifier can be anything. All must be specified as byte
- // arrays as hbase is all about byte arrays. Lets pretend the table
- // 'myLittleHBaseTable' was created with a family 'myLittleFamily'.
- p.add(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"),
- Bytes.toBytes("Some Value"));
-
- // Once you've adorned your Put instance with all the updates you want to
- // make, to commit it do the following (The HTable#put method takes the
- // Put instance you've been building and pushes the changes you made into
- // hbase)
- table.put(p);
-
- // Now, to retrieve the data we just wrote. The values that come back are
- // Result instances. Generally, a Result is an object that will package up
- // the hbase return into the form you find most palatable.
- Get g = new Get(Bytes.toBytes("myLittleRow"));
- Result r = table.get(g);
- byte [] value = r.getValue(Bytes.toBytes("myLittleFamily"),
- Bytes.toBytes("someQualifier"));
- // If we convert the value bytes, we should get back 'Some Value', the
- // value we inserted at this location.
- String valueStr = Bytes.toString(value);
- System.out.println("GET: " + valueStr);
-
- // Sometimes, you won't know the row you're looking for. In this case, you
- // use a Scanner. This will give you cursor-like interface to the contents
- // of the table. To set up a Scanner, do like you did above making a Put
- // and a Get, create a Scan. Adorn it with column names, etc.
- Scan s = new Scan();
- s.addColumn(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"));
- ResultScanner scanner = table.getScanner(s);
- try {
- // Scanners return Result instances.
- // Now, for the actual iteration. One way is to use a while loop like so:
- for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
- // print out the row we found and the columns we were looking for
- System.out.println("Found row: " + rr);
- }
-
- // The other approach is to use a foreach loop. Scanners are iterable!
- // for (Result rr : scanner) {
- // System.out.println("Found row: " + rr);
- // }
- } finally {
- // Make sure you close your scanners when you are done!
- // Thats why we have it inside a try/finally clause
- scanner.close();
- }
- }
-}
Deleted: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/NoSuchTableException.java
===================================================================
--- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/NoSuchTableException.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/NoSuchTableException.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -1,16 +0,0 @@
-package org.nuiton.mapstoragemanager.plugins.hbase;
-
-/**
- * Exception thrown when the plugin try to access to an inexistant table.
- * @author Dorian Langlais
- */
-public class NoSuchTableException extends Exception {
-
- /**
- * Exception constructor.
- * @param table the name of the inexistant table.
- */
- public NoSuchTableException(String table) {
- super("Table " + table + "doesn't exist !");
- }
-}
Deleted: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/OLDHBase.java
===================================================================
--- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/OLDHBase.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/OLDHBase.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -1,176 +0,0 @@
-package org.nuiton.mapstoragemanager.plugins.hbase;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-//import org.nuiton.mapstoragemanager.plugins.BigTable;
-
-import org.apache.hadoop.hbase.HBaseConfiguration;
-//import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class OLDHBase /*implements "old"BigTable*/ {
-
- /**
- * Logger.
- */
- private static final Log LOG = LogFactory.getLog(OLDHBase.class);
-
- private HBaseConfiguration config;
- private HTable table;
- private String familyName = "mylittlecolumnfamily";
- private String rowName = "myLittleRow";
- private String tableName = "mylittletable";
-
- public OLDHBase() {
- // You need a configuration object to tell the client where to connect.
- // When you create a HBaseConfiguration, it reads in whatever you've set
- // into your hbase-site.xml and in hbase-default.xml, as long as these can
- // be found on the CLASSPATH
- org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
- config = new HBaseConfiguration(conf);
- LOG.info("test");
- selectTable(tableName);
- put("test", "val");
- put("test", "val2");
- put("test2", "val3");
- }
-
-// @Override
- public void put(String key, String value) {
-
- // To add to a row, use Put. A Put constructor takes the name of the row
- // you want to insert into as a byte array. In HBase, the Bytes class has
- // utility for converting all kinds of java types to byte arrays. In the
- // below, we are converting the String "myLittleRow" into a byte array to
- // use as a row key for our update. Once you have a Put instance, you can
- // adorn it by setting the names of columns you want to update on the row,
- // the timestamp to use in your update, etc.If no timestamp, the server
- // applies current time to the edits.
- Put p = new Put(Bytes.toBytes(rowName));
-
- // To set the value you'd like to update in the row 'myRow', specify the
- // column family, column qualifier, and value of the table cell you'd like
- // to update. The column family must already exist in your table schema.
- // The qualifier can be anything. All must be specified as byte arrays as
- // hbase is all about byte arrays. Lets pretend the table
- // 'myLittleHBaseTable' was created with a family 'myLittleFamily'.
- p.add(Bytes.toBytes(familyName), Bytes.toBytes(key),
- Bytes.toBytes(value));
-
- // Once you've adorned your Put instance with all the updates you want to
- // make, to commit it do the following (The HTable#put method takes the
- // Put instance you've been building and pushes the changes you made into
- // hbase)
-
- /*try {
- table.put(p);
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- */
- }
-
-// @Override
- public String get(String key) {
-
- // Now, to retrieve the data we just wrote. The values that come back are
- // Result instances. Generally, a Result is an object that will package up
- // the hbase return into the form you find most palatable.
- /**Get g = new Get(Bytes.toBytes(rowName));
- Result r;*/
- byte[] value = null;
-// try {
-// r = table.get(g);
-// value = r.getValue(Bytes.toBytes(familyName),
-// Bytes.toBytes(key));
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-
- // If we convert the value bytes, we should get back 'Some Value', the
- // value we inserted at this location.
- /**String valueStr = Bytes.toString(value);*/
-
- return "valeur";
- //return valueStr;
- }
-
-// @Override
- public Set<String> getKeys() {
-
- Set<String> keySet = new HashSet<String>();
-
- // Sometimes, you won't know the row you're looking for. In this case, you
- // use a Scanner. This will give you cursor-like interface to the contents
- // of the table. To set up a Scanner, do like you did above making a Put
- // and a Get, create a Scan. Adorn it with column names, etc.
- Scan s = new Scan();
- //s.addColumn(Bytes.toBytes(familyName), Bytes.toBytes("test"));
- ResultScanner scanner = null;
- try {
- scanner = table.getScanner(s);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- //e.printStackTrace();
- LOG.error(e.toString(), e);
- }
- try {
- // Scanners return Result instances.
- // Now, for the actual iteration. One way is to use a while loop like so:
- try {
- for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
- // print out the row we found and the columns we were looking for
- //System.out.println("Found row: " + rr);
- LOG.info("Found row: " + rr);
- keySet.add(rr.toString());
- }
-
- } catch (IOException e) {
- // TODO Auto-generated catch block
- //e.printStackTrace();
- LOG.error(e.toString(), e);
- }
-
- // The other approach is to use a foreach loop. Scanners are iterable!
- // for (Result rr : scanner) {
- // System.out.println("Found row: " + rr);
- // }
- } finally {
- // Make sure you close your scanners when you are done!
- // Thats why we have it inside a try/finally clause
- scanner.close();
- }
-
- return keySet;
- }
-
- public void selectTable(String tableName) {
- // This instantiates an HTable object that connects you to
- // the "myLittleHBaseTable" table.
- try {
- table = new HTable(config, tableName);
- } catch (IOException e) {
- //e.printStackTrace();
- LOG.error(e.toString(), e);
- }
- }
-
-// @Override
- public void connect(String host, String base, String username,
- String password) {
- // TODO Auto-generated method stub
- }
-
- public static void main(String[] args) {
- /**HBase h = */new OLDHBase();
- }
-}
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-14 16:20:17 UTC (rev 239)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -10,7 +10,7 @@
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
-import org.nuiton.mapstoragemanager.plugins.Monitoring;
+import org.nuiton.mapstoragemanager.plugins.Plugin;
import org.nuiton.mapstoragemanager.ui.MainUI;
import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
@@ -18,7 +18,7 @@
*
* @author E045231P
*/
-public class ShowDiskSpace extends JFrame implements Monitoring {
+public class ShowDiskSpace extends JFrame implements Plugin {
/**
* Number for division byte -> Mb -> Gb.
@@ -42,7 +42,7 @@
/**
* Display.
*/
- @Override
+// @Override
public void display() {
//creation of content
Deleted: trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Monitoring
===================================================================
--- trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Monitoring 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Monitoring 2010-03-14 17:57:25 UTC (rev 240)
@@ -1 +0,0 @@
-org.nuiton.monitoring.ShowDiskSpace
\ No newline at end of file
Added: trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin
===================================================================
--- trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin (rev 0)
+++ trunk/msm-monitoring-plugins/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin 2010-03-14 17:57:25 UTC (rev 240)
@@ -0,0 +1 @@
+org.nuiton.monitoring.ShowDiskSpace
\ No newline at end of file
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-14 16:20:17 UTC (rev 239)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-14 17:57:25 UTC (rev 240)
@@ -5,22 +5,13 @@
package org.nuiton.mapstoragemanager.plugins.pluginmanager;
-import java.awt.BorderLayout;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.util.Locale;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.init.DefaultI18nInitializer;
-import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
* @author Dorian Langlais
1
0
r239 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager/plugins msm/src/main/java/org/nuiton/mapstoragemanager/ui msm-monitoring-plugins/src/main/java/org/nuiton/monitoring
by fgilet@users.nuiton.org 14 Mar '10
by fgilet@users.nuiton.org 14 Mar '10
14 Mar '10
Author: fgilet
Date: 2010-03-14 17:20:17 +0100 (Sun, 14 Mar 2010)
New Revision: 239
Log:
plugin monitoring refait
Modified:
trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java 2010-03-14 05:42:23 UTC (rev 238)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/Monitoring.java 2010-03-14 16:20:17 UTC (rev 239)
@@ -9,4 +9,5 @@
* display.
*/
void display();
+
}
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-14 05:42:23 UTC (rev 238)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-14 16:20:17 UTC (rev 239)
@@ -51,6 +51,21 @@
}
/**
+* Access to the config.
+* @return instance of the class
+*/
+public JPanel getFreePluginPanel(){
+ if(getPluginSpace1().getComponentCount()==0){
+ return getPluginSpace1();
+ }else if(getPluginSpace2().getComponentCount()==0){
+ return getPluginSpace2();
+ }else if(getPluginSpace3().getComponentCount()==0){
+ return getPluginSpace3();
+ }
+ return null;
+}
+
+/**
* Dispose UI.
*/
public void dispose(){
@@ -159,7 +174,11 @@
<JPanel layout='{new BorderLayout()}'>
<JPanel id='tableName' constraints='BorderLayout.NORTH'/>
<JPanel id='tableContent' constraints='BorderLayout.CENTER'/>
- <JPanel id='tableTips' constraints='BorderLayout.SOUTH'/>
+ <JPanel layout='{new BorderLayout()}' id='tableTips' constraints='BorderLayout.SOUTH'>
+ <JPanel id='pluginSpace1' constraints='BorderLayout.NORTH'/>
+ <JPanel id='pluginSpace2' constraints='BorderLayout.CENTER'/>
+ <JPanel id='pluginSpace3' constraints='BorderLayout.SOUTH'/>
+ </JPanel>
</JPanel>
</JScrollPane>
</JSplitPane>
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-14 05:42:23 UTC (rev 238)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-14 16:20:17 UTC (rev 239)
@@ -1,12 +1,18 @@
package org.nuiton.monitoring;
import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
import javax.swing.JPanel;
import org.nuiton.mapstoragemanager.plugins.Monitoring;
+import org.nuiton.mapstoragemanager.ui.MainUI;
+import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
/**
*
@@ -27,8 +33,6 @@
*/
private static final int FRAME_HEIGHT = 300;
- private JFrame diskSpaceFrame;
-
/**
* Constructor.
*/
@@ -41,13 +45,7 @@
@Override
public void display() {
- diskSpaceFrame = new JFrame();
-
- diskSpaceFrame.setTitle("Plugin ShowDiskSpace");
- diskSpaceFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
- diskSpaceFrame.setLocationRelativeTo(null);
-// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // exit MSM...
-
+ //creation of content
JPanel content = new JPanel();
File f = new File(new File("").getAbsolutePath()).getParentFile();
if (f.exists()) {
@@ -107,14 +105,22 @@
"maxMemory : " + maxMemoryMb + " Mb ("
+ new DecimalFormat("0.00").format(maxMemoryGb) + " Gb)"));
- diskSpaceFrame.setContentPane(content);
- diskSpaceFrame.pack();
- diskSpaceFrame.setVisible(true);
+ //position of plugin
+ JPanel nbFreePluginPanel = MainUI.getInstance().getFreePluginPanel();
+ if (nbFreePluginPanel==null){
+ this.setContentPane(content);
+ this.pack();
+ this.setVisible(true);
+ }else{
+ nbFreePluginPanel.add(content);
+ MainUI.getInstance().repaint();
+ }
}
/**
* {@inheritDoc}
*/
+ @Override
public String getPluginName() {
return this.getClass().getSimpleName();
}
@@ -122,6 +128,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public String getDescription() {
return "Plugin for MapStorageManager to test with an implementation of "
+ "the BigTable Specification using HashMap.";
@@ -132,22 +139,30 @@
*/
@Override
public void load() {
-// final String pluginName = getPluginName();
-// JMenuItem menuItem = new JMenuItem(pluginName);
-// menuItem.addActionListener(new ActionListener() {
-//
-// @Override
-// public void actionPerformed(ActionEvent e) {
-// ApplicationEngine.getInstance().connection(pluginName);
-// }
-// });
-// JMenu menuConnect = MainUI.getInstance().getMenuConnectBis();
-// menuConnect.add(menuItem);
-//
-// if (!menuConnect.isEnabled()) {
-// menuConnect.setEnabled(true);
-// }
- this.display();
+ final String pluginName = getPluginName();
+ final JMenu menuItem = new JMenu(pluginName);
+
+ JMenuItem menuDisplay = new JMenuItem("Display");
+ menuItem.add(menuDisplay);
+ JMenuItem menuDelete = new JMenuItem("Delete");
+ menuItem.add(menuDelete);
+
+ final JMenu menuPlugin = MainUI.getInstance().getMenuPlugin();
+ menuPlugin.add(menuItem);
+
+ menuDisplay.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ display();
+ }
+ });
+
+ menuDelete.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ menuPlugin.remove(menuItem);
+ }
+ });
}
/**
@@ -155,26 +170,5 @@
*/
@Override
public void unload() {
- this.setVisible(false);
- this.diskSpaceFrame = null;
-// final String pluginName = getPluginName();
-//// JMenuItem menuItem = new JMenuItem(pluginName);
-//// menuItem.addActionListener(new ActionListener() {
-////
-//// @Override
-//// public void actionPerformed(ActionEvent e) {
-//// ApplicationEngine.getInstance().connection(pluginName);
-//// }
-//// });
-// JMenu menuConnect = MainUI.getInstance().getMenuConnectBis();
-// for (Component menuItem : menuConnect.getComponents()) {
-// if (menuItem.getName().equals(pluginName)) {
-// menuConnect.remove(menuItem);
-// }
-// }
-//
-// if (!menuConnect.isEnabled()) {
-// menuConnect.setEnabled(true);
-// }
}
}
1
0
r238 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
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 06:42:23 +0100 (Sun, 14 Mar 2010)
New Revision: 238
Log:
Modification mineures.
(getLocale() de la classe Main de MSM devenue static).
Modified:
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java 2010-03-13 22:33:18 UTC (rev 237)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/Main.java 2010-03-14 05:42:23 UTC (rev 238)
@@ -114,7 +114,7 @@
* Getter locale.
* @return locale the current locale.
*/
- public Locale getLocale() {
+ public static Locale getLocale() {
return locale;
}
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 22:33:18 UTC (rev 237)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-14 05:42:23 UTC (rev 238)
@@ -13,9 +13,14 @@
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
+import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
*
* @author Dorian Langlais
@@ -32,12 +37,18 @@
*/
private static Locale locale = Locale.FRANCE;
- /**
- * Main to test the PluginManager alone.
- * @param args args.
- */
- public static void main(String ... args) {
-//ApplicationEngine.getInstance().getPluginLoader().getAllPlugin(null);
+ private Main() {
+
+ I18n.setInitializer(new DefaultI18nInitializer("msm-pluginmanager-i18n"));
+ I18n.init(locale);
+
+ try {
+ SwingUtil.initNimbusLoookAndFeel();
+ } catch (Exception e) {
+ // could not find nimbus look-and-feel
+ LOG.warn("Could not find nimbus look-and-feel");
+ }
+
final PluginManager pluginManager = PluginManager.getInstance();
pluginManager.setVisible(true);
@@ -48,53 +59,14 @@
pluginManager.setVisible(true);
}
});
-
- JButton[] buttons = new JButton[20];
- for(int i = 0 ; i < buttons.length ; i++) {
- final int actualI = i;
-
- buttons[i] = new JButton("test" + i);
- buttons[i].setSize(100, 20);
- buttons[i].addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
-
- JPanel pluginView = pluginManager.getPluginView();
- pluginView.setLayout(new BorderLayout());
-
- pluginView.removeAll();
- JLabel titre;
- pluginView.add(titre = new JLabel("nom plugin " + actualI), BorderLayout.PAGE_START);
-
- JPanel description = new JPanel();
- description.add(new JLabel(" "));
- description.add(new JLabel(" "));
- description.add(new JLabel("description plugin " + actualI));
- description.add(new JLabel("test" + actualI));
- description.add(new JLabel("test" + actualI));
- description.add(new JLabel("test" + actualI));
- pluginView.add(description, BorderLayout.CENTER);
-
-
- JPanel buttons2 = new JPanel();
- buttons2.setLayout(new GridLayout(1,4));
- buttons2.add(new JButton("Activer"));
- buttons2.add(new JButton("DesActiver"));
- buttons2.add(new JButton("Charger"));
- buttons2.add(new JButton("DéCharger"));
-
- pluginView.add(buttons2, BorderLayout.PAGE_END);
- pluginView.updateUI();
- }
- });
-
- pluginManager.getPluginList().add(buttons[i]);
- try {
- Thread.sleep(100);
- pluginManager.getPluginList().updateUI();
- } catch (InterruptedException ex) {
- LOG.error(ex, ex);
- }
- }
}
+
+
+ /**
+ * Main to test the PluginManager alone.
+ * @param args args.
+ */
+ public static void main(String ... args) {
+ new Main();
+ }
}
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-13 22:33:18 UTC (rev 237)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-14 05:42:23 UTC (rev 238)
@@ -68,7 +68,7 @@
JPanel description = new JPanel();
description.add(new JLabel(" "));
- description.add(new JLabel(pluginDescritpion));
+ description.add(new JTextArea(pluginDescritpion));
pluginView.add(description, BorderLayout.CENTER);
1
0
Author: afages
Date: 2010-03-13 23:33:18 +0100 (Sat, 13 Mar 2010)
New Revision: 237
Log:
Modif rapport
Added:
trunk/src/site/doc/rapport/img/plugin.png
Modified:
trunk/src/site/doc/rapport/rapport.rst
Added: trunk/src/site/doc/rapport/img/plugin.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/plugin.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-13 20:41:33 UTC (rev 236)
+++ trunk/src/site/doc/rapport/rapport.rst 2010-03-13 22:33:18 UTC (rev 237)
@@ -227,8 +227,7 @@
------------------------------------
.. figure:: img/package.png
- :width: 100%
- :scale: 90%
+ :scale: 300%
Diagramme de package
@@ -252,3 +251,8 @@
3.2 Plugin
----------
+
+.. figure:: img/plugin.png
+ :scale: 400%
+
+ Diagramme de classe de conception du module plugin
1
0
Author: dlanglais
Date: 2010-03-13 21:41:33 +0100 (Sat, 13 Mar 2010)
New Revision: 236
Log:
Remplissage des fonctions getDescription() sur tous les plugins, et utilisation dans le Plugin Manager.
N?\195?\169anmoins, il reste un d?\195?\169tail ?\195?\160 r?\195?\169gler (la description est affich?\195?\169e sur une seule ligne....).
Modified:
trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java
trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.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-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-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -186,7 +186,8 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin for MapStorageManager to test with an implementation of "
+ + "the BigTable Specification using HashMap.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -186,7 +186,11 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin for MapStorageManager to test with an implementation of "
+ + "the BigTable Specification using HashMap. This new version fixes"
+ + " some point of MSM-BigHashMap. For example, previously it was"
+ + " possible to store objects in tables, it is not useful for MSM "
+ + "... Now, we store only strings.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -225,7 +225,7 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin to export database content to xml files using JDom.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -197,7 +197,7 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin to import database content from xml files using JDom.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -195,7 +195,7 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin to export database content to xml files using XPP3.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -257,7 +257,7 @@
*/
@Override
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin to import database content from xml files using XPP3.";
}
/**
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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-monitoring-plugins/src/main/java/org/nuiton/monitoring/ShowDiskSpace.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -123,7 +123,8 @@
* {@inheritDoc}
*/
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin for MapStorageManager to test with an implementation of "
+ + "the BigTable Specification using HashMap.";
}
/**
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 20:24:39 UTC (rev 235)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 20:41:33 UTC (rev 236)
@@ -16,7 +16,6 @@
import javax.swing.SwingUtilities;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
/**
*
* @author Dorian Langlais
@@ -50,55 +49,52 @@
}
});
-// JButton[] buttons = new JButton[20];
-// for(int i = 0 ; i < buttons.length ; i++) {
-// final int actualI = i;
-//
-// buttons[i] = new JButton("test" + i);
-// buttons[i].setSize(100, 20);
-// buttons[i].addActionListener(new ActionListener() {
-//
-// public void actionPerformed(ActionEvent e) {
-//// JPanel panel = new JPanel();
-//// panel.add(new JLabel("test" + actualI));
-//
-// JPanel pluginView = pluginManager.getPluginView();
-// pluginView.setLayout(new BorderLayout());
-//
-// pluginView.removeAll();
-// JLabel titre;
-// pluginView.add(titre = new JLabel("nom plugin " + actualI), BorderLayout.PAGE_START);
-//
-// JPanel description = new JPanel();
-// description.add(new JLabel(" "));
-// description.add(new JLabel(" "));
-//// pluginView.add(new JSeparator());
-// description.add(new JLabel("description plugin " + actualI));
-// description.add(new JLabel("test" + actualI));
-// description.add(new JLabel("test" + actualI));
-// description.add(new JLabel("test" + actualI));
-// pluginView.add(description, BorderLayout.CENTER);
-//
-//
-// JPanel buttons2 = new JPanel();
-// buttons2.setLayout(new GridLayout(1,4));
-// buttons2.add(new JButton("Activer"));
-// buttons2.add(new JButton("DesActiver"));
-// buttons2.add(new JButton("Charger"));
-// buttons2.add(new JButton("DéCharger"));
-//
-// pluginView.add(buttons2, BorderLayout.PAGE_END);
-// pluginView.updateUI();
-// }
-// });
-//
-// pluginManager.getPluginList().add(buttons[i]);
-// try {
-// Thread.sleep(100);
-// pluginManager.getPluginList().updateUI();
-// } catch (InterruptedException ex) {
-// LOG.error(ex, ex);
-// }
-// }
+ JButton[] buttons = new JButton[20];
+ for(int i = 0 ; i < buttons.length ; i++) {
+ final int actualI = i;
+
+ buttons[i] = new JButton("test" + i);
+ buttons[i].setSize(100, 20);
+ buttons[i].addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+
+ JPanel pluginView = pluginManager.getPluginView();
+ pluginView.setLayout(new BorderLayout());
+
+ pluginView.removeAll();
+ JLabel titre;
+ pluginView.add(titre = new JLabel("nom plugin " + actualI), BorderLayout.PAGE_START);
+
+ JPanel description = new JPanel();
+ description.add(new JLabel(" "));
+ description.add(new JLabel(" "));
+ description.add(new JLabel("description plugin " + actualI));
+ description.add(new JLabel("test" + actualI));
+ description.add(new JLabel("test" + actualI));
+ description.add(new JLabel("test" + actualI));
+ pluginView.add(description, BorderLayout.CENTER);
+
+
+ JPanel buttons2 = new JPanel();
+ buttons2.setLayout(new GridLayout(1,4));
+ buttons2.add(new JButton("Activer"));
+ buttons2.add(new JButton("DesActiver"));
+ buttons2.add(new JButton("Charger"));
+ buttons2.add(new JButton("DéCharger"));
+
+ pluginView.add(buttons2, BorderLayout.PAGE_END);
+ pluginView.updateUI();
+ }
+ });
+
+ pluginManager.getPluginList().add(buttons[i]);
+ try {
+ Thread.sleep(100);
+ pluginManager.getPluginList().updateUI();
+ } catch (InterruptedException 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-13 20:24:39 UTC (rev 235)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-13 20:41:33 UTC (rev 236)
@@ -50,7 +50,7 @@
for(final Plugin plugin : pluginLoader.getAllPlugin(null)) {
final String pluginName = plugin.getPluginName();
- final String pluginDescritpion = "";//plugin.getDescription();
+ final String pluginDescritpion = plugin.getDescription();
JButton pluginButton = new JButton(pluginName);
pluginButton.setSize(100, 20);
@@ -143,7 +143,7 @@
* {@inheritDoc}
*/
public String getDescription() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return "Plugin to manage plugins in the MapStorageManager application.";
}
/**
1
0
r235 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager/core msm/src/main/java/org/nuiton/mapstoragemanager/ui msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager msm-pluginmanager/src/main/resources msm-pluginmanager/src/main/resources/META-INF msm-pluginmanager/src/main/resources/META-INF/services
by dlanglais@users.nuiton.org 13 Mar '10
by dlanglais@users.nuiton.org 13 Mar '10
13 Mar '10
Author: dlanglais
Date: 2010-03-13 21:24:39 +0100 (Sat, 13 Mar 2010)
New Revision: 235
Log:
Modification :
- Le plugin pluginManager est d?\195?\169sormais un vrai Plugin qui peut ?\195?\170tre lanc?\195?\169 via MapStorageManager ;
- A son chargement, il s'ajoute au menu Plugin de l'application.
Ajout du dossier META-INF pour le plugin PluginManager.
Autre modification :
- Suppression du sous menu 'listerlesplugins' de MapStorageManager, cette fonction ?\195?\169tant r?\195?\169alis?\195?\169e par le pr?\195?\169sent plugin.
Added:
trunk/msm-pluginmanager/src/main/resources/META-INF/
trunk/msm-pluginmanager/src/main/resources/META-INF/services/
trunk/msm-pluginmanager/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin
Modified:
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx
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-13 18:44:16 UTC (rev 234)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/core/PluginLoader.java 2010-03-13 20:24:39 UTC (rev 235)
@@ -88,6 +88,8 @@
ServiceLoader.load(Exporter.class, this);
ServiceLoader<Monitoring> monitoringSetLoader =
ServiceLoader.load(Monitoring.class, this);
+ ServiceLoader<Plugin> pluginSetLoader =
+ ServiceLoader.load(Plugin.class, this);
/**
* Add plugin in the plugin's map.
@@ -108,6 +110,10 @@
monitor.load();
plugins.put(monitor.getPluginName(), monitor);
}
+ for (Plugin plugin : pluginSetLoader) {
+ plugin.load();
+ plugins.put(plugin.getPluginName(), plugin);
+ }
}
/**
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-13 18:44:16 UTC (rev 234)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-13 20:24:39 UTC (rev 235)
@@ -134,8 +134,8 @@
<JMenuItem id='menuPluginLoad'
onActionPerformed='engine.loadAPlugin()'/>
<JSeparator/>
- <JMenuItem id='menuPluginShow'
- onActionPerformed='engine.doSomething()'/>
+ <!--JMenuItem id='menuPluginShow'
+ onActionPerformed='engine.doSomething()'/-->
</JMenu>
<JMenu id='menuHelp'>
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 18:44:16 UTC (rev 234)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 20:24:39 UTC (rev 235)
@@ -33,6 +33,10 @@
*/
private static Locale locale = Locale.FRANCE;
+ /**
+ * Main to test the PluginManager alone.
+ * @param args args.
+ */
public static void main(String ... args) {
//ApplicationEngine.getInstance().getPluginLoader().getAllPlugin(null);
final PluginManager pluginManager = PluginManager.getInstance();
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-13 18:44:16 UTC (rev 234)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-13 20:24:39 UTC (rev 235)
@@ -1,4 +1,4 @@
-<Application id='pluginManagerFrame' width='640' height='480'>
+<Application id='pluginManagerFrame' width='640' height='480' implements='Plugin' >
<!-- include java files for treatment -->
<script>
@@ -6,11 +6,16 @@
import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
import org.nuiton.mapstoragemanager.core.PluginLoader;
import org.nuiton.mapstoragemanager.plugins.Plugin;
+import org.nuiton.mapstoragemanager.ui.MainUI;
/**
* classe instance (singleton pattern).
*/
private static PluginManager instance = null;
+/**
+ * MenuItemPlugin.
+ */
+private static JMenuItem menuItemPlugin;
/**
* getInstance method (singleton pattern).
@@ -32,100 +37,155 @@
refreshPluginList();
}
- /**
- * refresh the plugin list.
- * Call application Engine to get plugin loader and get all plugin to refresh
- * the frame.
- */
- public void refreshPluginList() {
- ApplicationEngine engine = ApplicationEngine.getInstance();
- PluginLoader pluginLoader = engine.getPluginLoader();
- getPluginList().removeAll();
+/**
+ * refresh the plugin list.
+ * Call application Engine to get plugin loader and get all plugin to refresh
+ * the frame.
+ */
+public void refreshPluginList() {
+ ApplicationEngine engine = ApplicationEngine.getInstance();
+ PluginLoader pluginLoader = engine.getPluginLoader();
+ getPluginList().removeAll();
- for(final Plugin plugin : pluginLoader.getAllPlugin(null)) {
+ for(final Plugin plugin : pluginLoader.getAllPlugin(null)) {
- final String pluginName = plugin.getPluginName();
- final String pluginDescritpion = "";//plugin.getDescription();
+ final String pluginName = plugin.getPluginName();
+ final String pluginDescritpion = "";//plugin.getDescription();
- JButton pluginButton = new JButton(pluginName);
- pluginButton.setSize(100, 20);
- pluginButton.addActionListener(new ActionListener() {
+ JButton pluginButton = new JButton(pluginName);
+ pluginButton.setSize(100, 20);
+ pluginButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
+ public void actionPerformed(ActionEvent e) {
- JPanel pluginView = getPluginView();
- pluginView.setLayout(new BorderLayout());
+ JPanel pluginView = getPluginView();
+ pluginView.setLayout(new BorderLayout());
- pluginView.removeAll();
- JPanel titre = new JPanel();
- titre.add(new JLabel(pluginName), BorderLayout.CENTER);
- pluginView.add(titre, BorderLayout.PAGE_START);
+ pluginView.removeAll();
+ 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 JLabel(pluginDescritpion));
- pluginView.add(description, BorderLayout.CENTER);
+ JPanel description = new JPanel();
+ description.add(new JLabel(" "));
+ description.add(new JLabel(pluginDescritpion));
+ pluginView.add(description, BorderLayout.CENTER);
- JPanel southButton = new JPanel();
- southButton.setLayout(new GridLayout(1,4));
+ 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"));
+ final JButton buttonActivate = new JButton(_("activate"));
+ final JButton buttonDesactivate = new JButton(_("desactivate"));
+ final JButton buttonLoad = new JButton(_("load"));
+ final JButton buttonUnload = new JButton(_("unload"));
- buttonActivate.addActionListener(new ActionListener() {
+ buttonActivate.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- //TODO;
- buttonActivate.setEnabled(false);
- buttonDesactivate.setEnabled(true);
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(false);
+ buttonDesactivate.setEnabled(true);
+ }
+ });
- buttonDesactivate.addActionListener(new ActionListener() {
+ buttonDesactivate.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- //TODO;
- buttonActivate.setEnabled(true);
- buttonDesactivate.setEnabled(false);
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(true);
+ buttonDesactivate.setEnabled(false);
+ }
+ });
- buttonLoad.addActionListener(new ActionListener() {
+ buttonLoad.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- plugin.load();
- buttonLoad.setEnabled(false);
- buttonUnload.setEnabled(true);
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ plugin.load();
+ buttonLoad.setEnabled(false);
+ buttonUnload.setEnabled(true);
+ }
+ });
- buttonUnload.addActionListener(new ActionListener() {
+ buttonUnload.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- plugin.unload();
- buttonLoad.setEnabled(true);
- buttonUnload.setEnabled(false);
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ plugin.unload();
+ buttonLoad.setEnabled(true);
+ buttonUnload.setEnabled(false);
+ }
+ });
- southButton.add(buttonActivate);
- southButton.add(buttonDesactivate);
- southButton.add(buttonLoad);
- southButton.add(buttonUnload);
+ southButton.add(buttonActivate);
+ southButton.add(buttonDesactivate);
+ southButton.add(buttonLoad);
+ southButton.add(buttonUnload);
- pluginView.add(southButton, BorderLayout.PAGE_END);
- pluginView.updateUI();
- }
- });
+ pluginView.add(southButton, BorderLayout.PAGE_END);
+ pluginView.updateUI();
+ }
+ });
- getPluginList().add(pluginButton);
+ getPluginList().add(pluginButton);
+ }
+ getPluginList().updateUI();
+}
+
+
+/**
+ * {@inheritDoc}
+ */
+public String getPluginName() {
+ return this.getClass().getSimpleName();
+}
+
+/**
+ * {@inheritDoc}
+ */
+public String getDescription() {
+ throw new UnsupportedOperationException("Not supported yet.");
+}
+
+/**
+ * {@inheritDoc}
+ */
+@Override
+public void load() {
+ final String pluginName = getPluginName();
+ JMenu menuPluginMSM = MainUI.getInstance().getMenuPlugin();
+
+ if(menuItemPlugin != null) {
+ menuPluginMSM.remove(menuItemPlugin);
+ }
+
+ jaxx.runtime.JAXXUtil.assignment(menuItemPlugin = new JMenuItem(pluginName), "menuItemPlugin", org.nuiton.mapstoragemanager.plugins.pluginmanager.PluginManager.this);
+ menuItemPlugin.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ PluginManager.getInstance().setVisible(true);
}
- getPluginList().updateUI();
+ });
+ menuPluginMSM.add(menuItemPlugin);
+
+ if (!menuPluginMSM.isEnabled()) {
+ menuPluginMSM.setEnabled(true);
}
+}
+/**
+ * {@inheritDoc}
+ */
+@Override
+public void unload() {
+ JMenu menuPluginMSM = MainUI.getInstance().getMenuPlugin();
+ if(menuItemPlugin != null) {
+ menuPluginMSM.remove(menuItemPlugin);
+ }
+ if (menuPluginMSM.getComponentCount() == 0) {
+ menuPluginMSM.setEnabled(false);
+ }
+}
]]>
</script>
Added: trunk/msm-pluginmanager/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin
===================================================================
--- trunk/msm-pluginmanager/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin (rev 0)
+++ trunk/msm-pluginmanager/src/main/resources/META-INF/services/org.nuiton.mapstoragemanager.plugins.Plugin 2010-03-13 20:24:39 UTC (rev 235)
@@ -0,0 +1 @@
+org.nuiton.mapstoragemanager.plugins.pluginmanager.PluginManager
\ No newline at end of file
1
0
r234 - in trunk: msm-pluginmanager src/site/doc/analyse src/site/doc/rapport src/site/doc/rapport/img src/site/reports
by afages@users.nuiton.org 13 Mar '10
by afages@users.nuiton.org 13 Mar '10
13 Mar '10
Author: afages
Date: 2010-03-13 19:44:16 +0100 (Sat, 13 Mar 2010)
New Revision: 234
Log:
Ajout elements rapport + modif rapport
Added:
trunk/src/site/doc/rapport/img/
trunk/src/site/doc/rapport/img/domain.png
trunk/src/site/doc/rapport/img/package.png
trunk/src/site/doc/rapport/img/planning.png
trunk/src/site/doc/rapport/img/usecase.png
Removed:
trunk/src/site/doc/rapport/rst2pdf-net.py
Modified:
trunk/msm-pluginmanager/
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
trunk/src/site/reports/planningMSM.xls
Property changes on: trunk/msm-pluginmanager
___________________________________________________________________
Added: svn:ignore
+ target
Modified: trunk/src/site/doc/analyse/analyseBT.rst
===================================================================
--- trunk/src/site/doc/analyse/analyseBT.rst 2010-03-13 12:41:29 UTC (rev 233)
+++ trunk/src/site/doc/analyse/analyseBT.rst 2010-03-13 18:44:16 UTC (rev 234)
@@ -1,26 +1,25 @@
-Analyse de BigTable (de google Inc.)
-=====================================
+*Analyse de BigTable (de google Inc.)*
-But de l'analyse
-----------------
+2.2.1 But de l'analyse
+~~~~~~~~~~~~~~~~~~~~~~
Permettre la compréhension de Big Table et de ses diverses implémentations
ainsi que l'extraction d'interface pour le projet MSM.
-Introduction : Qu'est-ce que BigTable ?
----------------------------------------
+2.2.2 Introduction : Qu'est-ce que BigTable ?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BigTable est la spécification d'un système de stockage distribué permettant
de gérer des données. Il est conçu pour s'adapter fiablement à des tailles
de contenu allant jusqu'au "Peta". BigTable est utilisé pour plusieurs raisons :
-- Toucher un large ensemble d'applications
-- Mise à l'échelle
-- Très bonnes performances (temps de réponse...)
-- Forte disponibilité
+* Toucher un large ensemble d'applications
+* Mise à l'échelle
+* Très bonnes performances (temps de réponse...)
+* Forte disponibilité
-Le modèle de données de BigTable
---------------------------------
+2.2.3 Le modèle de données de BigTable
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Le modèle de données de BigTable se comporte comme un dictionnaire
multidimensionnel (matrice) indexé par le triplet
@@ -48,11 +47,11 @@
Une cellule peut contenir plusieurs versions de la même donnée via le mécanisme de timestamp.
Chaque cellule stocke plusieurs timestamp en ordre décroissant si bien que :
-- <com.google.maps/index.html, contents:, ts1> donne la version la plus récente du contenu.
-- <com.google.maps/index.html, contents:, ts2> donne une version plus ancienne du contenu.
+* <com.google.maps/index.html, contents:, ts1> donne la version la plus récente du contenu.
+* <com.google.maps/index.html, contents:, ts2> donne une version plus ancienne du contenu.
-Stockage
---------
+2.2.4 Stockage
+~~~~~~~~~~~~~~
BigTable utilise le système de fichier google GFS (Google File System)
pour stocker les logs et fichiers de données.
@@ -60,33 +59,34 @@
Le format de fichier google SSTable est utilisé pour stocker les données
internes à BigTable.
-API BigTable (client)
----------------------
+2.2.5 API BigTable
+~~~~~~~~~~~~~~~~~~
Voici les fonctionnalités prévues par la spécification BigTable :
-- Création de tables.
-- Création de familles de colonne.
-- Suppression de tables.
-- Suppression de familles de colonne.
-- Changement de cluster (?).
-- Changement de table.
-- Changement de méta données sur une famille de colonne (droits d'accès...).
-- Ecriture des données dans une table.
-- Suppression des données dans une table.
-- Recherche des données dans une table depuis des rangées individuelles.
-- Itération sur un sous-ensemble de données d'une table.
-- Manipulation avancée des données : Transactions "Lecture - Modification - Ecriture"
-sur une rangée simple (BigTable ne supporte pas les transactions par rangées multiples).
-- Utilisation des cellules comme compteurs d'entier.
-- Excécution de scripts clients dans l'espace d'adressage des serveurs (langage : sawzall).
-- Calcul parallèle avec le framework MapReduce.
+* Création de tables.
+* Création de familles de colonne.
+* Suppression de tables.
+* Suppression de familles de colonne.
+* Changement de cluster (?).
+* Changement de table.
+* Changement de méta données sur une famille de colonne (droits d'accès...).
+* Ecriture des données dans une table.
+* Suppression des données dans une table.
+* Recherche des données dans une table depuis des rangées individuelles.
+* Itération sur un sous-ensemble de données d'une table.
+* Manipulation avancée des données : Transactions "Lecture - Modification - Ecriture" sur une rangée simple (BigTable ne supporte pas les transactions par rangées multiples).
-Source
-------
+* Utilisation des cellules comme compteurs d'entier.
+* Excécution de scripts clients dans l'espace d'adressage des serveurs (langage : sawzall).
-Cette analyse est une synthèse des éléments utiles dans le cadre du projet, issue de la
-spécification même de Google Inc.
+* Calcul parallèle avec le framework MapReduce.
+
+2.2.6 Source
+~~~~~~~~~~~~
+
+Cette analyse est une synthèse des éléments utiles dans le cadre du
+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
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-13 12:41:29 UTC (rev 233)
+++ trunk/src/site/doc/analyse/usecase.rst 2010-03-13 18:44:16 UTC (rev 234)
@@ -1,52 +1,73 @@
-Description des cas d'utilisation (Cockburn)
-============================================
+2.4 Describe Database
+---------------------
-Describe Database
------------------
+**Use case :** 11.Describe Database.
-- Use case : 11.Describe Database
-- Goal in context : décrire la structure d'une base de données
-BigTable (Hbase, HashMap...) en affichant les différentes tables graphiquement selon le plugin de la base.
-- Scope : MSM -GUI/IHM
-- Level : sous-fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite décrire la base en cours
-- Frequency : très souvent (toute utilisation d'une base passe par sa description normalement) - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire.
- On connait la base.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement de la structure de la
- base.
-- Main success scenario :
+**Goal in context :** décrire la structure d'une base de données
+BigTable (Hbase, HashMap...) en affichant les différentes tables graphiquement
+selon le plugin de la base.
+
+**Scope :** MSM -GUI/IHM.
+
+**Level :** sous-fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :** l'utilisateur souhaite décrire la base en cours.
+
+**Frequency :** très souvent (toute utilisation d'une base passe par sa
+description normalement) ~= 100/jour.
+
+**Pre-conditions :**
+ - PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire.
+On connait la base.
+
+**Post-conditions :**
+ - POST1 : l'utilisateur dispose graphiquement de la structure de la
+ base.
+
+**Main success scenario :**
+
1) L'utilisateur se connecte à la base de données
2) MSM renvoie la base de données à l'utilisateur
3) L'utilisateur souhaite décrire sa base
4) MSM renvoie la structure de la base (tables)
5) L'utilisateur traite la structure de la base
-- Extensions :
-- Performance : selon la fréquence d'exécution, doit être très rapide.
+
+**Extensions :**
+
+**Performance :** selon la fréquence d'exécution, doit être très rapide.
L'utilisateur doit obtenir la structure de la base immédiatement.
-Describe Table
---------------
+2.5 Describe Table
+------------------
-- Use case : 12.Describe Table
-- Goal in context : décrire la structure d'une table d'une base
-BigTable (Hbase, HashMap...) en affichant les différents éléments (colonnes, types...)
-graphiquement selon le plugin de la base.
-- Scope : MSM -GUI/IHM
-- Level : sous-fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite décrire une table de la base
-- Frequency : très souvent (toute utilisation d'une table passe par sa description normalement) - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire.
- On dispose d'un accès à la table.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement de la structure de la
- table.
-- Main success scenario :
+**Use case :** 12.Describe Table
+
+**Goal in context :** décrire la structure d'une table d'une base
+BigTable (Hbase, HashMap...) en affichant les différents éléments
+(colonnes, types...) graphiquement selon le plugin de la base.
+
+**Scope :** MSM -GUI/IHM
+
+**Level :** sous-fonctionnalité
+
+**Primary actor :** utilisateur de MSM
+
+**Trigger :** l'utilisateur souhaite décrire une table de la base
+
+**Frequency :** très souvent (toute utilisation d'une table passe par sa
+description normalement) ~= 100/jour
+
+**Pre-conditions :**
+ - PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire. On
+ dispose d'un accès à la table.
+
+**Post-conditions :**
+ - POST1 : l'utilisateur dispose graphiquement de la structure de la table.
+
+**Main success scenario :**
+
1) L'utilisateur se connecte à la base de données
2) MSM renvoie la base de données à l'utilisateur
3) L'utilisateur décrit la base
@@ -54,29 +75,42 @@
5) L'utilisateur sélectionne une table
6) MSM renvoie la structure de la table
7) L'utilisateur traite la structure de la table
-- Extensions :
- 5.a : l'utilisateur effectue une recherche sur la table
-- Performance : selon la fréquence d'exécution, doit être très rapide.
+
+**Extensions :**
+
+ 5.a l'utilisateur effectue une recherche sur la table
+
+**Performance :** selon la fréquence d'exécution, doit être très rapide.
L'utilisateur doit obtenir la structure de la table immédiatement.
-View content
-------------
+2.6 View content
+----------------
-- Use case : 2.View content
-- Goal in context : obtenir les données d'une table (son contenu) d'une base
+**Use case :** 2.View content.
+
+**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
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite voir les données contenues dans une table.
-- Frequency : très souvent - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base dont il veut les
- données. On dispose d'un accès à la table.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement des données contenues
- dans la table.
-- Main success scenario :
+
+**Scope :** MSM - GUI/IHM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :** L'utilisateur souhaite voir les données contenues dans une table.
+
+**Frequency :** très souvent ~= 100/jour.
+
+**Pre-conditions :**
+ - PRE1 : l'utilisateur doit être connecté à la base dont il veut les
+ données. On dispose d'un accès à la table.
+
+**Post-conditions :**
+ - POST1 : l'utilisateur dispose graphiquement des données contenues dans
+ la table.
+
+**Main success scenario :**
+
1) L'utilisateur se connecte à la base de données
2) MSM renvoie la base de données à l'utilisateur
3) L'utilisateur décrit la base
@@ -84,26 +118,39 @@
5) L'utilisateur sélectionne une table et demande à voir son contenu
6) MSM renvoie les données de la table
7) L'utilisateur traite les données
-- Extensions :
- 5.a : l'utilisateur effectue une recherche sur la table
-- Performance : selon la fréquence d'exécution, doit être très rapide.
+
+**Extensions :**
+ 5.a l'utilisateur effectue une recherche sur la table
+
+**Performance :** selon la fréquence d'exécution, doit être très rapide.
L'utilisateur doit obtenir les données immédiatement.
-Monitor
--------
+2.7 Monitor
+-----------
-- Use case : 3.Monitor
-- Goal in context : surveiller la base de sorte à vérifier l'activité des noeuds (charge, espace disque...)
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger :
-- Frequency : peu souvent - 10/jour
-- Pre-conditions :
- PRE1 :
-- Post-conditions :
- POST1 :
-- Main success scenario :
+**Use case :** 3.Monitor.
+
+**Goal in context :** surveiller la base de sorte à vérifier l'activité des
+noeuds (charge, espace disque...).
+
+**Scope :** MSM - GUI/IHM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :**
+
+**Frequency :** peu souvent ~= 10/jour.
+
+**Pre-conditions :**
+ - PRE1 :
+
+**Post-conditions :**
+ - POST1 :
+
+**Main success scenario :**
+
1)
2)
3)
@@ -111,133 +158,173 @@
5)
6)
7)
-- Extensions :
-
-- Performance : la qualité du monitoring est tout aussi importante que
+
+**Extensions :**
+
+**Performance :** la qualité du monitoring est tout aussi importante que
la temps-réel (actualité des données) de la tâche.
-Import
-------
-(XPP3, DOM4J)
+2.8 Import
+----------
-- Use case : 4.Import
-- Goal in context : importer des données dans une base de données
+**Use case :** 4.Import.
+
+**Goal in context :** importer des données dans une base de données
(tables, données).
-- Scope : MSM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire importer ses données dans une base
-- Frequency : peu souvent - 2/jour
-- Pre-conditions :
- PRE1 : la base de données doit exister et être connue
- PRE2 : le fichier d'importation doit exister
- PRE3 : l'utilisateur doit être connecté à la base
-- Post-conditions :
- POST1 : les données sont insérées dans la base
- POST2 : les données sont manipulables
-- Main success scenario :
+
+**Scope :** MSM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :** l'utilisateur désire importer ses données dans une base.
+
+**Frequency :** peu souvent ~= 2/jour.
+
+**Pre-conditions :**
+ - PRE1 : la base de données doit exister et être connue.
+ - PRE2 : le fichier d'importation doit exister.
+ - PRE3 : l'utilisateur doit être connecté à la base.
+
+**Post-conditions :**
+ - POST1 : les données sont insérées dans la base.
+ - POST2 : les données sont manipulables.
+
+**Main success scenario :**
+
1) L'utilisateur se connecte à la base de données
2) L'utilisateur désire importer des données dans la base
- 3) MSM demande à l'utilisateur de sélectionner un fichier
- d'imporation
+ 3) MSM demande à l'utilisateur de sélectionner un fichier d'imporation
4) L'utilisateur sélectionne un fichier d'importation
5) MSM importe les données contenues dans le fichier
6) MSM renvoie le résultat de l'importation à l'utilisateur
7) L'utilisateur traite les données de la base
-- Extensions :
-- Performance : la rapidité d'exécution est primordiale (le volume de données étant assez élevé).
-On priviligie la qualité avec une fiabilité haute.
-- Open issues : Que faire si erreur lors du traitement du fichier ?
+
+**Extensions :**
+
+**Performance :** la rapidité d'exécution est primordiale (le volume de
+données étant assez élevé). On priviligie la qualité avec une fiabilité haute.
+
+**Open issues :** Que faire si erreur lors du traitement du fichier ?
=> Reporter l'erreur à l'utilisateur.
-Importer des données dans une base via des fichiers XML.
--> Nécéssite la création d'un XSD ou DTD.
+2.9 Export
+----------
-Export
-------
+**Use case :** 5.Export.
-- Use case : 5.Export
-- Goal in context : exporter des données dans un fichier depuis une base
+**Goal in context :** exporter des données dans un fichier depuis une base
(tables, données).
-- Scope : MSM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire exporter les données de la base en cours
-- Frequency : peu souvent - 2/jour
-- Pre-conditions :
- PRE1 : la base de données doit exister et être connue
- PRE2 : l'utilisateur doit être connecté à la base
-- Post-conditions :
- POST1 : un fichier contenant les données est créé
- POST2 : le fichier peut servir pour une réimportation
-- Main success scenario :
+
+**Scope :** MSM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :** l'utilisateur désire exporter les données de la base en cours.
+
+**Frequency :** peu souvent ~= 2/jour.
+
+**Pre-conditions :**
+ - PRE1 : la base de données doit exister et être connue.
+ - PRE2 : l'utilisateur doit être connecté à la base.
+
+**Post-conditions :**
+ - POST1 : un fichier contenant les données est créé.
+ - POST2 : le fichier peut servir pour une réimportation.
+
+**Main success scenario :**
+
1) L'utilisateur se connecte à la base de données
2) L'utilisateur désire exporter les données de la base
3) MSM demande un nom de fichier
4) L'utilisateur entre un nom désiré pour le fichier
5) MSM crée le fichier
6) MSM réalise l'exportation dans le fichier
-- Extensions :
-- Performance : la rapidité d'exécution est primordiale (le volume de données étant assez élevé).
-On priviligie la qualité avec une fiabilité haute.
-- Open issues : Que faire si erreur lors de transmission des données dans
+
+**Extensions :**
+
+**Performance :** la rapidité d'exécution est primordiale (le volume de
+données étant assez élevé). On priviligie la qualité avec une fiabilité haute.
+
+**Open issues :** que faire si erreur lors de transmission des données dans
le fichier ?
-Exporter des données d'une base dans des fichiers XML.
--> Nécéssite la création d'un XSD ou DTD.
+2.10 Connect
+------------
+**Use case :** 6.Connect.
-Connect
--------
+**Goal in context :** se connecter à une base de données BigTable
+préalablement choisie pour la rendre active dans MSM.
-- Use case : 6.Connect
-- Goal in context : se connecter à une base de données BigTable
-préalablement choisie
-pour la rendre active dans MSM.
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire se connecter à une base
-- Frequency : très souvent - 100/jour
-- Pre-conditions :
- PRE1 : la base distante doit exister
-- Post-conditions :
- POST1 : l'utilisateur est connecté
- POST2 : l'utilisateur peut manipuler la base
-- Main success scenario :
+**Scope :** MSM - GUI/IHM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** utilisateur de MSM.
+
+**Trigger :** l'utilisateur désire se connecter à une base.
+
+**Frequency :** très souvent ~= 100/jour.
+
+**Pre-conditions :**
+ - PRE1 : la base distante doit exister.
+
+**Post-conditions :**
+ - POST1 : l'utilisateur est connecté.
+ - POST2 : l'utilisateur peut manipuler la base.
+
+**Main success scenario :**
+
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
-- Extensions :
- 2.a : l'utilisateur recherche le nom d'une base
-- Performance : la rapidité d'exécution est primordiale étant donné la fréquence d'exécution.
-Gestion des erreurs importante.
-Extend
-------
+**Extensions :**
-- Use case : 7.Extend
-- Goal in context : Etendre MSM en développant un plugin correspondant à
-une nouvelle base de données BigTable (graphique et fonctionnalités)
-pour la rendre active dans MSM.
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : développeur
-- Trigger : le développeur veut ajouter une nouvelle base dans MSM
-- Frequency : peu souvent 1/semaine
-- Pre-conditions :
- PRE1 : le développeur dispose des API MSM
-- Post-conditions :
- POST1 : la base de données développée est utilisable dans MSM
-- 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
- 4) Le développeur crée un JAR du plugin
-- Extensions :
-- Performance :
+ 2.a l'utilisateur recherche le nom d'une base
+
+**Performance :** la rapidité d'exécution est primordiale étant donné la
+fréquence d'exécution. Gestion des erreurs importante.
+
+2.11 Extend
+-----------
+
+**Use case :** 7.Extend.
+** Goal in context :** Etendre MSM en développant un plugin correspondant à
+une nouvelle base de données BigTable (graphique et fonctionnalités) pour la
+rendre active dans MSM.
+
+**Scope :** MSM - GUI/IHM.
+
+**Level :** fonctionnalité.
+
+**Primary actor :** développeur.
+
+**Trigger :** le développeur veut ajouter une nouvelle base dans MSM.
+
+**Frequency :** peu souvent ~= 1/semaine.
+
+**Pre-conditions :**
+ - PRE1 : le développeur dispose des API MSM
+
+**Post-conditions :**
+ - POST1 : la base de données développée est utilisable dans MSM
+
+**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
+ 4) Le développeur crée un JAR du plugin
+
+**Extensions :**
+**Performance :**
Added: trunk/src/site/doc/rapport/img/domain.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/domain.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/src/site/doc/rapport/img/package.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/package.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/src/site/doc/rapport/img/planning.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/planning.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/src/site/doc/rapport/img/usecase.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/doc/rapport/img/usecase.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-13 12:41:29 UTC (rev 233)
+++ trunk/src/site/doc/rapport/rapport.rst 2010-03-13 18:44:16 UTC (rev 234)
@@ -3,40 +3,47 @@
======================================================
:Authors:
- Gilles CRIELOUE.,
- Dorian LANGLAIS.,
- Florent GILET.,
- Amaury FAGES.,
+ Gilles CRIELOUE,
+ Dorian LANGLAIS,
+ Florent GILET,
+ Amaury FAGES,
:Version: 1.0 of 9/03/10
:Dedication: To Code Lutin & Université de Nantes
-------------------------------------------------------
+1. Spécifications : préliminaires
+=================================
-Spécifications : préliminaires
-==============================
+1.1 Le demandeur
+----------------
-Demandeur
----------
-
Code Lutin, Société de Service en Logiciel Libre
-Créée en 2002, spécialiste des environnements libres, la SSLL1) Code Lutin, basée à Nantes développe son activité dans la région du Grand Ouest.
+Créée en 2002, spécialiste des environnements libres, la SSLL1) Code Lutin,
+basée à Nantes développe son activité dans la région du Grand Ouest.
-Code Lutin est spécialisée autour des technologies Java JEE et UML: conception, architectures JEE, outils JEE, MDA (Model Driven Architecture), développement/migration d’applications JEE, formation.
+Code Lutin est spécialisée autour des technologies Java JEE et UML: conception,
+architectures JEE, outils JEE, MDA (Model Driven Architecture), développement/
+migration d’applications JEE, formation.
Code Lutin propose une gamme de services adaptée aux demandes spécifiques.
L’offre de service de Code Lutin comprend:
- * du développement de logiciel (forfait ou régie)
- * de l’intégration et de la maintenance de systèmes clés en main
- * du support
- * du conseil et de la veille technologique
+* du développement de logiciel (forfait ou régie)
+* de l’intégration et de la maintenance de systèmes clés en main
+* du support
+* du conseil et de la veille technologique
-Code Lutin a construit au fil de l’expérience acquise un processus propre hautement outillé avec des objectifs tels que l’obtention d’un produit fidèle au besoin exprimé par le client, l’amélioration constante de la qualité du logiciel, l’assurance de conformité et de non régression grâce aux tests unitaires, le respect des délais.
+Code Lutin a construit au fil de l’expérience acquise un processus propre
+hautement outillé avec des objectifs tels que l’obtention d’un produit fidèle
+au besoin exprimé par le client, l’amélioration constante de la qualité du
+logiciel, l’assurance de conformité et de non régression grâce aux tests
+unitaires, le respect des délais.
-Libre Entreprise
+Entreprise membre de :
+1. Libre Entreprise
+
Ce réseau regroupe des entreprises ayant des spécialités proches ou
complémentaires, en particulier dans le domaine du logiciel libre. Toutes
partagent les mêmes valeurs et modes de fonctionnement, basés sur la
@@ -44,7 +51,7 @@
(Biarritz, Lille, Montpellier, Nantes, Paris, Tours, Liévin, Ganges,
Bourges, Toulouse, Grenoble et Laval)
-Alliance Libre
+2. Alliance Libre
Alliance Libre est le pôle d’expertise en logiciels libres
de la région nantaise. L’association a été créée au début de l’année
@@ -53,7 +60,7 @@
professionnel. Nous nous sommes regroupés pour promouvoir nos savoir-
faire, améliorer notre visibilité et accroître notre notoriété.
-April
+3. April
Code Lutin est membre de l’April qui a pour vocation de promouvoir et
défendre le logiciel libre depuis 1996. Forte de ses 4567 adhérents
@@ -62,8 +69,8 @@
auprès d’un large public de professionnels, particuliers et institutions
en France.
-La demande
-----------
+1.2 La demande
+--------------
Voyons voir ce qui se cache derrière le nom de code MSM
(Map Storage Manager) :
@@ -84,41 +91,49 @@
souhaiter utiliser une nouvelle base. Il s'agit donc d'une architecture
à plugins sous-jacente.
-Objectifs
----------
+1.3 Objectifs
+-------------
-- Accroître la productivié des utilisateurs de HBase et autres
-- Permettre une adaptation rapide aux nouvelles bases
-- Fournir un produit fonctionnel, ergonomique et performant
+* Accroître la productivié des utilisateurs de HBase et autres
+* Permettre une adaptation rapide aux nouvelles bases
+* Fournir un produit fonctionnel, ergonomique et performant
-Outils
-----------------------
+1.4 Outils
+----------
-- Technologies : Java, Maven, JAXX, JMX
-- SVN : Dépôt de Code Lutin prévu à cet effet.
+* Technologies : Java, Maven, JAXX, JMX.
+
+* SVN : Dépôt de Code Lutin prévu à cet effet
+
- Architecture Maven comportant un pom.xml natif à Code Lutin
permettant l'utilisation d'artifact JAXX notamment.
-- Intégration continue : Hudson
- - Site répertoriant un ensemble de statistiques sur chaque projet
- et effectuant compilation et jeux de tests à chaque validation sur
+
+* Intégration continue : Hudson
+
+ - Site répertoriant un ensemble de statistiques sur chaque projet et
+ effectuant compilation et jeux de tests à chaque validation sur
le dépôt de manière automatique.
-- Communication : Maillist de Nuiton pour le développement, l'utilisation
-et le commit.
-Chiffrage et organisation
--------------------------
+* Communication : Maillist de Nuiton pour le développement, l'utilisation et le commit.
-Planning prévisionnel
+1.5 Chiffrage et organisation
+-----------------------------
-[Image du planning]
+.. figure:: img/planning.png
+ :width: 100%
+ :scale: 120%
+ Planning prévisionnel
+
+
+
Planning de réunions jalons prévues avec M. Benjamin Poussin :
-- 26/01/2010
-- 1/02/2010
-- 9/02/2010
-- 18/02/2010
-- 04/03/2010
+* 26/01/2010
+* 1/02/2010
+* 9/02/2010
+* 18/02/2010
+* 04/03/2010
Permettant à chaque fois de faire le point sur le travail réalisé et le
travail à faire.
@@ -126,16 +141,16 @@
Un compte rendu symbolisé par les rectangles noirs en fin de semaine
suit chaque réunion.
-Spécifications : analyse
-========================
+2. Spécifications : analyse
+===========================
-analyse des technologies
-------------------------
+2.1 analyse des technologies
+----------------------------
-Maven
-~~~~~
+2.1.1 Maven
+~~~~~~~~~~~
-Maven est connu de bon nombre de développeurs. Il s'agit d'un outil de
+Maven est connu d'un bon nombre de développeurs. Il s'agit d'un outil de
développement permettant de faciliter la compilation, la documentation,
les tests et surtout les dépendances récupérées automatiquement sur
l'Internet.
@@ -143,8 +158,8 @@
Code Lutin dispose de leur propre pom.xml permettant d'aller récupérer
les dépendances qui vont suivre.
-Jaxx
-~~~~
+2.1.2 Jaxx
+~~~~~~~~~~
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
@@ -163,348 +178,77 @@
Plus de précisions à cet endroit :
http://maven-site.nuiton.org/jaxx/index.html
-Jmx
-~~~
+2.1.3 Jmx
+~~~~~~~~~
-analyse du domaine
-------------------
+Jmx est une API Java permettant à la base de gérer la dynamique d'une
+application en cours d'exécution. Elle permet notamment de faire du paramétrage
+(modification dynamique), modifier les fichiers de configurations, générer
+des statistiques, notifier ...
-Analyse de BigTable (de google Inc.)
+Dans notre cadre, nous nous en servirons pour réaliser un monitoring de
+l'application.
-But de l'analyse
-~~~~~~~~~~~~~~~~
+Plus de détails sur le Wiki :
+http://fr.wikipedia.org/wiki/JMX
-Permettre la compréhension de Big Table et de ses diverses implémentations
-ainsi que l'extraction d'interface pour le projet MSM.
+2.2 analyse du domaine
+----------------------
-Introduction : Qu'est-ce que BigTable ?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. include:: ../analyse/analyseBT.rst
-BigTable est la spécification d'un système de stockage distribué permettant
-de gérer des données. Il est conçu pour s'adapter fiablement à des tailles
-de contenu allant jusqu'au "Peta". BigTable est utilisé pour plusieurs raisons :
+2.3 Description des cas d'utilisation
+-------------------------------------
-- Toucher un large ensemble d'applications
-- Mise à l'échelle
-- Très bonnes performances (temps de réponse...)
-- Forte disponibilité
+.. figure:: img/usecase.png
+ :width: 100%
+ :scale: 125%
-Le modèle de données de BigTable
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Cas d'utilisation
-Le modèle de données de BigTable se comporte comme un dictionnaire
-multidimensionnel (matrice) indexé par le triplet
-<row key, column key, timestamp>. Chaque valeur de ce dictionnaire
-est un table d'octets.
+.. include:: ../analyse/usecase.rst
-Les clés pour une rangée du dictionnaire sont des chaînes de charactères
-arbitraires et BigTable maintient les données dans un ordre lexicographique
-grâce à ce type de clé.
-ex de clé de rangée : "com.google.maps/index.html" (reversed URL)
+2.12 Modèle du domaine
+----------------------
-La portée d'une rangée est appelée "tablet", unité de distribution et d'équilibrage
-de charge.
+.. figure:: img/domain.png
+ :width: 100%
+ :scale: 90%
-Les clés de colonne sont groupées en ensembles appelés "famille de colonnes".
-Une clé de colonne est nommé suivant le schéma : family:qualifier.
-Les noms de famille doivent être lisibles facilement mais les qualificateurs peuvent
-être des chaînes de charactères arbitraires
+ Diagramme de classes du domaine
-ex de famille de colonne : "contents:"
+De manière très simple, l'application MSM utilise un ensemble de bases
+de données BigTable qui peuvent être de type HashMap, HBase ou Cassandra ou
+d'autres. L'application doit permettre de réaliser l'ensemble des
+fonctionnalités prévues sur cet ensemble de bases de données BigTable.
-Ainsi, le contenu d'une cellule indexée par <com.google.maps/index.html, contents:, ?>
-serait le contenu de la page "index.html" (le code html).
-Une cellule peut contenir plusieurs versions de la même donnée via le mécanisme de timestamp.
-Chaque cellule stocke plusieurs timestamp en ordre décroissant si bien que :
+2.13 Architecture globale (Packages)
+------------------------------------
-- <com.google.maps/index.html, contents:, ts1> donne la version la plus récente du contenu.
-- <com.google.maps/index.html, contents:, ts2> donne une version plus ancienne du contenu.
+.. figure:: img/package.png
+ :width: 100%
+ :scale: 90%
-Stockage
-~~~~~~~~
+ Diagramme de package
-BigTable utilise le système de fichier google GFS (Google File System)
-pour stocker les logs et fichiers de données.
+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
+donc être découpée en modules (packages).
-Le format de fichier google SSTable est utilisé pour stocker les données
-internes à BigTable.
+Trois modules principaux composent l'application. On trouve le module
+*Plugin* correspondant à chaque base et dépendant du module
+gérant l'interface graphique, *Gui*, ainsi que du module *Msm* qui n'est autre
+que le coeur de l'application, véritable architecture à plugins.
-API BigTable (client)
-~~~~~~~~~~~~~~~~~~~~~
+3. Conception
+=============
-Voici les fonctionnalités prévues par la spécification BigTable :
-
-- Création de tables.
-- Création de familles de colonne.
-- Suppression de tables.
-- Suppression de familles de colonne.
-- Changement de cluster (?).
-- Changement de table.
-- Changement de méta données sur une famille de colonne (droits d'accès...).
-- Ecriture des données dans une table.
-- Suppression des données dans une table.
-- Recherche des données dans une table depuis des rangées individuelles.
-- Itération sur un sous-ensemble de données d'une table.
-- Manipulation avancée des données : Transactions "Lecture - Modification - Ecriture"
-sur une rangée simple (BigTable ne supporte pas les transactions par rangées multiples).
-- Utilisation des cellules comme compteurs d'entier.
-- Excécution de scripts clients dans l'espace d'adressage des serveurs (langage : sawzall).
-- Calcul parallèle avec le framework MapReduce.
-
-Source
-~~~~~~
-
-Cette analyse est une synthèse des éléments utiles dans le cadre du
-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
-
-Description des cas d'utilisation
----------------------------------
-
-Describe Database
------------------
-
-- Use case : 11.Describe Database
-- Goal in context : décrire la structure d'une base de données
-BigTable (Hbase, HashMap...) en affichant les différentes tables graphiquement selon le plugin de la base.
-- Scope : MSM -GUI/IHM
-- Level : sous-fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite décrire la base en cours
-- Frequency : très souvent (toute utilisation d'une base passe par sa description normalement) - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire.
- On connait la base.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement de la structure de la
- base.
-- Main success scenario :
- 1) L'utilisateur se connecte à la base de données
- 2) MSM renvoie la base de données à l'utilisateur
- 3) L'utilisateur souhaite décrire sa base
- 4) MSM renvoie la structure de la base (tables)
- 5) L'utilisateur traite la structure de la base
-- Extensions :
-- Performance : selon la fréquence d'exécution, doit être très rapide.
-L'utilisateur doit obtenir la structure de la base immédiatement.
-
-Describe Table
+3.1 Msm (Core)
--------------
-- Use case : 12.Describe Table
-- Goal in context : décrire la structure d'une table d'une base
-BigTable (Hbase, HashMap...) en affichant les différents éléments (colonnes, types...)
-graphiquement selon le plugin de la base.
-- Scope : MSM -GUI/IHM
-- Level : sous-fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite décrire une table de la base
-- Frequency : très souvent (toute utilisation d'une table passe par sa description normalement) - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base qu'il veut décrire.
- On dispose d'un accès à la table.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement de la structure de la
- table.
-- Main success scenario :
- 1) L'utilisateur se connecte à la base de données
- 2) MSM renvoie la base de données à l'utilisateur
- 3) L'utilisateur décrit la base
- 4) MSM renvoie la structure de la base (tables)
- 5) L'utilisateur sélectionne une table
- 6) MSM renvoie la structure de la table
- 7) L'utilisateur traite la structure de la table
-- Extensions :
- 5.a : l'utilisateur effectue une recherche sur la table
-- Performance : selon la fréquence d'exécution, doit être très rapide.
-L'utilisateur doit obtenir la structure de la table immédiatement.
-
-View content
-------------
-
-- Use case : 2.View content
-- 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
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : L'utilisateur souhaite voir les données contenues dans une table.
-- Frequency : très souvent - 100/jour
-- Pre-conditions :
- PRE1 : l'utilisateur doit être connecté à la base dont il veut les
- données. On dispose d'un accès à la table.
-- Post-conditions :
- POST1 : l'utilisateur dispose graphiquement des données contenues
- dans la table.
-- Main success scenario :
- 1) L'utilisateur se connecte à la base de données
- 2) MSM renvoie la base de données à l'utilisateur
- 3) L'utilisateur décrit la base
- 4) MSM renvoie la structure de la base (tables)
- 5) L'utilisateur sélectionne une table et demande à voir son contenu
- 6) MSM renvoie les données de la table
- 7) L'utilisateur traite les données
-- Extensions :
- 5.a : l'utilisateur effectue une recherche sur la table
-- Performance : selon la fréquence d'exécution, doit être très rapide.
-L'utilisateur doit obtenir les données immédiatement.
-
-Monitor
+3.2 GUI
-------
-- Use case : 3.Monitor
-- Goal in context : surveiller la base de sorte à vérifier l'activité des noeuds (charge, espace disque...)
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger :
-- Frequency : peu souvent - 10/jour
-- Pre-conditions :
- PRE1 :
-- Post-conditions :
- POST1 :
-- Main success scenario :
- 1)
- 2)
- 3)
- 4)
- 5)
- 6)
- 7)
-- Extensions :
-
-- Performance : la qualité du monitoring est tout aussi importante que
-la temps-réel (actualité des données) de la tâche.
-
-Import
-------
-
-- Use case : 4.Import
-- Goal in context : importer des données dans une base de données
-(tables, données).
-- Scope : MSM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire importer ses données dans une base
-- Frequency : peu souvent - 2/jour
-- Pre-conditions :
- PRE1 : la base de données doit exister et être connue
- PRE2 : le fichier d'importation doit exister
- PRE3 : l'utilisateur doit être connecté à la base
-- Post-conditions :
- POST1 : les données sont insérées dans la base
- POST2 : les données sont manipulables
-- Main success scenario :
- 1) L'utilisateur se connecte à la base de données
- 2) L'utilisateur désire importer des données dans la base
- 3) MSM demande à l'utilisateur de sélectionner un fichier
- d'imporation
- 4) L'utilisateur sélectionne un fichier d'importation
- 5) MSM importe les données contenues dans le fichier
- 6) MSM renvoie le résultat de l'importation à l'utilisateur
- 7) L'utilisateur traite les données de la base
-- Extensions :
-- Performance : la rapidité d'exécution est primordiale (le volume de données étant assez élevé).
-On priviligie la qualité avec une fiabilité haute.
-- Open issues : Que faire si erreur lors du traitement du fichier ?
-=> Reporter l'erreur à l'utilisateur.
-
-
-Export
-------
-
-- Use case : 5.Export
-- Goal in context : exporter des données dans un fichier depuis une base
-(tables, données).
-- Scope : MSM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire exporter les données de la base en cours
-- Frequency : peu souvent - 2/jour
-- Pre-conditions :
- PRE1 : la base de données doit exister et être connue
- PRE2 : l'utilisateur doit être connecté à la base
-- Post-conditions :
- POST1 : un fichier contenant les données est créé
- POST2 : le fichier peut servir pour une réimportation
-- Main success scenario :
- 1) L'utilisateur se connecte à la base de données
- 2) L'utilisateur désire exporter les données de la base
- 3) MSM demande un nom de fichier
- 4) L'utilisateur entre un nom désiré pour le fichier
- 5) MSM crée le fichier
- 6) MSM réalise l'exportation dans le fichier
-- Extensions :
-- Performance : la rapidité d'exécution est primordiale (le volume de données étant assez élevé).
-On priviligie la qualité avec une fiabilité haute.
-- Open issues : Que faire si erreur lors de transmission des données dans
-le fichier ?
-
-Connect
--------
-
-- Use case : 6.Connect
-- Goal in context : se connecter à une base de données BigTable
-préalablement choisie
-pour la rendre active dans MSM.
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : utilisateur de MSM
-- Trigger : l'utilisateur désire se connecter à une base
-- Frequency : très souvent - 100/jour
-- Pre-conditions :
- PRE1 : la base distante doit exister
-- Post-conditions :
- POST1 : l'utilisateur est connecté
- POST2 : l'utilisateur peut manipuler la base
-- Main success scenario :
- 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...)
- 4) L'utilisateur entre ces informations et se connecte
- 5) MSM renvoie le résultat de la connexion
- 6) L'utilisateur traite la base
-- Extensions :
- 2.a : l'utilisateur recherche le nom d'une base
-- Performance : la rapidité d'exécution est primordiale étant donné la fréquence d'exécution.
-Gestion des erreurs importante.
-
-Extend
-------
-
-- Use case : 7.Extend
-- Goal in context : Etendre MSM en développant un plugin correspondant à
-une nouvelle base de données BigTable (graphique et fonctionnalités)
-pour la rendre active dans MSM.
-- Scope : MSM - GUI/IHM
-- Level : fonctionnalité
-- Primary actor : développeur
-- Trigger : le développeur veut ajouter une nouvelle base dans MSM
-- Frequency : peu souvent 1/semaine
-- Pre-conditions :
- PRE1 : le développeur dispose des API MSM
-- Post-conditions :
- POST1 : la base de données développée est utilisable dans MSM
-- 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
- 4) Le développeur crée un JAR du plugin
-- Extensions :
-- Performance :
-
-Modèles et architecture du domaine
-----------------------------------
-
-Package
-MSM (Core)
-Plugin
-GUI
-
-Conception
-==========
+3.2 Plugin
+----------
Deleted: trunk/src/site/doc/rapport/rst2pdf-net.py
===================================================================
--- trunk/src/site/doc/rapport/rst2pdf-net.py 2010-03-13 12:41:29 UTC (rev 233)
+++ trunk/src/site/doc/rapport/rst2pdf-net.py 2010-03-13 18:44:16 UTC (rev 234)
@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-import time
-import urllib2
-from urllib2 import HTTPError
-from urllib import urlencode
-from optparse import OptionParser
-
-CLIENT_VERSION = '1.0'
-API_VERSION = '1'
-
-API_BASE_URL = '%s://%s'
-API_POST = '%s/post'
-API_DOWNLOAD = '%s/download'
-API_SCRIPT_VERSION = '%s/script_version'
-
-DEFAULT_PROTCOL = 'http'
-DEFAULT_DOMAIN = 'www.rst2pdf.net'
-DEFAULT_ENCODING = 'utf-8'
-DEFAULT_RETRY_NUM = 5
-DEFAULT_SECURE_PROTCOL = 'https'
-DEFAULT_SECURE_DOMAIN = 'rst2pdf-net.appspot.com'
-
-def get_opener():
- opener = urllib2.build_opener()
- opener.addheaders = [('User-agent', 'rst2pdf-net/%s' % CLIENT_VERSION)]
- return opener
-
-def url_get(url, retry=DEFAULT_RETRY_NUM, output_status=True, output=sys.stdout):
- opener = get_opener()
- for x in range(retry):
- if output_status:
- output.write('.')
- try:
- time.sleep(x * 2)
- response = opener.open(url)
- return response.read()
- except HTTPError:
- pass
- return None
-
-def rst_net_post(body, domain=DEFAULT_DOMAIN, protocol=DEFAULT_PROTCOL, password=None):
- url_base = API_BASE_URL % (protocol, domain)
- url_post = API_POST % url_base
- opener = get_opener()
- params = {'body': body, 'format': 'text', 'version': API_VERSION}
- if password:
- params['password'] = password
- response = opener.open(url_post, urlencode(params))
- return response.read()
-
-def parse_text_response(response):
- response_dict = {}
- for line in response.splitlines():
- if line and '=' in line:
- key, value = line.split('=', 1)
- response_dict[key] = value
- return response_dict
-
-def main():
- usage = "Usage: %prog [options] [filename]"
- parser = OptionParser(usage=usage)
- parser.add_option('-d', '--domain',
- dest='domain',
- help='use other domain, default domain is "%s", if secure mode is "%s"' \
- % (DEFAULT_DOMAIN, DEFAULT_SECURE_DOMAIN),
- default=DEFAULT_DOMAIN)
- parser.add_option('-c', '--protocol',
- dest='protocol',
- help='use other protocol, default protocol is "%s", if secure mode is "%s"' \
- % (DEFAULT_PROTCOL, DEFAULT_SECURE_PROTCOL))
- parser.add_option('-e', '--encoding',
- dest='encoding',
- help='use other input encoding, default encoding is "%s"' % DEFAULT_ENCODING)
- parser.add_option('-o', '--output',
- dest='output',
- help='output file path')
- parser.add_option('-s', '--secure',
- action='store_true',
- dest='secure',
- help='use secure mode')
- parser.add_option('-p', '--password',
- dest='password',
- help='use password(force secure mode)')
- options, args = parser.parse_args()
-
- if not args:
- stream = sys.stdin
- input_file = ''
- else:
- stream = open(args[0], 'rb')
- input_file = args[0]
- source = stream.read()
- if options.encoding:
- source = source.decode(options.encoding).encode(DEFAULT_ENCODING)
- secure = options.secure
- if options.password:
- secure = True
- domain = options.domain
- protocol = options.protocol
- if secure:
- if domain == DEFAULT_DOMAIN:
- domain = DEFAULT_SECURE_DOMAIN
- if not protocol:
- protocol = DEFAULT_SECURE_PROTCOL
- protocol = protocol or DEFAULT_PROTCOL
-
- sys.stdout.write('Sending rst...\n')
-
- response = parse_text_response(rst_net_post(source, domain, protocol, options.password))
-
- if not 'hash' in response:
- sys.stderr.write("Error: Response don't have hash key.\n")
- return
-
- sys.stdout.write('Document hash: %s\n' % response['hash'])
-
- if options.password:
- sys.stdout.write('Pdf was created, download url is "%s".\n' % response['url'])
- else:
- url_download = API_DOWNLOAD % response['url'][:-1]
-
- sys.stdout.write('Downloading pdf from "%s"\n' % url_download)
-
- pdf_body = url_get(url_download)
- sys.stdout.write('\n')
- if not pdf_body:
- sys.stderr.write('Error: Download faled "%s".\n' % url_download)
- return
-
- if options.output:
- output_file = options.output
- elif input_file:
- base, ext = os.path.splitext(input_file)
- output_file = '%s.pdf' % base
- else:
- output_file = '%s.pdf' % response['hash']
- sys.stdout.write('Writing pdf file "%s"...\n' % output_file)
- f = open(output_file, 'wb')
- f.write(pdf_body)
- f.close()
-
- sys.stdout.write('Completed.\n')
-
-if __name__ == '__main__':
- main()
Modified: trunk/src/site/reports/planningMSM.xls
===================================================================
(Binary files differ)
1
0
r233 - trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui
by dlanglais@users.nuiton.org 13 Mar '10
by dlanglais@users.nuiton.org 13 Mar '10
13 Mar '10
Author: dlanglais
Date: 2010-03-13 13:41:29 +0100 (Sat, 13 Mar 2010)
New Revision: 233
Log:
Oubli de commit un fichier modifi?\195?\169... (build faild)
Modified:
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java
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-13 04:24:01 UTC (rev 232)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java 2010-03-13 12:41:29 UTC (rev 233)
@@ -288,7 +288,7 @@
* Get the bigTableLoader.
* @return return the bigTableLoader.
*/
- public PluginLoader getBigTableLoader() {
+ public PluginLoader getPluginLoader() {
return pluginLoader;
}
1
0
r232 - in trunk/msm-pluginmanager: . src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
by dlanglais@users.nuiton.org 13 Mar '10
by dlanglais@users.nuiton.org 13 Mar '10
13 Mar '10
Author: dlanglais
Date: 2010-03-13 05:24:01 +0100 (Sat, 13 Mar 2010)
New Revision: 232
Log:
Correction :
- ApplicationEngine : fonction getBigTableLoader() renomm?\195?\169e en getPluginLoader() (un oubli).
Am?\195?\169lioration :
- le pluginLoader est capable de charger des plugins (appel d'une fonction sur l'application principale) ;
- r?\195?\169actualise la liste des boutons correspondants aux plugins charg?\195?\169s au chargement d'un plugin ;
- affiche des informations sur le plugin s?\195?\169lectionn?\195?\169 ;
- permet le chargemenet / d?\195?\169chargement de celui-ci (n?\195?\169anmoins bouton activation/d?\195?\169sactivation non fonctionnels).
Modified:
trunk/msm-pluginmanager/pom.xml
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx
Modified: trunk/msm-pluginmanager/pom.xml
===================================================================
--- trunk/msm-pluginmanager/pom.xml 2010-03-13 02:54:51 UTC (rev 231)
+++ trunk/msm-pluginmanager/pom.xml 2010-03-13 04:24:01 UTC (rev 232)
@@ -131,6 +131,29 @@
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
+ <properties>
+ <maven.test.skip>false</maven.test.skip>
+
+ <!--PluginManager Main Class in JAR -->
+ <maven.jar.main.class>org.nuiton.mapstoragemanager.plugins.pluginmanager.Main</maven.jar.main.class>
+
+ <!-- jaxx configuration -->
+ <jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
+ <jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
+ <jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon>
+
+ <jaxx.extraImportList>
+ static org.nuiton.i18n.I18n.n_
+ </jaxx.extraImportList>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <!-- jaxx help configuration -->
+ <!--jaxx.helpSetName>vradi</jaxx.helpSetName>
+ <jaxx.locale>fr</jaxx.locale>
+ <jaxx.helpTarget>src/main/help</jaxx.helpTarget-->
+
+ </properties>
+
<packaging>jar</packaging>
<build>
@@ -274,9 +297,6 @@
</plugins>
</build>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
</project>
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 02:54:51 UTC (rev 231)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 04:24:01 UTC (rev 232)
@@ -16,6 +16,7 @@
import javax.swing.SwingUtilities;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
/**
*
* @author Dorian Langlais
@@ -32,8 +33,8 @@
*/
private static Locale locale = Locale.FRANCE;
- private static void main(String ... args) {
-
+ public static void main(String ... args) {
+//ApplicationEngine.getInstance().getPluginLoader().getAllPlugin(null);
final PluginManager pluginManager = PluginManager.getInstance();
pluginManager.setVisible(true);
@@ -45,55 +46,55 @@
}
});
- JButton[] buttons = new JButton[20];
- for(int i = 0 ; i < buttons.length ; i++) {
- final int actualI = i;
-
- buttons[i] = new JButton("test" + i);
- buttons[i].setSize(100, 20);
- buttons[i].addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
-// JPanel panel = new JPanel();
-// panel.add(new JLabel("test" + actualI));
-
- JPanel pluginView = pluginManager.getPluginView();
- pluginView.setLayout(new BorderLayout());
-
- pluginView.removeAll();
- JLabel titre;
- pluginView.add(titre = new JLabel("nom plugin " + actualI), BorderLayout.PAGE_START);
-
- JPanel description = new JPanel();
- description.add(new JLabel(" "));
- description.add(new JLabel(" "));
-// pluginView.add(new JSeparator());
- description.add(new JLabel("description plugin " + actualI));
- description.add(new JLabel("test" + actualI));
- description.add(new JLabel("test" + actualI));
- description.add(new JLabel("test" + actualI));
- pluginView.add(description, BorderLayout.CENTER);
-
-
- JPanel buttons2 = new JPanel();
- buttons2.setLayout(new GridLayout(1,4));
- buttons2.add(new JButton("Activer"));
- buttons2.add(new JButton("DesActiver"));
- buttons2.add(new JButton("Charger"));
- buttons2.add(new JButton("DéCharger"));
-
- pluginView.add(buttons2, BorderLayout.PAGE_END);
- pluginView.updateUI();
- }
- });
-
- pluginManager.getPluginList().add(buttons[i]);
- try {
- Thread.sleep(100);
- pluginManager.getPluginList().updateUI();
- } catch (InterruptedException ex) {
- LOG.error(ex, ex);
- }
- }
+// JButton[] buttons = new JButton[20];
+// for(int i = 0 ; i < buttons.length ; i++) {
+// final int actualI = i;
+//
+// buttons[i] = new JButton("test" + i);
+// buttons[i].setSize(100, 20);
+// buttons[i].addActionListener(new ActionListener() {
+//
+// public void actionPerformed(ActionEvent e) {
+//// JPanel panel = new JPanel();
+//// panel.add(new JLabel("test" + actualI));
+//
+// JPanel pluginView = pluginManager.getPluginView();
+// pluginView.setLayout(new BorderLayout());
+//
+// pluginView.removeAll();
+// JLabel titre;
+// pluginView.add(titre = new JLabel("nom plugin " + actualI), BorderLayout.PAGE_START);
+//
+// JPanel description = new JPanel();
+// description.add(new JLabel(" "));
+// description.add(new JLabel(" "));
+//// pluginView.add(new JSeparator());
+// description.add(new JLabel("description plugin " + actualI));
+// description.add(new JLabel("test" + actualI));
+// description.add(new JLabel("test" + actualI));
+// description.add(new JLabel("test" + actualI));
+// pluginView.add(description, BorderLayout.CENTER);
+//
+//
+// JPanel buttons2 = new JPanel();
+// buttons2.setLayout(new GridLayout(1,4));
+// buttons2.add(new JButton("Activer"));
+// buttons2.add(new JButton("DesActiver"));
+// buttons2.add(new JButton("Charger"));
+// buttons2.add(new JButton("DéCharger"));
+//
+// pluginView.add(buttons2, BorderLayout.PAGE_END);
+// pluginView.updateUI();
+// }
+// });
+//
+// pluginManager.getPluginList().add(buttons[i]);
+// try {
+// Thread.sleep(100);
+// pluginManager.getPluginList().updateUI();
+// } catch (InterruptedException 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-13 02:54:51 UTC (rev 231)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-13 04:24:01 UTC (rev 232)
@@ -1,8 +1,11 @@
-<Application id='pluginManagerFrame' width='500' height='400'>
+<Application id='pluginManagerFrame' width='640' height='480'>
<!-- include java files for treatment -->
<script>
<![CDATA[
+import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine;
+import org.nuiton.mapstoragemanager.core.PluginLoader;
+import org.nuiton.mapstoragemanager.plugins.Plugin;
/**
* classe instance (singleton pattern).
@@ -19,6 +22,110 @@
}
return instance;
}
+
+/**
+ * loadAPlugin.
+ * Call the MSM instance to load a Plugin.
+ */
+public void loadAPlugin() {
+ ApplicationEngine.getInstance().loadAPlugin();
+ refreshPluginList();
+}
+
+ /**
+ * refresh the plugin list.
+ * Call application Engine to get plugin loader and get all plugin to refresh
+ * the frame.
+ */
+ public void refreshPluginList() {
+ ApplicationEngine engine = ApplicationEngine.getInstance();
+ PluginLoader pluginLoader = engine.getPluginLoader();
+ getPluginList().removeAll();
+
+ for(final Plugin plugin : pluginLoader.getAllPlugin(null)) {
+
+ final String pluginName = plugin.getPluginName();
+ final String pluginDescritpion = "";//plugin.getDescription();
+
+ JButton pluginButton = new JButton(pluginName);
+ pluginButton.setSize(100, 20);
+ pluginButton.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+
+ JPanel pluginView = getPluginView();
+ pluginView.setLayout(new BorderLayout());
+
+ pluginView.removeAll();
+ 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 JLabel(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"));
+
+ buttonActivate.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(false);
+ buttonDesactivate.setEnabled(true);
+ }
+ });
+
+ buttonDesactivate.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ //TODO;
+ buttonActivate.setEnabled(true);
+ buttonDesactivate.setEnabled(false);
+ }
+ });
+
+ buttonLoad.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ plugin.load();
+ buttonLoad.setEnabled(false);
+ buttonUnload.setEnabled(true);
+ }
+ });
+
+ buttonUnload.addActionListener(new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ plugin.unload();
+ buttonLoad.setEnabled(true);
+ buttonUnload.setEnabled(false);
+ }
+ });
+
+ southButton.add(buttonActivate);
+ southButton.add(buttonDesactivate);
+ southButton.add(buttonLoad);
+ southButton.add(buttonUnload);
+
+ pluginView.add(southButton, BorderLayout.PAGE_END);
+ pluginView.updateUI();
+ }
+ });
+
+ getPluginList().add(pluginButton);
+ }
+ getPluginList().updateUI();
+ }
+
]]>
</script>
@@ -30,14 +137,15 @@
<JMenuBar>
<JMenu id='menuPlugin'>
- <JMenuItem id='menuPluginLoad'/>
- <JMenuItem id='menuPluginShow'/>
+ <JMenuItem id='menuPluginLoad'
+ onActionPerformed='this.loadAPlugin()' />
+ <!--JMenuItem id='menuPluginShow'/-->
</JMenu>
</JMenuBar>
<JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
<JPanel layout='{new BorderLayout()}' id='mainPanel'>
- <JSplitPane constraints='BorderLayout.CENTER' dividerLocation='100'>
+ <JSplitPane constraints='BorderLayout.CENTER' dividerLocation='150'>
<JScrollPane>
<VBox layout='{new GridLayout(0,1)}' id='pluginList' />
</JScrollPane>
1
0
r231 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager/plugins msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui 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 13 Mar '10
by dlanglais@users.nuiton.org 13 Mar '10
13 Mar '10
Author: dlanglais
Date: 2010-03-13 03:54:51 +0100 (Sat, 13 Mar 2010)
New Revision: 231
Log:
Correction qualit?\195?\169 (imports inutilis?\195?\169s..).
Modified:
trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java
trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap2.java
trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java
Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap2.java
===================================================================
--- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap2.java 2010-03-13 02:19:17 UTC (rev 230)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/plugins/OurHashMap2.java 2010-03-13 02:54:51 UTC (rev 231)
@@ -1,6 +1,5 @@
package org.nuiton.mapstoragemanager.plugins;
-import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
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-13 02:19:17 UTC (rev 230)
+++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/gui/ApplicationEngine.java 2010-03-13 02:54:51 UTC (rev 231)
@@ -162,7 +162,6 @@
}
if (response == JOptionPane.YES_OPTION) {
- System.out.println("Yes button clicked");
if (nameBase == null) {
JOptionPane.showMessageDialog(MainUI.getInstance(),
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-13 02:19:17 UTC (rev 230)
+++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-13 02:54:51 UTC (rev 231)
@@ -225,7 +225,6 @@
if (!menuImport.isEnabled()) {
menuImport.setEnabled(true);
}
- System.out.println(menuImport.hashCode());
}
/**
Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java
===================================================================
--- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 02:19:17 UTC (rev 230)
+++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/Main.java 2010-03-13 02:54:51 UTC (rev 231)
@@ -6,26 +6,21 @@
package org.nuiton.mapstoragemanager.plugins.pluginmanager;
import java.awt.BorderLayout;
-import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
-import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
-import jaxx.runtime.swing.Item;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author Dorian Langlais
*/
-public class Main {
+public final class Main {
/**
* Logger.
@@ -37,7 +32,7 @@
*/
private static Locale locale = Locale.FRANCE;
- public static void main(String ... args) {
+ private static void main(String ... args) {
final PluginManager pluginManager = PluginManager.getInstance();
pluginManager.setVisible(true);
1
0