[jboss-svn-commits] JBL Code SVN: r33499 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools: guvnor/client/explorer/grid/model and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 14 17:36:01 EDT 2010


Author: diegoll
Date: 2010-06-14 17:36:00 -0400 (Mon, 14 Jun 2010)
New Revision: 33499

Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/BrowseGridResourcesTreeBuilder.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/GridTopologyView.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/TaskServerInstanceView.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/panels/NewGridResourcePanel.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsServiceAsync.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.ui.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/repository/services/TopologyAssetsServiceImpl.java
Log:
added remove button
added support for adding task server instances

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/BrowseGridResourcesTreeBuilder.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/BrowseGridResourcesTreeBuilder.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/BrowseGridResourcesTreeBuilder.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -4,6 +4,7 @@
 import org.drools.guvnor.client.explorer.grid.model.DirectoryInstanceView;
 import org.drools.guvnor.client.explorer.grid.model.ExecutionEnvironmentView;
 import org.drools.guvnor.client.explorer.grid.model.GridTopologyView;
+import org.drools.guvnor.client.explorer.grid.model.TaskServerInstanceView;
 import org.drools.guvnor.client.explorer.grid.panels.ExecutionEnvironmentPanel;
 import org.drools.guvnor.client.explorer.grid.panels.NewGridResourcePanel;
 
@@ -58,6 +59,13 @@
 		resourcesItem.appendChild(environmentNode);
 	}
 
+	protected void addTaskServerInstanceNode(
+			ExplorerViewCenterPanel targetPanel, TreeNode resourcesItem,
+			GridTopologyView gridTopology,
+			TaskServerInstanceView taskServerInstance) {
+    	resourcesItem.appendChild(new TreeNode("task server - " + taskServerInstance.getName()));
+	}
+
     private void openCreateNewGridResourcePanel(final ExplorerViewCenterPanel targetPanel, final TreeNode resourcesItem, final GridTopologyView gridTopology) {
         if (!targetPanel.showIfOpen(gridTopology.getName())) {
             targetPanel.addTab("New Resource", true, new NewGridResourcePanel(gridTopology) {
@@ -70,6 +78,11 @@
 				public void onDirectoryInstanceCreation(DirectoryInstanceView directoryInstance) {
 					addDirectoryInstanceNode(targetPanel, resourcesItem, gridTopology, directoryInstance);
 				}
+
+				@Override
+				public void onTaskServerInstanceCreation(TaskServerInstanceView taskServerInstance) {
+					addTaskServerInstanceNode(targetPanel, resourcesItem, gridTopology, taskServerInstance);
+				}
 			}, gridTopology.getName());
         }
     }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/GridTopologyView.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/GridTopologyView.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/GridTopologyView.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -2,6 +2,7 @@
 
 import java.io.Serializable;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -29,27 +30,33 @@
 	}
 
 	public Collection<ExecutionEnvironmentView> getExecutionEnvironments() {
-		return executionEnvironments.values();
+		return Collections.unmodifiableCollection(executionEnvironments.values());
 	}
 	
 	public Collection<DirectoryInstanceView> getDirectoryInstances() {
-		return directoryInstances.values();
+		return Collections.unmodifiableCollection(directoryInstances.values());
 	}
 	
 	public Collection<TaskServerInstanceView> getTaskServers(){
-		return taskServerInstances.values();
+		return Collections.unmodifiableCollection(taskServerInstances.values());
 	}
 
 	public void addExecutionEnvironment(ExecutionEnvironmentView newExecutionEnvironment) {
-		executionEnvironments.put(newExecutionEnvironment.getName(), newExecutionEnvironment);
+		String newGridResourceName = newExecutionEnvironment.getName();
+		checkUniqueName(newGridResourceName, directoryInstances, taskServerInstances);
+		executionEnvironments.put(newGridResourceName, newExecutionEnvironment);
 	}
 	
 	public void addDirectoryInstance(DirectoryInstanceView newDirectoryInstance){
-		directoryInstances.put(newDirectoryInstance.getName(), newDirectoryInstance);
+		String newGridResourceName = newDirectoryInstance.getName();
+		checkUniqueName(newGridResourceName, executionEnvironments, taskServerInstances);
+		directoryInstances.put(newGridResourceName, newDirectoryInstance);
 	}
 	
 	public void addTaskServerInstance(TaskServerInstanceView newTaskServerInstance){
-		taskServerInstances.put(newTaskServerInstance.getName(), newTaskServerInstance);
+		String newGridResourceName = newTaskServerInstance.getName();
+		checkUniqueName(newGridResourceName, executionEnvironments, directoryInstances);
+		taskServerInstances.put(newGridResourceName, newTaskServerInstance);
 	}
 	
 	public ExecutionEnvironmentView getExecutionEnvironment(String name){
@@ -63,4 +70,17 @@
 	public TaskServerInstanceView getTaskServerInstance(String name) {
 		return taskServerInstances.get(name);
 	}
+	
+	public void removeResource(String name){
+		boolean removed = executionEnvironments.remove(name) != null;
+		removed |=  directoryInstances.remove(name) != null;
+		removed |= taskServerInstances.remove(name) != null;
+	}
+
+	private void checkUniqueName(String newGridResourceName, 
+			Map<String, ? extends GridResourceView> firstResources, 
+			Map<String, ? extends GridResourceView> secondResources) {
+		if(null != firstResources.get(newGridResourceName) || null != secondResources.get(newGridResourceName))
+			throw new IllegalArgumentException("Existing resource with name: " + newGridResourceName);
+	}
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/TaskServerInstanceView.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/TaskServerInstanceView.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/model/TaskServerInstanceView.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -1,5 +1,13 @@
 package org.drools.guvnor.client.explorer.grid.model;
 
 public class TaskServerInstanceView extends GridResourceView {
+	
+	public TaskServerInstanceView() {
+		super();
+	}
 
+	public TaskServerInstanceView(String name, GenericProviderView provider) {
+		super(name, provider);
+	}
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/panels/NewGridResourcePanel.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/panels/NewGridResourcePanel.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/panels/NewGridResourcePanel.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -5,6 +5,7 @@
 import org.drools.guvnor.client.explorer.grid.model.ExecutionEnvironmentView;
 import org.drools.guvnor.client.explorer.grid.model.GenericProviderView;
 import org.drools.guvnor.client.explorer.grid.model.GridTopologyView;
+import org.drools.guvnor.client.explorer.grid.model.TaskServerInstanceView;
 import org.drools.guvnor.client.explorer.grid.services.TopologyAssetsService;
 import org.drools.guvnor.client.explorer.grid.services.TopologyAssetsServiceAsync;
 
@@ -27,6 +28,7 @@
 	private TopologyAssetsServiceAsync assetService;
 	private Button addEnvironmentAction;
 	private Button addDirectoryAction;
+	private Button addTaskServerAction;
 
 	public NewGridResourcePanel(final GridTopologyView gridTopology) {
 
@@ -65,7 +67,23 @@
 				});
 			}
 		});
+		
+		addTaskServerAction = new Button("Add as Task Server");
+		addTaskServerAction.addClickHandler(new ClickHandler() {
+			public void onClick(ClickEvent event) {
+				GenericProviderView gridProvider = getGenericProvider(factoryPanel);
+				getService().createTaskServerInstance(resourceName.getText(), gridProvider, gridTopology, new GenericCallback<TaskServerInstanceView>() {
+					public void onSuccess(TaskServerInstanceView taskServerInstance) {
+						//GWT parameters on server call are passed by copy, so I have to manually add the
+						//directoryInstance to the topology
+						gridTopology.addTaskServerInstance(taskServerInstance);
+						onTaskServerInstanceCreation(taskServerInstance);
+					}
+				});
+			}
+		});
 
+
 		enableButtons(false);
 		
         final ListBox optionProviders = getFactoryOptions(factoryPanel);
@@ -75,6 +93,7 @@
 		panel.add(factoryPanel);
 		panel.add(addEnvironmentAction);
 		panel.add(addDirectoryAction);
+		panel.add(addTaskServerAction);
 	
 		initWidget(panel);
 	}
@@ -112,11 +131,13 @@
 	
 	private void enableButtons(boolean enabled){
 		addEnvironmentAction.setEnabled(enabled);
-		addEnvironmentAction.setEnabled(enabled);
+		addDirectoryAction.setEnabled(enabled);
+		addTaskServerAction.setEnabled(enabled);
 	}
 
 	public abstract void onExecutionEnvironmentCreation(ExecutionEnvironmentView executionEnvironment);
 	public abstract void onDirectoryInstanceCreation(DirectoryInstanceView directoryInstance);
+	public abstract void onTaskServerInstanceCreation(TaskServerInstanceView taskServerInstance);
 	
     private enum GridProviders {
         MINA("Mina provider") {

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsService.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsService.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -1,17 +1,15 @@
 package org.drools.guvnor.client.explorer.grid.services;
 
-import org.drools.grid.services.GridResource;
 import org.drools.grid.services.GridTopology;
 import org.drools.guvnor.client.explorer.grid.model.DirectoryInstanceView;
 import org.drools.guvnor.client.explorer.grid.model.ExecutionEnvironmentView;
 import org.drools.guvnor.client.explorer.grid.model.GenericProviderView;
 import org.drools.guvnor.client.explorer.grid.model.GridResourceInfo;
-import org.drools.guvnor.client.explorer.grid.model.GridResourceView;
 import org.drools.guvnor.client.explorer.grid.model.GridTopologyView;
+import org.drools.guvnor.client.explorer.grid.model.TaskServerInstanceView;
 
 import com.google.gwt.user.client.rpc.RemoteService;
 import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
-import com.gwtext.client.widgets.grid.GridPanel;
 
 @RemoteServiceRelativePath("topologyService")
 public interface TopologyAssetsService extends RemoteService {
@@ -35,7 +33,17 @@
 	 * @return a new {@link DirectoryInstanceView} already added to a topology
 	 */
 	DirectoryInstanceView createDirectoryInstance(String name, GenericProviderView provider, GridTopologyView gridTopology);
+	
+	/**
+	 * Creates a new {@link TaskServerInstanceView} and adds it to the {@link GridTopologyView} parameter
+	 * @param name of the new {@link TaskServerInstanceView}
+	 * @param provider is the {@link GenericProviderView} which will be registered in the {@link TaskServerInstanceView}
+	 * @param gridTopology is the topology where the newly {@link TaskServerInstanceView} will be added
+	 * @return a new {@link TaskServerInstanceView} already added to a topology
+	 */
+	TaskServerInstanceView createTaskServerInstance(String name, GenericProviderView provider, GridTopologyView gridTopology);
 
+
 	/**
 	 * Queries the status of the {@link ExecutionEnvironmentView} inside the {@link GridTopology}
 	 * @param topology the data needed to create the {@link GridTopology}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsServiceAsync.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsServiceAsync.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/grid/services/TopologyAssetsServiceAsync.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -4,8 +4,8 @@
 import org.drools.guvnor.client.explorer.grid.model.ExecutionEnvironmentView;
 import org.drools.guvnor.client.explorer.grid.model.GenericProviderView;
 import org.drools.guvnor.client.explorer.grid.model.GridResourceInfo;
-import org.drools.guvnor.client.explorer.grid.model.GridResourceView;
 import org.drools.guvnor.client.explorer.grid.model.GridTopologyView;
+import org.drools.guvnor.client.explorer.grid.model.TaskServerInstanceView;
 
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
@@ -26,4 +26,8 @@
 			ExecutionEnvironmentView executionEnvironment,
 			AsyncCallback<GridResourceInfo> callback);
 
+	void createTaskServerInstance(String name, GenericProviderView provider,
+			GridTopologyView gridTopology,
+			AsyncCallback<TaskServerInstanceView> callback);
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -42,18 +42,17 @@
 	private OptGroupElement directoryInstances;
 	private OptGroupElement taskServers;
 	@UiField Button addResourceAction;
+	@UiField Button removeResourceAction;
 	@UiField Label topologyName;
 	@UiField Panel gridResourcePanel;
 	@UiField ListBox gridResources;
 
-
 	public TopologyEditor(RuleAsset asset) {
 		gridTopology = (GridTopologyView) asset.content;
 		gridTopology.setName(asset.metaData.name);
 		initWidget(uiBinder.createAndBindUi(this));
 		setI18NContent();
 		topologyName.setText(asset.metaData.name);
-		addResourceAction.setText("Create new resource");
 		
 		initGridResourcesList();
 	}
@@ -103,7 +102,7 @@
 	}
 
 	@UiHandler("addResourceAction")
-	void onClick(ClickEvent e) {
+	void onAddResourceActionClick(ClickEvent e) {
 		final DialogBox popup = new DialogBox(true, true);
 		popup.setGlassEnabled(true);
 		popup.setWidget(new NewGridResourcePanel(gridTopology) {
@@ -119,15 +118,31 @@
 				addElement(directoryInstances, directoryInstance);
 				popup.hide();
 			}
+
+			@Override
+			public void onTaskServerInstanceCreation(TaskServerInstanceView taskServerInstance) {
+				addElement(taskServers, taskServerInstance);
+				popup.hide();
+			}
 		});
 		popup.center();
 		popup.show();
 	}
+	
+	@UiHandler("removeResourceAction")
+	void onRemoveResourceActionClick(ClickEvent e){
+		int selectedIndex = gridResources.getSelectedIndex();
+		String selectedResourceName = gridResources.getItemText(selectedIndex);
+		gridTopology.removeResource(selectedResourceName);
+		gridResources.removeItem(selectedIndex);
+		removeResourceAction.setEnabled(gridResources.getItemCount() != 0);
+	}
 
 	private void addElement(OptGroupElement optGroup, GridResourceView gridResource) {
 		OptionElement optElement = Document.get().createOptionElement(); 
 		optElement.setInnerText(gridResource.getName());
 		optGroup.appendChild(optElement);
+		removeResourceAction.setEnabled(true);
 	}
 	
 	@UiField SpanElement topologyNameLabel;
@@ -135,5 +150,7 @@
 	private void setI18NContent() {
 		topologyNameLabel.setInnerText("Topology name: ");
 		executionEnvironmentsLabel.setText("Resources:");
+		addResourceAction.setText("Create new resource");
+		removeResourceAction.setText("Remove resource");
 	}
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.ui.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.ui.xml	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/guvnor/client/grid/TopologyEditor.ui.xml	2010-06-14 21:36:00 UTC (rev 33499)
@@ -20,6 +20,7 @@
 			<g:VerticalPanel>
 				<g:Label ui:field="executionEnvironmentsLabel"/>
 				<g:ListBox ui:field="gridResources" visibleItemCount="10"/>
+				<g:Button ui:field="removeResourceAction" enabled="false"/>
 			</g:VerticalPanel>
 		</g:VerticalPanel>
 		<g:SimplePanel ui:field="gridResourcePanel"/>

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/repository/services/TopologyAssetsServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/repository/services/TopologyAssetsServiceImpl.java	2010-06-14 21:34:27 UTC (rev 33498)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-guvnor/src/main/java/org/drools/repository/services/TopologyAssetsServiceImpl.java	2010-06-14 21:36:00 UTC (rev 33499)
@@ -11,6 +11,7 @@
 import org.drools.guvnor.client.explorer.grid.model.GenericProviderView;
 import org.drools.guvnor.client.explorer.grid.model.GridResourceInfo;
 import org.drools.guvnor.client.explorer.grid.model.GridTopologyView;
+import org.drools.guvnor.client.explorer.grid.model.TaskServerInstanceView;
 import org.drools.guvnor.client.explorer.grid.model.GridResourceInfo.Status;
 import org.drools.guvnor.client.explorer.grid.services.TopologyAssetsService;
 import org.drools.repository.services.factories.GenericProviderFactory;
@@ -36,6 +37,12 @@
 		return newDirectoryInstance;
 	}
 
+	public TaskServerInstanceView createTaskServerInstance(String name, GenericProviderView provider, GridTopologyView gridTopology) {
+		TaskServerInstanceView newTaskServerInstance = new TaskServerInstanceView(name, provider);
+		gridTopology.addTaskServerInstance(newTaskServerInstance);
+		return newTaskServerInstance;
+	}
+	
 	public GridResourceInfo queryExecutionEnvironmentInfo(
 			GridTopologyView topology,
 			ExecutionEnvironmentView executionEnvironment) {



More information about the jboss-svn-commits mailing list