diff --git a/.metadata/.lock b/.metadata/.lock
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.log b/.metadata/.log
new file mode 100644
index 0000000..5fe38e1
--- /dev/null
+++ b/.metadata/.log
@@ -0,0 +1,170 @@
+!SESSION 2016-03-18 10:29:17.597 -----------------------------------------------
+eclipse.buildId=M20120208-0800
+java.version=1.7.0_51
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR
+Framework arguments: -product org.eclipse.epp.package.java.product
+Command-line arguments: -data /private/student/1/11/16000511/routage-optimiste -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product
+
+!ENTRY org.eclipse.ui.workbench 4 0 2016-03-18 10:29:27.213
+!MESSAGE An unexpected exception was thrown.
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.ui.internal.WorkbenchWindow.putToolbarLabel(WorkbenchWindow.java:1697)
+ at org.eclipse.ui.internal.menus.MenuAdditionCacheEntry.createToolBarAdditionContribution(MenuAdditionCacheEntry.java:208)
+ at org.eclipse.ui.internal.menus.MenuAdditionCacheEntry.createContributionItems(MenuAdditionCacheEntry.java:177)
+ at org.eclipse.ui.internal.menus.TrimContributionManager.update(TrimContributionManager.java:224)
+ at org.eclipse.ui.internal.WorkbenchWindow.updateLayoutDataForContents(WorkbenchWindow.java:3874)
+ at org.eclipse.ui.internal.WorkbenchWindow.setCoolBarVisible(WorkbenchWindow.java:3675)
+ at org.eclipse.ui.internal.ViewIntroAdapterPart.setBarVisibility(ViewIntroAdapterPart.java:203)
+ at org.eclipse.ui.internal.ViewIntroAdapterPart.dispose(ViewIntroAdapterPart.java:106)
+ at org.eclipse.ui.internal.WorkbenchPartReference.doDisposePart(WorkbenchPartReference.java:737)
+ at org.eclipse.ui.internal.ViewReference.doDisposePart(ViewReference.java:104)
+ at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:684)
+ at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1797)
+ at org.eclipse.ui.internal.WorkbenchPage.partRemoved(WorkbenchPage.java:1789)
+ at org.eclipse.ui.internal.ViewFactory.releaseView(ViewFactory.java:257)
+ at org.eclipse.ui.internal.Perspective.dispose(Perspective.java:292)
+ at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1868)
+ at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:894)
+ at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1729)
+ at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
+ at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
+ at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
+ at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
+ at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1114)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1111)
+ at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1040)
+ at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1284)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.Workbench.close(Workbench.java:1282)
+ at org.eclipse.ui.internal.Workbench.close(Workbench.java:1254)
+ at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:727)
+ at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
+ at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
+ at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)
+ at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267)
+ at org.eclipse.swt.widgets.Shell.closeWidget(Shell.java:617)
+ at org.eclipse.swt.widgets.Shell.gtk_delete_event(Shell.java:1189)
+ at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1735)
+ at org.eclipse.swt.widgets.Control.windowProc(Control.java:5016)
+ at org.eclipse.swt.widgets.Display.windowProc(Display.java:4408)
+ at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
+ at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8422)
+ at org.eclipse.swt.widgets.Display.eventProc(Display.java:1245)
+ at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
+ at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2276)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3207)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
+ at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
+!SESSION 2016-03-18 10:30:44.541 -----------------------------------------------
+eclipse.buildId=M20120208-0800
+java.version=1.7.0_51
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR
+Framework arguments: -product org.eclipse.epp.package.java.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product
+
+!ENTRY org.eclipse.ui.workbench 4 0 2016-03-18 10:31:01.751
+!MESSAGE An unexpected exception was thrown.
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.ui.internal.WorkbenchWindow.putToolbarLabel(WorkbenchWindow.java:1697)
+ at org.eclipse.ui.internal.menus.MenuAdditionCacheEntry.createToolBarAdditionContribution(MenuAdditionCacheEntry.java:208)
+ at org.eclipse.ui.internal.menus.MenuAdditionCacheEntry.createContributionItems(MenuAdditionCacheEntry.java:177)
+ at org.eclipse.ui.internal.menus.TrimContributionManager.update(TrimContributionManager.java:224)
+ at org.eclipse.ui.internal.WorkbenchWindow.updateLayoutDataForContents(WorkbenchWindow.java:3874)
+ at org.eclipse.ui.internal.WorkbenchWindow.setCoolBarVisible(WorkbenchWindow.java:3675)
+ at org.eclipse.ui.internal.ViewIntroAdapterPart.setBarVisibility(ViewIntroAdapterPart.java:203)
+ at org.eclipse.ui.internal.ViewIntroAdapterPart.dispose(ViewIntroAdapterPart.java:106)
+ at org.eclipse.ui.internal.WorkbenchPartReference.doDisposePart(WorkbenchPartReference.java:737)
+ at org.eclipse.ui.internal.ViewReference.doDisposePart(ViewReference.java:104)
+ at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:684)
+ at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1797)
+ at org.eclipse.ui.internal.WorkbenchPage.partRemoved(WorkbenchPage.java:1789)
+ at org.eclipse.ui.internal.ViewFactory.releaseView(ViewFactory.java:257)
+ at org.eclipse.ui.internal.Perspective.dispose(Perspective.java:292)
+ at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1868)
+ at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:894)
+ at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1729)
+ at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
+ at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
+ at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:867)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:865)
+ at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
+ at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1114)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1111)
+ at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1040)
+ at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1284)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.Workbench.close(Workbench.java:1282)
+ at org.eclipse.ui.internal.Workbench.restart(Workbench.java:2292)
+ at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction.restart(OpenWorkspaceAction.java:282)
+ at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction.run(OpenWorkspaceAction.java:264)
+ at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction$OpenDialogAction.run(OpenWorkspaceAction.java:70)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267)
+ at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061)
+ at org.eclipse.jface.action.ActionContributionItem$9.handleEvent(ActionContributionItem.java:1284)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
+ at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
diff --git a/.metadata/.mylyn/.taskListIndex/segments.gen b/.metadata/.mylyn/.taskListIndex/segments.gen
new file mode 100644
index 0000000..63a7ec9
Binary files /dev/null and b/.metadata/.mylyn/.taskListIndex/segments.gen differ
diff --git a/.metadata/.mylyn/.taskListIndex/segments_1 b/.metadata/.mylyn/.taskListIndex/segments_1
new file mode 100644
index 0000000..a6294d7
Binary files /dev/null and b/.metadata/.mylyn/.taskListIndex/segments_1 differ
diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip
new file mode 100644
index 0000000..d889841
Binary files /dev/null and b/.metadata/.mylyn/repositories.xml.zip differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
new file mode 100644
index 0000000..98daeff
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree
new file mode 100644
index 0000000..6f3b1e7
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..bafff8c
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dffc6b5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs
new file mode 100644
index 0000000..d3763bd
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.epp.usagedata.recording.last-upload=1458293365393
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..bef410f
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,13 @@
+content_assist_proposals_background=247,247,247
+content_assist_proposals_foreground=44,44,44
+eclipse.preferences.version=1
+fontPropagated=true
+org.eclipse.jdt.ui.editor.tab.width=
+org.eclipse.jdt.ui.formatterprofiles.version=12
+org.eclipse.jdt.ui.javadoclocations.migrated=true
+org.eclipse.jface.textfont=1|Monospace|10.0|0|GTK|1|;
+proposalOrderMigrated=true
+spelling_locale_initialized=true
+tabWidthPropagated=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs
new file mode 100644
index 0000000..67b1d96
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.m2e.discovery.pref.projects=
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
new file mode 100644
index 0000000..43e97e4
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+mylyn.attention.migrated=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
new file mode 100644
index 0000000..8d462a6
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs
new file mode 100644
index 0000000..f9e585b
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+pref_first_startup=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
new file mode 100644
index 0000000..56cd496
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.team.ui.first_time=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..fc00e58
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,5 @@
+PROBLEMS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+platformState=1441713840516
+quickStart=false
+tipsAndTricks=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..eeda39e
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,3 @@
+ENABLED_DECORATORS=org.eclipse.m2e.core.mavenVersionDecorator\:false,com.google.gdt.eclipse.managedapis.ui.ManagedApiContainerDecorator\:true,com.google.gdt.eclipse.managedapis.ui.ManageApiInfoDecorator\:true,org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator\:true,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:false,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.m2e.core.maven2decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.pde.ui.binaryProjectDecorator\:false,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.team.svn.ui.decorator.SVNLightweightDecorator\:false,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,org.eclipse.wst.jsdt.ui.override.decorator\:true,org.eclipse.xtext.builder.nature.overlay\:true,
+PLUGINS_NOT_ACTIVATED_ON_STARTUP=org.eclipse.m2e.discovery;
+eclipse.preferences.version=1
diff --git a/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv
new file mode 100644
index 0000000..d38d054
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv
@@ -0,0 +1,256 @@
+what,kind,bundleId,bundleVersion,description,time
+activated,perspective,org.eclipse.jdt.ui,,"org.eclipse.jdt.ui.JavaPerspective",1458293364341
+started,bundle,org.eclipse.osgi,3.7.2.v20120110-1415,"org.eclipse.osgi",1458293364343
+started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110815-1438,"org.eclipse.equinox.simpleconfigurator",1458293364343
+started,bundle,com.ibm.icu,4.4.2.v20110823,"com.ibm.icu",1458293364344
+started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1458293364344
+started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1458293364345
+started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1458293364345
+started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110928-1504,"org.eclipse.core.filebuffers",1458293364346
+started,bundle,org.eclipse.core.jobs,3.5.101.v20120113-1953,"org.eclipse.core.jobs",1458293364346
+started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1458293364347
+started,bundle,org.eclipse.core.resources,3.7.101.v20120125-1505,"org.eclipse.core.resources",1458293364348
+started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1458293364348
+started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1458293364349
+started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1458293364349
+started,bundle,org.eclipse.debug.core,3.7.1.v20111129-2031,"org.eclipse.debug.core",1458293364350
+started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1458293364350
+started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1458293364350
+started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1458293364351
+started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1458293364352
+started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1458293364352
+started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1458293364353
+started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1458293364353
+started,bundle,org.eclipse.equinox.p2.core,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.core",1458293364354
+started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110815-1419,"org.eclipse.equinox.p2.directorywatcher",1458293364354
+started,bundle,org.eclipse.equinox.p2.engine,2.1.1.R37x_v20111003,"org.eclipse.equinox.p2.engine",1458293364355
+started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110815-1419,"org.eclipse.equinox.p2.metadata",1458293364356
+started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110815-1419,"org.eclipse.equinox.p2.metadata.repository",1458293364357
+started,bundle,org.eclipse.equinox.p2.operations,2.1.1.R37x_v20111111,"org.eclipse.equinox.p2.operations",1458293364358
+started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110815-1419,"org.eclipse.equinox.p2.reconciler.dropins",1458293364358
+started,bundle,org.eclipse.equinox.p2.repository,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.repository",1458293364359
+started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110815-1419,"org.eclipse.equinox.p2.ui.sdk.scheduler",1458293364359
+started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110815-1419,"org.eclipse.equinox.p2.updatechecker",1458293364360
+started,bundle,org.eclipse.equinox.preferences,3.4.2.v20120111-2020,"org.eclipse.equinox.preferences",1458293364360
+started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1458293364361
+started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1458293364361
+started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1458293364361
+started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1458293364362
+started,bundle,org.eclipse.jdt.core,3.7.3.v20120119-1537,"org.eclipse.jdt.core",1458293364362
+started,bundle,org.eclipse.jdt.core.manipulation,1.4.0.v20110928-1453,"org.eclipse.jdt.core.manipulation",1458293364363
+started,bundle,org.eclipse.jdt.ui,3.7.2.v20120109-1427,"org.eclipse.jdt.ui",1458293364365
+started,bundle,org.eclipse.jface,3.7.0.v20110928-1505,"org.eclipse.jface",1458293364365
+started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1458293364366
+started,bundle,org.eclipse.m2e.discovery,1.0.200.20111228-1245,"org.eclipse.m2e.discovery",1458293364366
+started,bundle,org.eclipse.m2e.logback.configuration,1.0.200.20111228-1245,"org.eclipse.m2e.logback.configuration",1458293364366
+started,bundle,org.eclipse.search,3.7.0.v20110928-1504,"org.eclipse.search",1458293364367
+started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1458293364367
+started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1458293364367
+started,bundle,org.eclipse.team.cvs.ui,3.3.401.v20120126-1227,"org.eclipse.team.cvs.ui",1458293364368
+started,bundle,org.eclipse.team.ui,3.6.101.R37x_v20111109-0800,"org.eclipse.team.ui",1458293364369
+started,bundle,org.eclipse.ui,3.7.0.v20110928-1505,"org.eclipse.ui",1458293364370
+started,bundle,org.eclipse.ui.console,3.5.100.v20111007_r372,"org.eclipse.ui.console",1458293364370
+started,bundle,org.eclipse.ui.editors,3.7.0.v20110928-1504,"org.eclipse.ui.editors",1458293364370
+started,bundle,org.eclipse.ui.forms,3.5.101.v20111011-1919,"org.eclipse.ui.forms",1458293364371
+started,bundle,org.eclipse.ui.ide,3.7.0.v20110928-1505,"org.eclipse.ui.ide",1458293364372
+started,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1458293364372
+started,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1458293364372
+started,bundle,org.eclipse.ui.net,1.2.100.v20111208-1155,"org.eclipse.ui.net",1458293364372
+started,bundle,org.eclipse.ui.views,3.6.0.v20110928-1505,"org.eclipse.ui.views",1458293364373
+started,bundle,org.eclipse.ui.views.log,1.0.200.v20110404,"org.eclipse.ui.views.log",1458293364373
+started,bundle,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"org.eclipse.ui.workbench",1458293364374
+started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110928-1504,"org.eclipse.ui.workbench.texteditor",1458293364374
+started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1458293364375
+started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1458293364375
+started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1458293364376
+started,bundle,com.google.gdt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.core",1458293364376
+started,bundle,com.google.gdt.eclipse.designer,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer",1458293364376
+started,bundle,com.google.gdt.eclipse.designer.UiBinder,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer.UiBinder",1458293364377
+started,bundle,com.google.gdt.eclipse.login,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.login",1458293364377
+started,bundle,com.google.gdt.eclipse.managedapis,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.managedapis",1458293364377
+started,bundle,com.google.gdt.eclipse.suite.ext,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite.ext",1458293364378
+started,bundle,org.eclipse.mylyn.bugzilla.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.bugzilla.core",1458293364378
+started,bundle,org.eclipse.mylyn.bugzilla.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.bugzilla.ui",1458293364378
+started,bundle,org.eclipse.mylyn.commons.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.core",1458293364378
+started,bundle,org.eclipse.mylyn.commons.net,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.net",1458293364378
+started,bundle,org.eclipse.mylyn.commons.notifications.core,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.core",1458293364379
+started,bundle,org.eclipse.mylyn.commons.notifications.feed,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.feed",1458293364379
+started,bundle,org.eclipse.mylyn.commons.notifications.ui,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.ui",1458293364379
+started,bundle,org.eclipse.mylyn.commons.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.ui",1458293364380
+started,bundle,org.eclipse.mylyn.commons.workbench,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.workbench",1458293364380
+started,bundle,org.eclipse.mylyn.context.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.context.core",1458293364380
+started,bundle,org.eclipse.mylyn.context.tasks.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.context.tasks.ui",1458293364380
+started,bundle,org.eclipse.mylyn.monitor.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.monitor.ui",1458293364381
+started,bundle,org.eclipse.mylyn.tasks.index.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.tasks.index.core",1458293364381
+started,bundle,org.eclipse.mylyn.tasks.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.tasks.ui",1458293364382
+started,bundle,org.eclipse.mylyn.team.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.team.ui",1458293364382
+started,bundle,org.eclipse.wb.core,1.5.2.r37x201303061457,"org.eclipse.wb.core",1458293364382
+started,bundle,org.eclipse.wb.core.java,1.5.2.r37x201303061505,"org.eclipse.wb.core.java",1458293364382
+started,bundle,org.eclipse.wb.core.lib,1.5.2.r37x201303061457,"org.eclipse.wb.core.lib",1458293364383
+started,bundle,org.eclipse.wb.discovery.core,1.5.2.r37x201303061516,"org.eclipse.wb.discovery.core",1458293364383
+started,bundle,org.eclipse.wb.discovery.ui,1.5.2.r37x201303061516,"org.eclipse.wb.discovery.ui",1458293364383
+started,bundle,org.eclipse.pde.launching,3.6.0.v20110506,"org.eclipse.pde.launching",1458293364384
+started,bundle,org.eclipse.pde.ui,3.6.100.v20120103_r372,"org.eclipse.pde.ui",1458293364385
+os,sysinfo,,,"linux",1458293364388
+arch,sysinfo,,,"x86_64",1458293364388
+ws,sysinfo,,,"gtk",1458293364388
+locale,sysinfo,,,"fr_FR",1458293364388
+processors,sysinfo,,,"4",1458293364388
+java.runtime.name,sysinfo,,,"OpenJDK Runtime Environment",1458293364388
+java.runtime.version,sysinfo,,,"1.7.0_51-mockbuild_2014_01_31_16_21-b00",1458293364388
+java.specification.name,sysinfo,,,"Java Platform API Specification",1458293364388
+java.specification.vendor,sysinfo,,,"Oracle Corporation",1458293364388
+java.specification.version,sysinfo,,,"1.7",1458293364388
+java.vendor,sysinfo,,,"Oracle Corporation",1458293364388
+java.version,sysinfo,,,"1.7.0_51",1458293364388
+java.vm.info,sysinfo,,,"mixed mode",1458293364388
+java.vm.name,sysinfo,,,"OpenJDK 64-Bit Server VM",1458293364388
+java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1458293364388
+java.vm.specification.vendor,sysinfo,,,"Oracle Corporation",1458293364388
+java.vm.specification.version,sysinfo,,,"1.7",1458293364388
+java.vm.vendor,sysinfo,,,"Oracle Corporation",1458293364388
+java.vm.version,sysinfo,,,"24.51-b03",1458293364388
+started,bundle,org.eclipse.m2e.usagedata,1.0.200.20111228-1245,"org.eclipse.m2e.usagedata",1458293364391
+deactivated,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1458293365572
+error,log,,,"An unexpected exception was thrown.",1458293367216
+closed,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1458293367219
+started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1458293367338
+started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1458293367381
+started,bundle,org.eclipse.compare,3.5.202.R37x_v20111109-0800,"org.eclipse.compare",1458293367384
+stopped,bundle,org.eclipse.m2e.logback.configuration,1.0.200.20111228-1245,"org.eclipse.m2e.logback.configuration",1458293367482
+stopped,bundle,org.eclipse.m2e.discovery,1.0.200.20111228-1245,"org.eclipse.m2e.discovery",1458293367484
+stopped,bundle,org.eclipse.m2e.refactoring,1.0.200.20111228-1245,"org.eclipse.m2e.refactoring",1458293367485
+stopped,bundle,org.eclipse.m2e.editor,1.0.200.20111228-1245,"org.eclipse.m2e.editor",1458293367485
+stopped,bundle,org.eclipse.m2e.editor.xml,1.0.200.20111228-1245,"org.eclipse.m2e.editor.xml",1458293367486
+stopped,bundle,com.google.gdt.eclipse.maven.e37,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.maven.e37",1458293367486
+stopped,bundle,org.eclipse.m2e.jdt,1.0.200.20111228-1245,"org.eclipse.m2e.jdt",1458293367486
+stopped,bundle,org.eclipse.m2e.launching,1.0.200.20111228-1245,"org.eclipse.m2e.launching",1458293367487
+stopped,bundle,org.eclipse.m2e.usagedata,1.0.200.20111228-1245,"org.eclipse.m2e.usagedata",1458293367487
+stopped,bundle,org.eclipse.xtend.ide,2.7.2.v201409160908,"org.eclipse.xtend.ide",1458293367487
+stopped,bundle,org.eclipse.xtext.common.types.shared,2.7.2.v201409160908,"org.eclipse.xtext.common.types.shared",1458293367487
+stopped,bundle,org.eclipse.xtext.purexbase.ui,2.7.2.v201409160908,"org.eclipse.xtext.purexbase.ui",1458293367487
+stopped,bundle,org.eclipse.xtend.core,2.7.2.v201409160908,"org.eclipse.xtend.core",1458293367488
+stopped,bundle,org.eclipse.xtext.xbase.ui,2.7.2.v201409160908,"org.eclipse.xtext.xbase.ui",1458293367488
+stopped,bundle,org.eclipse.xtext.xtext.ui,2.7.2.v201409160908,"org.eclipse.xtext.xtext.ui",1458293367488
+stopped,bundle,org.eclipse.pde.ui,3.6.100.v20120103_r372,"org.eclipse.pde.ui",1458293367488
+stopped,bundle,org.eclipse.ui.cheatsheets,3.4.100.v20110425,"org.eclipse.ui.cheatsheets",1458293367489
+stopped,bundle,org.eclipse.help.ui,3.5.101.r37_20110819,"org.eclipse.help.ui",1458293367489
+stopped,bundle,org.eclipse.help.webapp,3.6.1.r37_20110929,"org.eclipse.help.webapp",1458293367489
+stopped,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1458293367490
+stopped,bundle,org.eclipse.epp.usagedata.ui,1.3.1.R201106061540,"org.eclipse.epp.usagedata.ui",1458293367490
+stopped,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1458293367490
+stopped,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1458293367490
+stopped,bundle,org.eclipse.help.base,3.6.2.v201202080800,"org.eclipse.help.base",1458293367490
+stopped,bundle,org.eclipse.equinox.http.jetty,2.0.100.v20110502,"org.eclipse.equinox.http.jetty",1458293367490
+stopped,bundle,com.google.appengine.eclipse.datatools,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.datatools",1458293367491
+stopped,bundle,com.google.appengine.eclipse.webtools,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.webtools",1458293367491
+stopped,bundle,com.google.gdt.eclipse.appengine.swarm_backend,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.swarm_backend",1458293367491
+stopped,bundle,com.google.gdt.eclipse.suite.ext,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite.ext",1458293367491
+stopped,bundle,com.google.gdt.eclipse.appengine.swarm,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.swarm",1458293367492
+stopped,bundle,com.google.gdt.eclipse.appengine.rpc,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.rpc",1458293367492
+stopped,bundle,com.google.gdt.eclipse.gph.e36,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.e36",1458293367492
+stopped,bundle,com.google.gdt.eclipse.gph.hge,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.hge",1458293367493
+stopped,bundle,com.google.gdt.eclipse.gph.subclipse,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.subclipse",1458293367493
+stopped,bundle,com.google.gdt.eclipse.gph.subversive,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.subversive",1458293367493
+stopped,bundle,com.google.gdt.eclipse.gph,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph",1458293367493
+stopped,bundle,com.google.gdt.eclipse.maven,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.maven",1458293367494
+stopped,bundle,com.google.gdt.eclipse.suite,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite",1458293367494
+stopped,bundle,com.google.gdt.eclipse.appsmarketplace,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appsmarketplace",1458293367494
+stopped,bundle,com.google.gdt.eclipse.managedapis,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.managedapis",1458293367494
+stopped,bundle,com.google.appengine.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.core",1458293367495
+stopped,bundle,com.google.gdt.eclipse.login,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.login",1458293367495
+stopped,bundle,com.google.gwt.eclipse.oophm,3.2.2.v201303261859-rel-r37,"com.google.gwt.eclipse.oophm",1458293367495
+stopped,bundle,com.google.gwt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gwt.eclipse.core",1458293367495
+stopped,bundle,com.google.gdt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.core",1458293367496
+stopped,bundle,com.google.gdt.eclipse.platform,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.platform",1458293367496
+stopped,bundle,com.google.gdt.eclipse.platform.e37,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.platform.e37",1458293367496
+stopped,bundle,org.eclipse.m2e.core.ui,1.0.200.20111228-1245,"org.eclipse.m2e.core.ui",1458293367497
+stopped,bundle,org.eclipse.m2e.core,1.0.200.20111228-1245,"org.eclipse.m2e.core",1458293367497
+stopped,bundle,org.eclipse.mylyn.ide.ant,3.8.3.v20130107-0100,"org.eclipse.mylyn.ide.ant",1458293367497
+stopped,bundle,org.eclipse.ant.ui,3.5.101.v20120110-1739,"org.eclipse.ant.ui",1458293367498
+stopped,bundle,org.eclipse.ant.launching,1.0.101.v20120110-1739,"org.eclipse.ant.launching",1458293367498
+stopped,bundle,org.eclipse.egit.mylyn.ui,1.3.0.201202151440-r,"org.eclipse.egit.mylyn.ui",1458293367498
+stopped,bundle,org.eclipse.egit.ui,1.3.0.201202151440-r,"org.eclipse.egit.ui",1458293367501
+stopped,bundle,org.eclipse.egit.core,1.3.0.201202151440-r,"org.eclipse.egit.core",1458293367501
+stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110815-1419,"org.eclipse.equinox.p2.ui.sdk",1458293367501
+stopped,bundle,com.google.gdt.eclipse.designer.UiBinder,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer.UiBinder",1458293367501
+stopped,bundle,com.google.gdt.eclipse.designer.gpe,3.1.2.r37x201303061641,"com.google.gdt.eclipse.designer.gpe",1458293367503
+stopped,bundle,com.google.gdt.eclipse.designer,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer",1458293367503
+stopped,bundle,org.eclipse.mylyn.java.tasks,3.8.3.v20130107-0100,"org.eclipse.mylyn.java.tasks",1458293367504
+stopped,bundle,org.eclipse.mylyn.java.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.java.ui",1458293367504
+stopped,bundle,org.eclipse.jdt.junit,3.7.0.v20110928-1453,"org.eclipse.jdt.junit",1458293367505
+activated,perspective,org.eclipse.jdt.ui,,"org.eclipse.jdt.ui.JavaPerspective",1458293450218
+started,bundle,org.eclipse.osgi,3.7.2.v20120110-1415,"org.eclipse.osgi",1458293450218
+started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110815-1438,"org.eclipse.equinox.simpleconfigurator",1458293450219
+started,bundle,com.ibm.icu,4.4.2.v20110823,"com.ibm.icu",1458293450219
+started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1458293450219
+started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1458293450220
+started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1458293450220
+started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110928-1504,"org.eclipse.core.filebuffers",1458293450220
+started,bundle,org.eclipse.core.jobs,3.5.101.v20120113-1953,"org.eclipse.core.jobs",1458293450220
+started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1458293450221
+started,bundle,org.eclipse.core.resources,3.7.101.v20120125-1505,"org.eclipse.core.resources",1458293450221
+started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1458293450221
+started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1458293450221
+started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1458293450222
+started,bundle,org.eclipse.debug.core,3.7.1.v20111129-2031,"org.eclipse.debug.core",1458293450222
+started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1458293450222
+started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1458293450223
+started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1458293450223
+started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1458293450223
+started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1458293450223
+started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1458293450224
+started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1458293450224
+started,bundle,org.eclipse.equinox.p2.core,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.core",1458293450224
+started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110815-1419,"org.eclipse.equinox.p2.directorywatcher",1458293450225
+started,bundle,org.eclipse.equinox.p2.engine,2.1.1.R37x_v20111003,"org.eclipse.equinox.p2.engine",1458293450225
+started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110815-1419,"org.eclipse.equinox.p2.metadata",1458293450225
+started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110815-1419,"org.eclipse.equinox.p2.metadata.repository",1458293450226
+started,bundle,org.eclipse.equinox.p2.operations,2.1.1.R37x_v20111111,"org.eclipse.equinox.p2.operations",1458293450226
+started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110815-1419,"org.eclipse.equinox.p2.reconciler.dropins",1458293450226
+started,bundle,org.eclipse.equinox.p2.repository,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.repository",1458293450227
+started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110815-1419,"org.eclipse.equinox.p2.ui.sdk.scheduler",1458293450227
+started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110815-1419,"org.eclipse.equinox.p2.updatechecker",1458293450227
+started,bundle,org.eclipse.equinox.preferences,3.4.2.v20120111-2020,"org.eclipse.equinox.preferences",1458293450228
+started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1458293450228
+started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1458293450228
+started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1458293450228
+started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1458293450229
+started,bundle,org.eclipse.jdt.core,3.7.3.v20120119-1537,"org.eclipse.jdt.core",1458293450229
+started,bundle,org.eclipse.jdt.core.manipulation,1.4.0.v20110928-1453,"org.eclipse.jdt.core.manipulation",1458293450229
+started,bundle,org.eclipse.jdt.ui,3.7.2.v20120109-1427,"org.eclipse.jdt.ui",1458293450231
+started,bundle,org.eclipse.jface,3.7.0.v20110928-1505,"org.eclipse.jface",1458293450231
+started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1458293450231
+started,bundle,org.eclipse.m2e.logback.configuration,1.0.200.20111228-1245,"org.eclipse.m2e.logback.configuration",1458293450232
+started,bundle,org.eclipse.search,3.7.0.v20110928-1504,"org.eclipse.search",1458293450232
+started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1458293450232
+started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1458293450232
+started,bundle,org.eclipse.team.cvs.ui,3.3.401.v20120126-1227,"org.eclipse.team.cvs.ui",1458293450233
+started,bundle,org.eclipse.team.ui,3.6.101.R37x_v20111109-0800,"org.eclipse.team.ui",1458293450233
+started,bundle,org.eclipse.ui,3.7.0.v20110928-1505,"org.eclipse.ui",1458293450234
+started,bundle,org.eclipse.ui.console,3.5.100.v20111007_r372,"org.eclipse.ui.console",1458293450234
+started,bundle,org.eclipse.ui.editors,3.7.0.v20110928-1504,"org.eclipse.ui.editors",1458293450234
+started,bundle,org.eclipse.ui.forms,3.5.101.v20111011-1919,"org.eclipse.ui.forms",1458293450235
+started,bundle,org.eclipse.ui.ide,3.7.0.v20110928-1505,"org.eclipse.ui.ide",1458293450235
+started,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1458293450235
+started,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1458293450235
+started,bundle,org.eclipse.ui.net,1.2.100.v20111208-1155,"org.eclipse.ui.net",1458293450236
+started,bundle,org.eclipse.ui.views,3.6.0.v20110928-1505,"org.eclipse.ui.views",1458293450236
+started,bundle,org.eclipse.ui.views.log,1.0.200.v20110404,"org.eclipse.ui.views.log",1458293450236
+started,bundle,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"org.eclipse.ui.workbench",1458293450237
+started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110928-1504,"org.eclipse.ui.workbench.texteditor",1458293450237
+started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1458293450237
+started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1458293450238
+started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1458293450238
+started,bundle,com.google.gdt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.core",1458293450238
+started,bundle,com.google.gdt.eclipse.designer,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer",1458293450239
+started,bundle,com.google.gdt.eclipse.designer.UiBinder,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer.UiBinder",1458293450239
+started,bundle,com.google.gdt.eclipse.login,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.login",1458293450239
+started,bundle,com.google.gdt.eclipse.managedapis,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.managedapis",1458293450239
+started,bundle,com.google.gdt.eclipse.suite.ext,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite.ext",1458293450240
+started,bundle,org.eclipse.mylyn.bugzilla.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.bugzilla.core",1458293450240
+started,bundle,org.eclipse.mylyn.bugzilla.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.bugzilla.ui",1458293450240
+started,bundle,org.eclipse.mylyn.commons.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.core",1458293450240
+started,bundle,org.eclipse.mylyn.commons.net,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.net",1458293450240
+started,bundle,org.eclipse.mylyn.commons.notifications.core,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.core",1458293450241
+started,bundle,org.eclipse.mylyn.commons.notifications.feed,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.feed",1458293450241
diff --git a/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv
new file mode 100644
index 0000000..39c1689
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv
@@ -0,0 +1,106 @@
+what,kind,bundleId,bundleVersion,description,time
+started,bundle,org.eclipse.mylyn.commons.notifications.ui,1.0.3.v20130107-0100,"org.eclipse.mylyn.commons.notifications.ui",1458293450241
+started,bundle,org.eclipse.mylyn.commons.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.ui",1458293450241
+started,bundle,org.eclipse.mylyn.commons.workbench,3.8.3.v20130107-0100,"org.eclipse.mylyn.commons.workbench",1458293450241
+started,bundle,org.eclipse.mylyn.context.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.context.core",1458293450242
+started,bundle,org.eclipse.mylyn.context.tasks.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.context.tasks.ui",1458293450242
+started,bundle,org.eclipse.mylyn.monitor.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.monitor.ui",1458293450242
+started,bundle,org.eclipse.mylyn.tasks.index.core,3.8.3.v20130107-0100,"org.eclipse.mylyn.tasks.index.core",1458293450242
+started,bundle,org.eclipse.mylyn.tasks.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.tasks.ui",1458293450243
+started,bundle,org.eclipse.mylyn.team.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.team.ui",1458293450243
+started,bundle,org.eclipse.wb.core,1.5.2.r37x201303061457,"org.eclipse.wb.core",1458293450244
+started,bundle,org.eclipse.wb.core.java,1.5.2.r37x201303061505,"org.eclipse.wb.core.java",1458293450244
+started,bundle,org.eclipse.wb.core.lib,1.5.2.r37x201303061457,"org.eclipse.wb.core.lib",1458293450244
+started,bundle,org.eclipse.wb.discovery.core,1.5.2.r37x201303061516,"org.eclipse.wb.discovery.core",1458293450244
+started,bundle,org.eclipse.wb.discovery.ui,1.5.2.r37x201303061516,"org.eclipse.wb.discovery.ui",1458293450244
+started,bundle,org.eclipse.pde.launching,3.6.0.v20110506,"org.eclipse.pde.launching",1458293450245
+started,bundle,org.eclipse.pde.ui,3.6.100.v20120103_r372,"org.eclipse.pde.ui",1458293450245
+os,sysinfo,,,"linux",1458293450247
+arch,sysinfo,,,"x86_64",1458293450247
+ws,sysinfo,,,"gtk",1458293450247
+locale,sysinfo,,,"fr_FR",1458293450247
+processors,sysinfo,,,"4",1458293450248
+java.runtime.name,sysinfo,,,"OpenJDK Runtime Environment",1458293450248
+java.runtime.version,sysinfo,,,"1.7.0_51-mockbuild_2014_01_31_16_21-b00",1458293450248
+java.specification.name,sysinfo,,,"Java Platform API Specification",1458293450248
+java.specification.vendor,sysinfo,,,"Oracle Corporation",1458293450248
+java.specification.version,sysinfo,,,"1.7",1458293450248
+java.vendor,sysinfo,,,"Oracle Corporation",1458293450248
+java.version,sysinfo,,,"1.7.0_51",1458293450248
+java.vm.info,sysinfo,,,"mixed mode",1458293450248
+java.vm.name,sysinfo,,,"OpenJDK 64-Bit Server VM",1458293450248
+java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1458293450248
+java.vm.specification.vendor,sysinfo,,,"Oracle Corporation",1458293450248
+java.vm.specification.version,sysinfo,,,"1.7",1458293450248
+java.vm.vendor,sysinfo,,,"Oracle Corporation",1458293450248
+java.vm.version,sysinfo,,,"24.51-b03",1458293450248
+started,bundle,org.eclipse.m2e.usagedata,1.0.200.20111228-1245,"org.eclipse.m2e.usagedata",1458293450252
+deactivated,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1458293454642
+error,log,,,"An unexpected exception was thrown.",1458293461755
+closed,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1458293461758
+started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1458293461845
+started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1458293461883
+started,bundle,org.eclipse.compare,3.5.202.R37x_v20111109-0800,"org.eclipse.compare",1458293461886
+stopped,bundle,org.eclipse.m2e.logback.configuration,1.0.200.20111228-1245,"org.eclipse.m2e.logback.configuration",1458293462013
+stopped,bundle,org.eclipse.m2e.discovery,1.0.200.20111228-1245,"org.eclipse.m2e.discovery",1458293462014
+stopped,bundle,org.eclipse.m2e.refactoring,1.0.200.20111228-1245,"org.eclipse.m2e.refactoring",1458293462014
+stopped,bundle,org.eclipse.m2e.editor,1.0.200.20111228-1245,"org.eclipse.m2e.editor",1458293462015
+stopped,bundle,org.eclipse.m2e.editor.xml,1.0.200.20111228-1245,"org.eclipse.m2e.editor.xml",1458293462015
+stopped,bundle,com.google.gdt.eclipse.maven.e37,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.maven.e37",1458293462016
+stopped,bundle,org.eclipse.m2e.jdt,1.0.200.20111228-1245,"org.eclipse.m2e.jdt",1458293462016
+stopped,bundle,org.eclipse.m2e.launching,1.0.200.20111228-1245,"org.eclipse.m2e.launching",1458293462016
+stopped,bundle,org.eclipse.m2e.usagedata,1.0.200.20111228-1245,"org.eclipse.m2e.usagedata",1458293462016
+stopped,bundle,org.eclipse.xtend.ide,2.7.2.v201409160908,"org.eclipse.xtend.ide",1458293462017
+stopped,bundle,org.eclipse.xtext.common.types.shared,2.7.2.v201409160908,"org.eclipse.xtext.common.types.shared",1458293462017
+stopped,bundle,org.eclipse.xtext.purexbase.ui,2.7.2.v201409160908,"org.eclipse.xtext.purexbase.ui",1458293462018
+stopped,bundle,org.eclipse.xtend.core,2.7.2.v201409160908,"org.eclipse.xtend.core",1458293462018
+stopped,bundle,org.eclipse.xtext.xbase.ui,2.7.2.v201409160908,"org.eclipse.xtext.xbase.ui",1458293462018
+stopped,bundle,org.eclipse.xtext.xtext.ui,2.7.2.v201409160908,"org.eclipse.xtext.xtext.ui",1458293462019
+stopped,bundle,org.eclipse.pde.ui,3.6.100.v20120103_r372,"org.eclipse.pde.ui",1458293462019
+stopped,bundle,org.eclipse.ui.cheatsheets,3.4.100.v20110425,"org.eclipse.ui.cheatsheets",1458293462019
+stopped,bundle,org.eclipse.help.ui,3.5.101.r37_20110819,"org.eclipse.help.ui",1458293462020
+stopped,bundle,org.eclipse.help.webapp,3.6.1.r37_20110929,"org.eclipse.help.webapp",1458293462020
+stopped,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1458293462020
+stopped,bundle,org.eclipse.epp.usagedata.ui,1.3.1.R201106061540,"org.eclipse.epp.usagedata.ui",1458293462021
+stopped,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1458293462021
+stopped,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1458293462021
+stopped,bundle,org.eclipse.help.base,3.6.2.v201202080800,"org.eclipse.help.base",1458293462021
+stopped,bundle,org.eclipse.equinox.http.jetty,2.0.100.v20110502,"org.eclipse.equinox.http.jetty",1458293462022
+stopped,bundle,com.google.appengine.eclipse.datatools,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.datatools",1458293462022
+stopped,bundle,com.google.appengine.eclipse.webtools,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.webtools",1458293462022
+stopped,bundle,com.google.gdt.eclipse.appengine.swarm_backend,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.swarm_backend",1458293462022
+stopped,bundle,com.google.gdt.eclipse.suite.ext,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite.ext",1458293462023
+stopped,bundle,com.google.gdt.eclipse.appengine.swarm,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.swarm",1458293462023
+stopped,bundle,com.google.gdt.eclipse.appengine.rpc,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appengine.rpc",1458293462023
+stopped,bundle,com.google.gdt.eclipse.gph.e36,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.e36",1458293462023
+stopped,bundle,com.google.gdt.eclipse.gph.hge,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.hge",1458293462024
+stopped,bundle,com.google.gdt.eclipse.gph.subclipse,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.subclipse",1458293462024
+stopped,bundle,com.google.gdt.eclipse.gph.subversive,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph.subversive",1458293462024
+stopped,bundle,com.google.gdt.eclipse.gph,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.gph",1458293462024
+stopped,bundle,com.google.gdt.eclipse.maven,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.maven",1458293462025
+stopped,bundle,com.google.gdt.eclipse.suite,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.suite",1458293462025
+stopped,bundle,com.google.gdt.eclipse.appsmarketplace,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.appsmarketplace",1458293462025
+stopped,bundle,com.google.gdt.eclipse.managedapis,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.managedapis",1458293462025
+stopped,bundle,com.google.appengine.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.appengine.eclipse.core",1458293462026
+stopped,bundle,com.google.gdt.eclipse.login,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.login",1458293462026
+stopped,bundle,com.google.gwt.eclipse.oophm,3.2.2.v201303261859-rel-r37,"com.google.gwt.eclipse.oophm",1458293462026
+stopped,bundle,com.google.gwt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gwt.eclipse.core",1458293462027
+stopped,bundle,com.google.gdt.eclipse.core,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.core",1458293462027
+stopped,bundle,com.google.gdt.eclipse.platform,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.platform",1458293462027
+stopped,bundle,com.google.gdt.eclipse.platform.e37,3.2.2.v201303261859-rel-r37,"com.google.gdt.eclipse.platform.e37",1458293462027
+stopped,bundle,org.eclipse.m2e.core.ui,1.0.200.20111228-1245,"org.eclipse.m2e.core.ui",1458293462028
+stopped,bundle,org.eclipse.m2e.core,1.0.200.20111228-1245,"org.eclipse.m2e.core",1458293462028
+stopped,bundle,org.eclipse.mylyn.ide.ant,3.8.3.v20130107-0100,"org.eclipse.mylyn.ide.ant",1458293462030
+stopped,bundle,org.eclipse.ant.ui,3.5.101.v20120110-1739,"org.eclipse.ant.ui",1458293462032
+stopped,bundle,org.eclipse.ant.launching,1.0.101.v20120110-1739,"org.eclipse.ant.launching",1458293462033
+stopped,bundle,org.eclipse.egit.mylyn.ui,1.3.0.201202151440-r,"org.eclipse.egit.mylyn.ui",1458293462033
+stopped,bundle,org.eclipse.egit.ui,1.3.0.201202151440-r,"org.eclipse.egit.ui",1458293462034
+stopped,bundle,org.eclipse.egit.core,1.3.0.201202151440-r,"org.eclipse.egit.core",1458293462034
+stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110815-1419,"org.eclipse.equinox.p2.ui.sdk",1458293462035
+stopped,bundle,com.google.gdt.eclipse.designer.UiBinder,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer.UiBinder",1458293462035
+stopped,bundle,com.google.gdt.eclipse.designer.gpe,3.1.2.r37x201303061641,"com.google.gdt.eclipse.designer.gpe",1458293462035
+stopped,bundle,com.google.gdt.eclipse.designer,3.1.2.r37x201303061530,"com.google.gdt.eclipse.designer",1458293462035
+stopped,bundle,org.eclipse.mylyn.java.tasks,3.8.3.v20130107-0100,"org.eclipse.mylyn.java.tasks",1458293462036
+stopped,bundle,org.eclipse.mylyn.java.ui,3.8.3.v20130107-0100,"org.eclipse.mylyn.java.ui",1458293462036
+stopped,bundle,org.eclipse.jdt.junit,3.7.0.v20110928-1453,"org.eclipse.jdt.junit",1458293462039
+stopped,bundle,org.eclipse.jdt.apt.ui,3.3.300.v20110305-1450,"org.eclipse.jdt.apt.ui",1458293462040
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
new file mode 100644
index 0000000..593f470
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
new file mode 100644
index 0000000..593f470
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
new file mode 100644
index 0000000..dc803ab
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
new file mode 100644
index 0000000..a4ee3cb
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
new file mode 100644
index 0000000..9e390f5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
new file mode 100644
index 0000000..a3a234a
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.0.200.20111228-1245.xml b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.0.200.20111228-1245.xml
new file mode 100644
index 0000000..e0de515
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.0.200.20111228-1245.xml
@@ -0,0 +1,41 @@
+
+
+
+ %date [%thread] %-5level %logger{35} - %msg%n
+
+
+
+
+
+ ${org.eclipse.m2e.log.dir}/0.log
+
+ ${org.eclipse.m2e.log.dir}/%i.log
+ 1
+ 10
+
+
+ 100MB
+
+
+ %date [%thread] %-5level %logger{35} - %msg%n
+
+
+
+
+
+ WARN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
new file mode 100644
index 0000000..a681a3c
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
@@ -0,0 +1,11 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
new file mode 100644
index 0000000..5ca0b77
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
new file mode 100644
index 0000000..4ac7978
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
new file mode 100644
index 0000000..e86ccac
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_gwt.png b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_gwt.png
new file mode 100644
index 0000000..8f33b6b
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_gwt.png differ
diff --git a/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swing.png b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swing.png
new file mode 100644
index 0000000..3272ee2
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swing.png differ
diff --git a/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swt.png b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swt.png
new file mode 100644
index 0000000..897496a
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_swt.png differ
diff --git a/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_xwt.png b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_xwt.png
new file mode 100644
index 0000000..dc1a68c
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkit_xwt.png differ
diff --git a/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkits.xml b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkits.xml
new file mode 100644
index 0000000..cdb6d00
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.wb.discovery.core/toolkits.xml
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+ This WindowBuilder toolkit allows you to build user interfaces with the Standard Widget Toolkit (SWT) from Eclipse.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This WindowBuilder toolkit allows you to build user interfaces with Java's Swing GUI framework.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This WindowBuilder toolkit allows you to build user interfaces with the XML Windowing Toolkit (XWT) UI framework.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Google Plugin for Eclipse provides support for building projects with the Google Web Toolkit and Google APIs, as well as integration with Google Project Hosting and App Engine.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.metadata/version.ini b/.metadata/version.ini
new file mode 100644
index 0000000..c51ff74
--- /dev/null
+++ b/.metadata/version.ini
@@ -0,0 +1 @@
+org.eclipse.core.runtime=1
\ No newline at end of file
diff --git a/README.md b/README.md
index b9a5675..09bc099 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1 @@
-Routage Opportuniste
-===================
-
-This project is a graphical routing simulator. This project was design for proving that take care about radio conditions can improve **wifi** performance.
-
-
-
-
-Library
--------------
-
-This project was made with **GraphStream** to easily build graphical representation of the network (routers, links and weight).
+# routage-optimiste
diff --git a/main/Main.java b/main/Main.java
index eaa8d41..b2d9243 100644
--- a/main/Main.java
+++ b/main/Main.java
@@ -1,43 +1,60 @@
package main;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.graphstream.graph.Edge;
-import org.graphstream.graph.Graph;
-import org.graphstream.graph.implementations.SingleGraph;
-import org.graphstream.ui.layout.springbox.EdgeSpring;
-import org.graphstream.ui.swingViewer.basicRenderer.EdgeRenderer;
-import org.graphstream.ui.util.EdgePoints;
-
-import structure.Grid;
-import structure.MyGraph;
-import structure.Router;
+import structure.*;
+/**
+ * Main class
+ * @author loic, adama, othmane, saad
+ *
+ */
public class Main {
+ /**
+ * Main
+ * @param args
+ */
public static void main(String[] args) {
- Grid g=new Grid(Grid.Protocol.AODV);
- // Build Graph for graphstream
- MyGraph gr=new MyGraph("Routage Oportuniste", g);
- gr.display();
+ Grid g=new Grid(Grid.Protocol.AODV); // Graph for AODV
+ Grid g2=new Grid(Grid.Protocol.DSDV); // Graph for DSDV
+ Grid g3=new Grid(Grid.Protocol.CUSTOM); // Graph for custom
+
+ MyGraph gD=new MyGraph("AODV", g); // GUI for g
+ MyGraph g2D=new MyGraph("DSDV", g2); // GUI for g2
+ MyGraph g3D=new MyGraph("CUSTOM", g3); // GUI for g3
+ // Display all graph
+ gD.display();
+ g2D.display();
+ g3D.display();
+
// Update Graph
- while(true){
+ for(int i=0;i<20;i++){
+
+ // Sleep
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
+
+ // Change radio conditions
g.buildEdgeWithRandomWeigth();
- System.out.println("Update !");
- gr.update();
+ g2.buildEdgeWithRandomWeigth();
+ g3.buildEdgeWithRandomWeigth();
+
+ // Update graph on GUI
+ gD.update();
+ g2D.update();
+ g3D.update();
+
+ // Display current debMoy for each graph
+ System.out.println("AODV :"+g.getDebitMoy() + " DSDV :"+g2.getDebitMoy()+" CUSTOM :"+g3.getDebitMoy());
+
}
}
+
}
diff --git a/resources/Graph.png b/resources/Graph.png
new file mode 100644
index 0000000..a4adf57
Binary files /dev/null and b/resources/Graph.png differ
diff --git a/resources/screen.png b/resources/screen.png
deleted file mode 100644
index 99da757..0000000
Binary files a/resources/screen.png and /dev/null differ
diff --git a/structure/Grid.java b/structure/Grid.java
index e5db1ef..5f6a1e0 100644
--- a/structure/Grid.java
+++ b/structure/Grid.java
@@ -1,25 +1,26 @@
package structure;
import java.util.*;
-import java.util.Map.Entry;
+/**
+ * Grid structure
+ * @author loic, adama
+ *
+ */
public class Grid {
+ // Define protocole name
public enum Protocol {
AODV, DSDV, CUSTOM
}
private ArrayList routers=new ArrayList<>();
- private ArrayList> links=new ArrayList<>();
-
-
+ public ArrayList> links=new ArrayList<>();
private int bestLink;
private Protocol protocol;
private int counterCUSTOM=5;
- private Random rand = new Random();
- private final int maxWeight=100;
-
-
+ private Random rand = new Random(); // Init rand
+ int debitTotal=0,nbmesure=0; // To compute debit moyen
@@ -33,11 +34,11 @@ public class Grid {
this.routers.add(new Router());
}
-
+
this.buildEdgeWithRandomWeigth();
- this.buildPath();
-
+ //Build fixed link
+ //this.buildPath();
this.protocol=protocol;
@@ -45,10 +46,13 @@ public class Grid {
case AODV:
this.bestLink=this.getBestLinkIndex();
break;
- case DSDV:
case CUSTOM:
+ this.bestLink=this.getBestLinkIndex();
+ break;
+ case DSDV:
+ // Change radio conditions 100 times
HashMap currentBestLink=new HashMap<>();
- for(int i=0;i<100000;i++){
+ for(int i=0;i<100;i++){
int current=this.getBestLinkIndex();
if(currentBestLink.containsKey(current)){
currentBestLink.put(current, currentBestLink.get(current)+1);
@@ -58,8 +62,8 @@ public class Grid {
}
this.buildEdgeWithRandomWeigth();
}
+ // Get Best Link
Set entryTMP = currentBestLink.keySet();
-
int max=currentBestLink.get(entryTMP.iterator().next());
int maxId=0;
entryTMP = currentBestLink.keySet();
@@ -71,12 +75,8 @@ public class Grid {
max=entry;
maxId=entryId;
}
-
- System.out.println("Id : "+ entryId + " max "+ entry);
-
}
this.bestLink=maxId;
- System.out.println("Retenu :"+maxId);
break;
@@ -85,34 +85,45 @@ public class Grid {
}
-
+ /**
+ * Build the 3x3 links with random weight
+ */
public void buildEdgeWithRandomWeigth(){
// First line
- this.buildLinkWithRandomWeight(routers.get(0), routers.get(1));
- this.buildLinkWithRandomWeight(routers.get(1), routers.get(2));
+ this.buildLinkWithRandomWeight(routers.get(0), routers.get(1), 100);
+ this.buildLinkWithRandomWeight(routers.get(1), routers.get(2),100);
// Second line
- this.buildLinkWithRandomWeight(routers.get(3), routers.get(4));
- this.buildLinkWithRandomWeight(routers.get(4), routers.get(5));
+ this.buildLinkWithRandomWeight(routers.get(3), routers.get(4),100);
+ this.buildLinkWithRandomWeight(routers.get(4), routers.get(5),50);
// Third line
- this.buildLinkWithRandomWeight(routers.get(6), routers.get(7));
- this.buildLinkWithRandomWeight(routers.get(7), routers.get(8));
+ this.buildLinkWithRandomWeight(routers.get(6), routers.get(7),100);
+ this.buildLinkWithRandomWeight(routers.get(7), routers.get(8),60);
// First column
- this.buildLinkWithRandomWeight(routers.get(0), routers.get(3));
- this.buildLinkWithRandomWeight(routers.get(3), routers.get(6));
+ this.buildLinkWithRandomWeight(routers.get(0), routers.get(3),80);
+ this.buildLinkWithRandomWeight(routers.get(3), routers.get(6),100);
// Second column
- this.buildLinkWithRandomWeight(routers.get(1), routers.get(4));
- this.buildLinkWithRandomWeight(routers.get(4), routers.get(7));
+ this.buildLinkWithRandomWeight(routers.get(1), routers.get(4),100);
+ this.buildLinkWithRandomWeight(routers.get(4), routers.get(7),10);
// Third column
- this.buildLinkWithRandomWeight(routers.get(2), routers.get(5));
- this.buildLinkWithRandomWeight(routers.get(5), routers.get(8));
+ this.buildLinkWithRandomWeight(routers.get(2), routers.get(5),100);
+ this.buildLinkWithRandomWeight(routers.get(5), routers.get(8),100);
+
+ this.buildPath();
+
+ //System.out.println(this.links.get(this.getBestLinkByProtocol()));
+ this.debitTotal+=this.getMaxBottleneck(this.links.get(this.getBestLinkByProtocol()));
+ this.nbmesure++;
}
+ /**
+ * Build all paths (with chained router id)
+ */
private void buildPath(){
// Link1
@@ -172,12 +183,21 @@ public class Grid {
}
- private void buildLinkWithRandomWeight(Router router1, Router router2){
- router1.buildLink(router2, rand.nextInt(this.maxWeight));
+ /**
+ * Build link with a random weight
+ * @param router1 router 1 to link to router 2
+ * @param router2 router 2 to link to router 1
+ * @param pMoy max weight
+ */
+ private void buildLinkWithRandomWeight(Router router1, Router router2, int pMoy){
+ router1.buildLink(router2, rand.nextInt(pMoy));
}
-
+ /**
+ * Get the best link by bottleneck
+ * @return
+ */
public int getBestLinkIndex(){
int currentBestLink=0;
int currentBestLinkBottleneck=0;
@@ -194,7 +214,12 @@ public class Grid {
}
- private int getMaxBottleneck(ArrayList link){
+ /**
+ * Get the bottleneck of the link
+ * @param link
+ * @return
+ */
+ public int getMaxBottleneck(ArrayList link){
int max=this.getWeigthOfLink(link.get(0), link.get(1));
for(int j=1;j link=this.links.get(i);
@@ -219,13 +252,18 @@ public class Grid {
System.out.print(this.getWeigthOfLink(link.get(j), link.get(j+1)) + " ");
}
System.out.println(" Goulot :"+this.getMaxBottleneck(link));
- //System.out.println();
}
}
-
+ /**
+ * Check if a link is part of an edge
+ * @param link
+ * @param src
+ * @param dest
+ * @return
+ */
public boolean isEdgeOfLink(ArrayListlink, Router src, Router dest){
for(int j=0;j getGrid() {
return routers;
}
-
+ /**
+ * Setter for grid
+ * @param grid
+ */
public void setGrid(ArrayList grid) {
this.routers = grid;
}
-
+ /**
+ * Getter for links
+ * @return
+ */
public ArrayList> getLinks() {
return links;
}
-
+ /**
+ * Setter for links
+ * @param links
+ */
public void setLinks(ArrayList> links) {
this.links = links;
}
@@ -281,11 +331,12 @@ public class Grid {
* @return the bestLinkByProtocol
*/
public int getBestLinkByProtocol() {
+
if(this.protocol==Protocol.CUSTOM){
this.counterCUSTOM--;
if(this.counterCUSTOM==0){
this.bestLink=this.getBestLinkIndex();
- this.counterCUSTOM=5;
+ this.counterCUSTOM=2;
}
}
@@ -293,7 +344,13 @@ public class Grid {
}
-
+ /**
+ * Getter for debitMoy
+ * @return
+ */
+ public int getDebitMoy(){
+ return this.debitTotal/this.nbmesure;
+ }
diff --git a/structure/MyGraph.java b/structure/MyGraph.java
index 1c2dc0f..a5c6f8f 100644
--- a/structure/MyGraph.java
+++ b/structure/MyGraph.java
@@ -2,27 +2,32 @@ package structure;
import java.util.*;
-import org.graphstream.graph.Edge;
-import org.graphstream.graph.Graph;
-import org.graphstream.graph.Node;
+import org.graphstream.graph.*;
import org.graphstream.graph.implementations.SingleGraph;
-import org.graphstream.ui.layout.springbox.EdgeSpring;
-import org.graphstream.ui.swingViewer.basicRenderer.EdgeRenderer;
-import org.graphstream.ui.util.EdgePoints;
+/**
+ * Class for display graph with GraphStream
+ * @author loic, adama
+ *
+ */
public class MyGraph extends SingleGraph{
+ // Grid associate to the graph
private Grid grid;
-
- private int miss=0;
- private int success=0;
-
+
+ /**
+ * Build a graph with a grid
+ *
+ * @param title
+ * @param grid
+ */
public MyGraph(String title, Grid grid) {
super(title);
// Allow CSS on view
System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
+
// Set graph CSS
this.addAttribute("ui.stylesheet", "url('resources/style.css')");
@@ -60,20 +65,13 @@ public class MyGraph extends SingleGraph{
}
-
+ /**
+ * Build edges
+ */
public void buildEdges(){
- /*Iterator edges=this.getEdgeIterator();
- while(edges.hasNext()){
- Edge edge=edges.next();
- this.removeEdge(edge);
- }*/
-
for(Router r : this.grid.getGrid()){
-
String current=r.name;
-
-
HashMap relier=r.getLinks();
Set k=relier.keySet();
Iterator i=k.iterator();
@@ -86,14 +84,14 @@ public class MyGraph extends SingleGraph{
toAdd.setAttribute("ui.label", relier.get(currentRouter));
}
catch(Exception e){
- // System.out.println("Bug de merde.");
- }
-
+ }
}
-
}
}
+ /**
+ * Update best link on screen
+ */
public void showBestLink(){
ArrayList bestLink=this.grid.getLinks().get(this.grid.getBestLinkByProtocol());
for(int i=0;i edges=this.getEdgeIterator();
@@ -143,19 +143,8 @@ public class MyGraph extends SingleGraph{
edge.setAttribute("ui.label", relier.get(currentRouter));
}
}
- }
-
+ }
}
-
- if(this.grid.getBestLinkByProtocol()==this.grid.getBestLinkIndex()){
- this.success++;
- }
- else{
- this.miss++;
- }
- System.out.println("Success = " + this.success + " Miss = " + this.miss + " try number :"+(this.success+this.miss)) ;
-
- //Build bestLink
this.showBestLink();
}
diff --git a/structure/Router.java b/structure/Router.java
index fce5977..3a8d8f9 100644
--- a/structure/Router.java
+++ b/structure/Router.java
@@ -22,7 +22,6 @@ public class Router {
public void buildLink(Router router, int weight){
this.links.remove(router);
router.removeLink(this);
-
this.links.put(router, weight);
router.addLink(this, weight);