- Adjust code to read the Task Repository and fill the R4E-menu
- Adjust the dialogue to have the task properties

Change-Id: I42c8477657a229946a4e13ae534d69e93d60d7d5
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/AddGerritSiteHandler.java b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/AddGerritSiteHandler.java
index 5bdef48..c74126f 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/AddGerritSiteHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/AddGerritSiteHandler.java
@@ -27,7 +27,6 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jgit.lib.Repository;
 import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
 import org.eclipse.mylyn.internal.tasks.ui.wizards.EditRepositoryWizard;
 import org.eclipse.mylyn.reviews.r4e_gerrit.R4EGerritPlugin;
@@ -62,7 +61,7 @@
 
 	private R4EGerritServerUtility fServerUtil = null;
 	
-	private Map<Repository, String> fMapRepoServer = null;
+	private Map<TaskRepository, String> fMapRepoServer = null;
 
 	
 	// ------------------------------------------------------------------------
@@ -91,17 +90,16 @@
 			if (objWidget instanceof MenuItem) {
 				MenuItem menuItem = (MenuItem) objWidget;
 				menuItemText = menuItem.getText();
-//				R4EGerritPlugin.Ftracer.traceInfo("MenuItem: " + menuItemText );
 				R4EGerritPlugin.Ftracer.traceInfo("MenuItem: " + menuItemText + "\t value: " +
 						param.get(menuItemText) + " VS saved: "  + fServerUtil.getLastSavedGerritServer());
 				fMapRepoServer = fServerUtil.getGerritMapping();
 				String stURL = fServerUtil.getMenuSelectionURL(menuItemText);
 				R4EGerritPlugin.Ftracer.traceInfo("URL for the menuItemText: " + stURL);
 				if (!fMapRepoServer.isEmpty()) {
-					Set<Repository> mapSet = fMapRepoServer.keySet();
+					Set<TaskRepository> mapSet = fMapRepoServer.keySet();
 					R4EGerritPlugin.Ftracer.traceInfo("-------------------");
-					for (Repository key: mapSet) {
-						R4EGerritPlugin.Ftracer.traceInfo("Map Key name: " + key.getWorkTree().getName() + "\t URL: " + fMapRepoServer.get(key));
+					for (TaskRepository key: mapSet) {
+						R4EGerritPlugin.Ftracer.traceInfo("Map Key name: " + key.getRepositoryLabel() + "\t URL: " + fMapRepoServer.get(key));
 					}
 				}
 				
@@ -143,15 +141,11 @@
 			public IStatus run(final IProgressMonitor aMonitor) {
 				aMonitor.beginTask(COMMAND_MESSAGE, IProgressMonitor.UNKNOWN);
 						
-//				final TaskRepository repository = getTaskRepository(); 
-				final TaskRepository repository = getTaskRepository(fServerUtil.getLastSavedGerritServer()); 
+				final TaskRepository taskRepository = getTaskRepository(fServerUtil.getLastSavedGerritServer()); 
 				
-				R4EGerritPlugin.Ftracer.traceInfo("repository:   " + repository.getUrl()); //$NON-NLS-1$
-//				int ret = TasksUiUtil.openEditRepositoryWizard(repository); //Generate a null pointer for the workbench window
+				R4EGerritPlugin.Ftracer.traceInfo("repository:   " + taskRepository.getUrl()); //$NON-NLS-1$
 				
-				
-				R4EGerritPlugin.Ftracer.traceInfo("Before: repository:   " + repository.getUrl() ); //$NON-NLS-1$
-				final EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
+				final EditRepositoryWizard wizard = new EditRepositoryWizard(taskRepository);
 				Display.getDefault().syncExec(new Runnable() {
 					public void run() {
 							WizardDialog dialog = new TaskRepositoryWizardDialog(wizard.getShell(), wizard);
@@ -162,13 +156,13 @@
 				});
 				
 				//When the wizard is closed
-				if (repository.getUrl().isEmpty() || 
-						repository.getUrl().endsWith(R4EUIConstants.DEFAULT_REPOSITORY)) {
+				if (taskRepository.getUrl().isEmpty() || 
+						taskRepository.getUrl().endsWith(R4EUIConstants.DEFAULT_REPOSITORY)) {
 					//User selected the Cancel button
 					R4EGerritPlugin.Ftracer.traceInfo("AFTER: repository: CANCEL "  ); //$NON-NLS-1$
 				} else {
 					R4EGerritPlugin.Ftracer.traceInfo("AFTER: repository: :  FINISH " ); //$NON-NLS-1$		
-					fServerUtil.saveLastGerritServer(repository.getUrl());
+					fServerUtil.saveLastGerritServer(taskRepository.getUrl());
 					/*****************************************************/
 					/*                                                   */
 					/*    Now, we need to get the Gerrit repo data       */
@@ -179,8 +173,8 @@
 					fServerUtil.getReviewListFromServer ();
 				}
 				
-				R4EGerritPlugin.Ftracer.traceInfo("AFTER: repository: :  " + repository.getUrl() + 
-						"\n\t repo: " + repository.getRepositoryUrl() ); //$NON-NLS-1$
+				R4EGerritPlugin.Ftracer.traceInfo("AFTER: repository: :  " + taskRepository.getUrl() + 
+						"\n\t repo: " + taskRepository.getRepositoryUrl() ); //$NON-NLS-1$
 				
 
 				aMonitor.done();
@@ -199,28 +193,22 @@
 	 * @param String default URL
 	 * @return TaskRepository
 	 */
-//	private TaskRepository getTaskRepository () {
 	private TaskRepository getTaskRepository (String aUrl) {
 		TaskRepository taskRepo = null;
-		//Begin search for the current Gerrit connector
-//		final RepositoryTemplateManager templateManager = TasksUiPlugin.getRepositoryTemplateManager();
-//		
-//		for (RepositoryTemplate template : templateManager.getTemplates(GerritConnector.CONNECTOR_KIND)) {
-//			R4EGerritPlugin.Ftracer.traceInfo("Gerrit repository: " + template.label + "\t URL: " + template.repositoryUrl);
-//			taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, template.repositoryUrl);
-//			taskRepo.setRepositoryLabel(template.label);
-//		}
-
-
+		//Search for the current Gerrit connector
+		taskRepo =  R4EGerritServerUtility.getDefault().getTaskRepo(aUrl);
+		
 		if (taskRepo == null) {
-			//Create a default Task repo
-//			taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, R4EUIConstants.DEFAULT_REPOSITORY);
 			if (aUrl != null) {
 				taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, aUrl);
 			} else {
+				//Create a default Task repo
 				taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, R4EUIConstants.DEFAULT_REPOSITORY);				
 			}
 			
+		} else {
+			R4EGerritPlugin.Ftracer.traceInfo("Repo already in list:  " + taskRepo.getRepositoryLabel()); 
+			
 		}
 		return taskRepo;
 	}
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/SelectReviewSiteHandler.java b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/SelectReviewSiteHandler.java
index 632cd5c..736f689 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/SelectReviewSiteHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/commands/SelectReviewSiteHandler.java
@@ -26,10 +26,10 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jgit.lib.Repository;
 import org.eclipse.mylyn.reviews.r4e_gerrit.R4EGerritPlugin;
 import org.eclipse.mylyn.reviews.r4e_gerrit.internal.utils.R4EGerritServerUtility;
 import org.eclipse.mylyn.reviews.r4e_gerrit.internal.utils.R4EUIConstants;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.handlers.IHandlerService;
 
@@ -56,7 +56,8 @@
 
 	private R4EGerritServerUtility fServerUtil = null;
 	
-	private Map<Repository, String> fMapRepoServer = null;
+//	private Map<Repository, String> fMapRepoServer = null;
+	private Map<TaskRepository, String> fMapRepoServer = null;
 
 
 	// ------------------------------------------------------------------------
@@ -95,10 +96,13 @@
 				//Debug purpose, see which project have a gerrit server
 				fMapRepoServer = fServerUtil.getGerritMapping();
 				if (!fMapRepoServer.isEmpty()) {
-					Set<Repository> mapSet = fMapRepoServer.keySet();
+					Set<TaskRepository> mapSet = fMapRepoServer.keySet();
 					R4EGerritPlugin.Ftracer.traceInfo("-------------------");
-					for (Repository key: mapSet) {
-						R4EGerritPlugin.Ftracer.traceInfo("Map Key repo name : " + key.getWorkTree().getName() + "\t URL: " + fMapRepoServer.get(key));
+					for (TaskRepository key: mapSet) {
+						R4EGerritPlugin.Ftracer.traceInfo("Map Key repo name : " 
+								+ key.getRepositoryLabel() 
+								+ "\t URL: " 
+								+ fMapRepoServer.get(key));
 					}
 				}
 				//End Debug
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/menus/DynamicMenuAddition.java b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/menus/DynamicMenuAddition.java
index a52fa8e..6e46beb 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/menus/DynamicMenuAddition.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/menus/DynamicMenuAddition.java
@@ -20,10 +20,10 @@
 
 import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jgit.lib.Repository;
 import org.eclipse.mylyn.reviews.r4e_gerrit.R4EGerritPlugin;
 import org.eclipse.mylyn.reviews.r4e_gerrit.internal.utils.R4EGerritServerUtility;
 import org.eclipse.mylyn.reviews.r4e_gerrit.internal.utils.R4EUIConstants;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
 import org.eclipse.ui.actions.CompoundContributionItem;
 import org.eclipse.ui.menus.CommandContributionItem;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
@@ -56,7 +56,7 @@
 	
 	private R4EGerritServerUtility fServer = null;
 	
-	private Map<Repository, String> fMapServer = null;
+	private Map<TaskRepository, String> fMapServer = null;
 	
 	private ImageDescriptor fSelectPicture = null;
 	
@@ -65,37 +65,44 @@
 	// ------------------------------------------------------------------------
 	@Override
 	protected IContributionItem[] getContributionItems() {
-		
-		R4EGerritPlugin.Ftracer.traceInfo("\t\t DynamicMenuAddition .getContributionItems()" );
-		 CommandContributionItem[] contributionItems = new CommandContributionItem[0];
-		 if (fServer != null) {
-			 fMapServer = fServer.getGerritMapping();			 
-		 }
-		 
+
+		R4EGerritPlugin.Ftracer
+				.traceInfo("\t\t DynamicMenuAddition .getContributionItems()");
+		CommandContributionItem[] contributionItems = new CommandContributionItem[0];
+		if (fServer != null) {
+			fMapServer = fServer.getGerritMapping();
+		}
+
 		if (fMapServer != null && !fMapServer.isEmpty()) {
-				Set<Repository> mapSet = fMapServer.keySet();
-				String lastSelected = fServer.getLastSavedGerritServer();
-				R4EGerritPlugin.Ftracer.traceInfo("-------------------");
-				int size = mapSet.size();
-				contributionItems = new CommandContributionItem[size];
+			Set<TaskRepository> mapSet = fMapServer.keySet();
+			String lastSelected = fServer.getLastSavedGerritServer();
+			R4EGerritPlugin.Ftracer.traceInfo("-------------------");
+			int size = mapSet.size();
+			contributionItems = new CommandContributionItem[size];
 
-				int count = 0;
-				for (Repository key: mapSet) {
-					R4EGerritPlugin.Ftracer.traceInfo("Map Key: " + key.getWorkTree().getName() + "\t URL: " + fMapServer.get(key));
-					CommandContributionItemParameter contributionParameter = new CommandContributionItemParameter(fServiceLocator, 
-									fMapServer.get(key), R4EUIConstants.ADD_GERRIT_SITE_COMMAND_ID,  
-									CommandContributionItem.STYLE_PUSH);  
-					contributionParameter.label = key.getWorkTree().getName(); 
-					contributionParameter.visibleEnabled = true; 
-					if (lastSelected != null && lastSelected.equals(fMapServer.get(key)) ) {
-						fSelectPicture = R4EGerritPlugin.getImageDescriptor(SELECT_PICTURE_FILE);
+			int count = 0;
+			for (TaskRepository key : mapSet) {
+				R4EGerritPlugin.Ftracer.traceInfo("Map Key: "
+						+ key.getRepositoryLabel() + "\t URL: "
+						+ fMapServer.get(key));
+				CommandContributionItemParameter contributionParameter = new CommandContributionItemParameter(
+						fServiceLocator, fMapServer.get(key),
+						R4EUIConstants.ADD_GERRIT_SITE_COMMAND_ID,
+						CommandContributionItem.STYLE_PUSH);
+				contributionParameter.label = key.getRepositoryLabel();
+				contributionParameter.visibleEnabled = true;
+				if (lastSelected != null
+						&& lastSelected.equals(fMapServer.get(key))) {
+					fSelectPicture = R4EGerritPlugin
+							.getImageDescriptor(SELECT_PICTURE_FILE);
 
-						contributionParameter.icon = fSelectPicture;
-						
-					}
-					contributionItems[count++] = new CommandContributionItem(contributionParameter) ;
+					contributionParameter.icon = fSelectPicture;
+
 				}
+				contributionItems[count++] = new CommandContributionItem(
+						contributionParameter);
 			}
+		}
 
 		return contributionItems;
 	}
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/utils/R4EGerritServerUtility.java b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/utils/R4EGerritServerUtility.java
index 1996575..1eb9e54 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/utils/R4EGerritServerUtility.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/internal/utils/R4EGerritServerUtility.java
@@ -24,6 +24,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import org.eclipse.core.runtime.IPath;
@@ -33,8 +34,6 @@
 import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
-import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants;
-import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
 import org.eclipse.mylyn.internal.tasks.core.RepositoryTemplateManager;
 import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
 import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
@@ -78,11 +77,9 @@
 	// Variables
 	// ------------------------------------------------------------------------
 
-	private Map<Repository, String> fResult = new HashMap<Repository,String>();
-	
-	private R4EGerritServerUtility instance = null;
+	private static R4EGerritServerUtility instance = null;
 
-	private Map<TaskRepository, String> fResultTask = new HashMap<TaskRepository,String>();
+	private static Map<TaskRepository, String> fResultTask = new HashMap<TaskRepository,String>();
 	
 	
 
@@ -92,31 +89,128 @@
 	public R4EGerritServerUtility() {
 		instance = this;
 		mapConfiguredGerritServer();
+		
+		//LATER: Map the workspace gerrit to the menu option
+		//addWorkspaceGerritRepo();
+		
 		//Begin Test
-		testTaskRepo();
+		//testTaskRepo(); not needed anymore
 		//End Test
 	}
 
 	// ------------------------------------------------------------------------
 	// Methods Private
 	// ------------------------------------------------------------------------
-	private Map<Repository, String> mapConfiguredGerritServer () {
+	
+	/**
+	 * Map the configured Gerrit server found in the TaskList
+	 * @return Map<TaskRepository, String>
+	 */
+	private Map<TaskRepository, String> mapConfiguredGerritServer () {
+		//Reset the list of Gerrit server
+		fResultTask.clear();
+		
+		TaskRepositoryManager repositoryManager = TasksUiPlugin.getRepositoryManager();
+		
+		//Only get the TaskRepository related to Gerrit review connnector
+		R4EGerritPlugin.Ftracer.traceInfo("--------Review repo ---------------");
+		Set<TaskRepository> reviewRepo = repositoryManager.getRepositories(GerritConnector.CONNECTOR_KIND);
+		for (TaskRepository taskRepo: reviewRepo) {
+			R4EGerritPlugin.Ftracer.traceInfo("Only Gerrit Review repo: " + taskRepo.getRepositoryLabel() + "\t url: " + taskRepo.getRepositoryUrl());
+			fResultTask.put(taskRepo, taskRepo.getRepositoryUrl());
+			if (null != taskRepo.getRepositoryUrl()  ) {
+				adjustTemplatemanager(taskRepo);			
+			}
+		}
+		//Print a the end the info for all Gerrit 
+		printRepositoryTemplate();
+		return fResultTask;
+	}
+	
+	/**
+	 * Build a list of Gerrit server to display in the combo box in the dialogue window
+	 * @param aTaskRepo
+	 */
+	private void adjustTemplatemanager (TaskRepository aTaskRepo) {
+		RepositoryTemplateManager templateManager = TasksUiPlugin.getRepositoryTemplateManager();
+		//Verify to only add once in the repository template
+		Boolean found = false;
+	//	printTaskRepository(aTaskRepo);
+		for (RepositoryTemplate template : templateManager.getTemplates(GerritConnector.CONNECTOR_KIND)) {
+			String convertedRemoteURL = aTaskRepo.getRepositoryUrl() ;
+			R4EGerritPlugin.Ftracer.traceInfo("\t template.label: " + template.label
+					+ "\t repo label: " + aTaskRepo.getRepositoryLabel() +" repo getname: " + convertedRemoteURL );
+			//Test the name and the remoteURL to reduce duplications
+			if (template.label.equals(aTaskRepo.getRepositoryLabel()) ||
+			    template.repositoryUrl.equals(convertedRemoteURL) ) {
+				found = true;
+				break;
+			}
+		}
+		
+		if (!found) {
+			//Set each parameter of the Gerrit server
+			String userName = aTaskRepo.getUserName();
+			Boolean anonymous = (userName != null &&  !userName.isEmpty()) ? false: true;
+			
+			//Create a repository template
+			RepositoryTemplate templateTest = new RepositoryTemplate(aTaskRepo.getRepositoryLabel(), 
+					aTaskRepo.getRepositoryUrl(),
+					aTaskRepo.getCharacterEncoding(),
+					aTaskRepo.getVersion(),
+					"", "", "", 
+					aTaskRepo.getUserName(), anonymous, true);
+			
+			//Set the attributes 
+			Map<String, String> attributes = aTaskRepo.getProperties();
+			
+			Set<Entry<String, String>> value = attributes.entrySet();
+			for ( Map.Entry <String, String> entry: value){
+				templateTest.addAttribute(entry.getKey(), entry.getValue());
+			}
+			templateManager.addTemplate(GerritConnector.CONNECTOR_KIND, templateTest);
+			
+		}
+	}
+	
+	private void printRepositoryTemplate() {
+		RepositoryTemplateManager templateManager = TasksUiPlugin.getRepositoryTemplateManager();
+		for (RepositoryTemplate template : templateManager.getTemplates(GerritConnector.CONNECTOR_KIND)) {
+			R4EGerritPlugin.Ftracer.traceInfo("------------======================------------------");
+			 Set<Entry<String, String>> value = template.getAttributes().entrySet();
+			for (Map.Entry <String, String> entry: value) {
+				R4EGerritPlugin.Ftracer.traceInfo("key: " + entry.getKey() + "\tvalue: " +
+						entry.getValue());
+			}
+		}
+	}
+
+	private void printTaskRepository(TaskRepository aTask) {
+		Set<Entry<String, String>> value = aTask.getProperties().entrySet();
+		for (Map.Entry<String, String> entry : value) {
+			R4EGerritPlugin.Ftracer.traceInfo("TaskRepo key: " + entry.getKey()
+					+ "\tvalue: " + entry.getValue());
+		}
+		R4EGerritPlugin.Ftracer.traceInfo(" UserName: " + aTask.getUserName());
+		R4EGerritPlugin.Ftracer
+				.traceInfo("===================================");
+	}
+
+	/**
+	 * This method use the Gerrit from the git server in the workspace
+	 */
+	private void addWorkspaceGerritRepo () {
 		RepositoryUtil repoUtil = org.eclipse.egit.core.Activator.getDefault().getRepositoryUtil();
 		List<String> repoPaths = repoUtil.getConfiguredRepositories();
 		RepositoryCache repositoryCache = org.eclipse.egit.core.Activator.getDefault().getRepositoryCache();
 		Repository repo = null;
-		RepositoryTemplateManager templateManager = TasksUiPlugin.getRepositoryTemplateManager();
 		
-		//Reset the list of Gerrit server
-		fResult.clear();
-
 		for (String repoPath : repoPaths) {
 			R4EGerritPlugin.Ftracer.traceInfo("List Gerrit repository: " + repoPath );
 			File gitDir = new File(repoPath);
 			if (!gitDir.exists()) {
 				R4EGerritPlugin.Ftracer.traceInfo("Gerrit repository do not exist: " + gitDir.getPath());
-				continue;
-			
+				continue;		
 			}
 			try {
 				repo = repositoryCache.lookupRepository(gitDir);
@@ -127,6 +221,7 @@
 			}
 			if (repo != null) {
 				Config config  = new Config(repo.getConfig());
+				//Look to get the remotes URL
 				Set<String> remotes = config.getSubsections(ConfigConstants.CONFIG_REMOTE_SECTION);
 				for (String remote: remotes) {
 					String remoteURL = config.getString(ConfigConstants.CONFIG_REMOTE_SECTION,
@@ -134,40 +229,21 @@
 							ConfigConstants.CONFIG_KEY_URL);
 					R4EGerritPlugin.Ftracer.traceInfo("\t\t " + remote +" -> remoteURL: " + remoteURL );
 					
-					//Test if this is a Gerrit server and add it to the Dialogue cmbo
+					//Test if this is a Gerrit server and add it to the Dialogue combo
 					String convertedRemoteURL = getReformatGerritServer(remoteURL) ;
 					if (null != convertedRemoteURL  ) {
-						fResult.put(repo, convertedRemoteURL);
-						//Test Begin
-						//Verify to only add once
-						Boolean found = false;
-						for (RepositoryTemplate template : templateManager.getTemplates(GerritConnector.CONNECTOR_KIND)) {
-							R4EGerritPlugin.Ftracer.traceInfo("\t template.label: " + template.label
-									+" repo getname: " + repo.getWorkTree().getName() );
-							//Test the name and the remoteURL to reduce duplications
-							if (template.label.equals(repo.getWorkTree().getName()) ||
-							    template.repositoryUrl.equals(remoteURL) ) {
-								found = true;
-								break;
-							}
-						}
+						TaskRepository taskRepo =  new TaskRepository(GerritConnector.CONNECTOR_KIND, convertedRemoteURL);
+						taskRepo.setRepositoryLabel(convertedRemoteURL);
+						fResultTask.put(taskRepo, taskRepo.getRepositoryUrl());
+						adjustTemplatemanager(taskRepo);
 						
-						if (!found) {
-							RepositoryTemplate templateTest = new RepositoryTemplate(repo.getWorkTree().getName(), convertedRemoteURL,
-									"", "", "", "", "", "", false, true);
-							templateManager.addTemplate(GerritConnector.CONNECTOR_KIND, templateTest);
-							
-						}
-						//Test END
-
 					}
 				}			
 			}
 		}
-
-		return fResult;
 	}
 	
+
 	//Note the Gerrit server for "git.eclipse.org" in config is 
 	//      not the same as in the task Repository: "git.eclipse.org/r"
 	/**
@@ -203,7 +279,7 @@
 	// ------------------------------------------------------------------------
 	// Methods Public
 	// ------------------------------------------------------------------------
-	public R4EGerritServerUtility getDefault () {
+	public static R4EGerritServerUtility getDefault () {
 		if (instance == null) {
 			new R4EGerritServerUtility();
 		}
@@ -214,8 +290,8 @@
 	 * Return the mapping of the available Gerrit server used in the user workspace
 	 * @return Map<Repository, String>
 	 */
-	public Map<Repository, String> getGerritMapping () {
-		return fResult;
+	public static Map<TaskRepository, String> getGerritMapping () {
+		return fResultTask;
 	}
 	
 	/**
@@ -269,14 +345,14 @@
 	 */
 	public String getMenuSelectionURL (String aSt) {
 		String urlStr = null;
-		if (!fResult.isEmpty()) {
-			Set<Repository> mapSet = fResult.keySet();
+		if (!fResultTask.isEmpty()) {
+			Set<TaskRepository> mapSet = fResultTask.keySet();
 			R4EGerritPlugin.Ftracer.traceInfo("-------------------");
-			for (Repository key: mapSet) {
-				if (key.getWorkTree().getName().equals(aSt)) {
-					urlStr = fResult.get(key);
+			for (TaskRepository key: mapSet) {
+				if (key.getRepositoryLabel().equals(aSt)) {
+					urlStr = fResultTask.get(key);
 					
-					R4EGerritPlugin.Ftracer.traceInfo("Map Key: " + key.getWorkTree().getName() + "\t URL: " + fResult.get(key));
+					R4EGerritPlugin.Ftracer.traceInfo("Map Key: " + key.getRepositoryLabel() + "\t URL: " + fResultTask.get(key));
 					return urlStr;
 				}
 			}
@@ -286,6 +362,30 @@
 	}
 
 	/**
+	 * Get the Gerrit task Repository
+	 * 
+	 * @param  string aSt
+	 * @return TaskRepository
+	 * 
+	 */
+	public TaskRepository getTaskRepo (String aStURL) {
+		
+		if (aStURL != null && !fResultTask.isEmpty()) {
+			Set<TaskRepository> mapSet = fResultTask.keySet();
+			R4EGerritPlugin.Ftracer.traceInfo("-------------------");
+			for (TaskRepository key: mapSet) {
+				if (key.getRepositoryUrl().equals(aStURL)) {
+					
+					R4EGerritPlugin.Ftracer.traceInfo("Key label : " + key.getRepositoryLabel() + "\t URL: " + fResultTask.get(key));
+					return key;
+				}
+			}
+		}
+		
+		return null;
+	}
+
+	/**
 	 * Read the Gerrit server to populate the list of reviews
 	 */
 	public void getReviewListFromServer () {
@@ -339,28 +439,7 @@
 		//Reset the list of Gerrit server
 		fResultTask.clear();
 
-		//Begin search for the current Gerrit connector
-		final RepositoryTemplateManager templateManager = TasksUiPlugin.getRepositoryTemplateManager();
-		
-		for (RepositoryTemplate template : templateManager.getTemplates(GerritConnector.CONNECTOR_KIND)) {
-			R4EGerritPlugin.Ftracer.traceInfo("Gerrit repository: " + template.label + "\t URL: " + template.repositoryUrl);
-			taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, template.repositoryUrl);
-			taskRepo.setRepositoryLabel(template.label);
-			fResultTask.put(taskRepo, template.repositoryUrl);
-//			//Test Begin
-//			RepositoryTemplate templateTest = new RepositoryTemplate(template.label, template.repositoryUrl,
-//					"", "", "", "", "", "", false, true);
-//			templateManager.addTemplate(GerritConnector.CONNECTOR_KIND, templateTest);
-//			//Test END
-		}
 
-
-		if (taskRepo == null) {
-			//Create a default Task repo
-			taskRepo = new TaskRepository (GerritConnector.CONNECTOR_KIND, DEFAULT_REPOSITORY);
-			
-		}
-		
 		//Test to read the TaskRepositories
 		
 		TaskRepositoryManager repositoryManager = TasksUiPlugin.getRepositoryManager();