[jboss-svn-commits] JBL Code SVN: r35958 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/explorer and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 12 08:54:38 EST 2010
Author: ge0ffrey
Date: 2010-11-12 08:54:37 -0500 (Fri, 12 Nov 2010)
New Revision: 35958
Added:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRequest.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageResponse.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRow.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/AssetTable.java
Modified:
labs/jbossrules/trunk/drools-docs/drools-docs-guvnor/src/main/docbook/en-US/Chapter-Guvnor/Section-AdminGuide.xml
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
Log:
GUVNOR-804 + GUVNOR-686: grid based on celltable prototype
Modified: labs/jbossrules/trunk/drools-docs/drools-docs-guvnor/src/main/docbook/en-US/Chapter-Guvnor/Section-AdminGuide.xml
===================================================================
--- labs/jbossrules/trunk/drools-docs/drools-docs-guvnor/src/main/docbook/en-US/Chapter-Guvnor/Section-AdminGuide.xml 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-docs/drools-docs-guvnor/src/main/docbook/en-US/Chapter-Guvnor/Section-AdminGuide.xml 2010-11-12 13:54:37 UTC (rev 35958)
@@ -417,16 +417,6 @@
</section>
<section>
- <title>Asset list customization</title>
-
- <para>In a few places in Guvnor there is an asset list: this list can be
- customized by looking for the AssetListTable.properties file. You can
- then set the header names and the "getter" methods that are used to
- populate the columns. eg you could add in getCreator, or
- getExternalSource as extra fields if you were using them.</para>
- </section>
-
- <section>
<title>Selectors for package building</title>
<para>When building packages (from the "Packages" feature) you have the
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesTree.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -16,6 +16,7 @@
package org.drools.guvnor.client.explorer;
+import java.util.Arrays;
import java.util.Map;
import org.drools.guvnor.client.common.GenericCallback;
@@ -207,7 +208,7 @@
opener.openPackageViewAssets( packageConfigData.uuid,
packageConfigData.name,
key,
- formats,
+ Arrays.asList(formats),
node.getText() );
} else {
throw new IllegalArgumentException("The userObject (" + userObject + ") is not supported.");
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRequest.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRequest.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.guvnor.client.rpc;
+
+import java.util.List;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * The request which contains filter properties, paging properties, etc.
+ * @see AssetPageResponse
+ * @author Geoffrey De Smet
+ */
+public class AssetPageRequest
+ implements IsSerializable {
+
+ // Filter properties: null properties are ignored for filtering
+ private String packageUuid = null;
+ private List<String> formatInList = null;
+ private Boolean formatIsRegistered = null;
+
+ private int startRowIndex = 0;
+ private Integer pageSize = null; // null returns all pages
+
+ // ************************************************************************
+ // Getters and setters
+ // ************************************************************************
+
+ public String getPackageUuid() {
+ return packageUuid;
+ }
+
+ public void setPackageUuid(String packageUuid) {
+ this.packageUuid = packageUuid;
+ }
+
+ public List<String> getFormatInList() {
+ return formatInList;
+ }
+
+ public void setFormatInList(List<String> formatInList) {
+ this.formatInList = formatInList;
+ }
+
+ public Boolean getFormatIsRegistered() {
+ return formatIsRegistered;
+ }
+
+ public void setFormatIsRegistered(Boolean formatIsRegistered) {
+ this.formatIsRegistered = formatIsRegistered;
+ }
+
+ public int getStartRowIndex() {
+ return startRowIndex;
+ }
+
+ public void setStartRowIndex(int startRowIndex) {
+ this.startRowIndex = startRowIndex;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageResponse.java (from rev 35862, labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/TableDataResult.java)
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageResponse.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageResponse.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.guvnor.client.rpc;
+
+import java.util.List;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * A page of an assets table, contains a list of asset summaries/headers.
+ * @see AssetPageRequest
+ * @author Geoffrey De Smet
+ */
+public class AssetPageResponse
+ implements IsSerializable {
+
+ private int totalRowSize;
+ private int startRowIndex;
+ private List<AssetPageRow> assetPageRowList;
+ private boolean lastPage;
+
+ public boolean isFirstPage() {
+ return startRowIndex == 0L;
+ }
+
+ // ************************************************************************
+ // Getters and setters
+ // ************************************************************************
+
+ public int getTotalRowSize() {
+ return totalRowSize;
+ }
+
+ public void setTotalRowSize(int totalRowSize) {
+ this.totalRowSize = totalRowSize;
+ }
+
+ public int getStartRowIndex() {
+ return startRowIndex;
+ }
+
+ public void setStartRowIndex(int startRowIndex) {
+ this.startRowIndex = startRowIndex;
+ }
+
+ public List<AssetPageRow> getAssetPageRowList() {
+ return assetPageRowList;
+ }
+
+ public void setAssetPageRowList(List<AssetPageRow> assetPageRowList) {
+ this.assetPageRowList = assetPageRowList;
+ }
+
+ public boolean isLastPage() {
+ return lastPage;
+ }
+
+ public void setLastPage(boolean lastPage) {
+ this.lastPage = lastPage;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageResponse.java
___________________________________________________________________
Name: svn:eol-style
+ native
Copied: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRow.java (from rev 35862, labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/TableDataRow.java)
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRow.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRow.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.guvnor.client.rpc;
+
+import java.util.Date;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * A single row of a page of an assets table. This is an asset summary/header.
+ * @author Geoffrey De Smet
+ */
+public class AssetPageRow
+ implements IsSerializable, Comparable<AssetPageRow> {
+
+ private String uuid;
+ private String format; // TODO should be an enum
+ private String packageName;
+ private String name;
+ private String description;
+ private String stateName;
+ private String creator;
+ private Date createdDate;
+ private String lastContributor;
+ private Date lastModified;
+ private String categorySummary;
+ private String externalSource;
+
+ public int compareTo(AssetPageRow other) {
+ return uuid.compareTo(other.uuid);
+ }
+
+ // ************************************************************************
+ // Getters and setters
+ // ************************************************************************
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public void setPackageName(String packageName) {
+ this.packageName = packageName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getStateName() {
+ return stateName;
+ }
+
+ public void setStateName(String stateName) {
+ this.stateName = stateName;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public Date getCreatedDate() {
+ return createdDate;
+ }
+
+ public void setCreatedDate(Date createdDate) {
+ this.createdDate = createdDate;
+ }
+
+ public String getLastContributor() {
+ return lastContributor;
+ }
+
+ public void setLastContributor(String lastContributor) {
+ this.lastContributor = lastContributor;
+ }
+
+ public Date getLastModified() {
+ return lastModified;
+ }
+
+ public void setLastModified(Date lastModified) {
+ this.lastModified = lastModified;
+ }
+
+ public String getCategorySummary() {
+ return categorySummary;
+ }
+
+ public void setCategorySummary(String categorySummary) {
+ this.categorySummary = categorySummary;
+ }
+
+ public String getExternalSource() {
+ return externalSource;
+ }
+
+ public void setExternalSource(String externalSource) {
+ this.externalSource = externalSource;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/AssetPageRow.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -201,6 +201,14 @@
public ValidatedResponse savePackage(PackageConfigData data) throws SerializationException;
/**
+ * Supports filtering and pagination.
+ * @param request never null, contains filter and pagination values
+ * @return never null, contains the {@link List} of {@link AssetPageRow}
+ * @throws SerializationException
+ */
+ public AssetPageResponse findAssetPage(AssetPageRequest request) throws SerializationException;
+
+ /**
* Given a format, this will return assets that match.
* It can also be used for "pagination" by passing in start and
* finish row numbers.
@@ -208,6 +216,7 @@
* @param format The format to filter on. If this is empty - it will look for all non "known" asset types (ie "misc" stuff).
* @param numRows The number of rows to return. -1 means all.
* @param startRow The starting row number if paging - if numRows is -1 then this is ignored.
+ * @deprecated by {@link #findAssetPage(AssetPageRequest)}
*/
public TableDataResult listAssets(String packageUUID,
String formats[],
@@ -624,4 +633,4 @@
public String processTemplate(String name, Map<String, Object> data);
public Boolean isHostedMode();
-}
\ No newline at end of file
+}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -16,9 +16,7 @@
package org.drools.guvnor.client.rpc;
-import java.util.Map;
-
/**
*
* This is what the remote service will implement, as a servlet.
@@ -63,6 +61,7 @@
void getCustomSelectors(com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String[]> arg1);
void installSampleRepository(com.google.gwt.user.client.rpc.AsyncCallback<java.lang.Void> arg1);
void listArchivedPackages(com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.PackageConfigData[]> arg1);
+ void findAssetPage(org.drools.guvnor.client.rpc.AssetPageRequest request, com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.AssetPageResponse> cb);
void listAssets(java.lang.String packageUUID, java.lang.String[] formats, int skip, int numRows, java.lang.String tableConfig, com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> arg6);
void listAvailablePermissionTypes(com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String[]> arg1);
void listPackages(com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.PackageConfigData[]> arg1);
@@ -111,5 +110,5 @@
void unLockAsset(java.lang.String uuid, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.Void> arg2);
void updateUserPermissions(java.lang.String userName, java.util.Map<java.lang.String, java.util.List<java.lang.String>> perms, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.Void> arg3);
void processTemplate(java.lang.String name, java.util.Map<String, Object> data, com.google.gwt.user.client.rpc.AsyncCallback<java.lang.String> arg4);
- void isHostedMode(com.google.gwt.user.client.rpc.AsyncCallback<java.lang.Boolean> arg1);
+ void isHostedMode(com.google.gwt.user.client.rpc.AsyncCallback<java.lang.Boolean> arg1);
}
Copied: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/AssetTable.java (from rev 35869, labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/AssetItemGrid.java)
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/AssetTable.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/AssetTable.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -0,0 +1,305 @@
+/*
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.guvnor.client.rulelist;
+
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.google.gwt.cell.client.DateCell;
+import com.google.gwt.cell.client.ImageCell;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.user.cellview.client.CellTable;
+import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.user.cellview.client.TextColumn;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.view.client.AsyncDataProvider;
+import com.google.gwt.view.client.HasData;
+import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.ProvidesKey;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import org.drools.guvnor.client.common.GenericCallback;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.rpc.AssetPageRequest;
+import org.drools.guvnor.client.rpc.AssetPageResponse;
+import org.drools.guvnor.client.rpc.RepositoryServiceAsync;
+import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+import org.drools.guvnor.client.rpc.AssetPageRow;
+import org.drools.guvnor.client.ruleeditor.EditorLauncher;
+import org.drools.guvnor.client.ruleeditor.MultiViewRow;
+import org.drools.guvnor.client.table.ColumnPicker;
+import org.drools.guvnor.client.table.SelectionColumn;
+import org.drools.guvnor.client.table.SortableHeader;
+import org.drools.guvnor.client.table.SortableHeaderGroup;
+
+/**
+ * Shows a table of assets.
+ * @author Geoffrey De Smet
+ */
+public class AssetTable extends Composite {
+
+ private static final Constants constants = GWT.create(Constants.class);
+ private RepositoryServiceAsync repositoryService = RepositoryServiceFactory.getService(); // TODO use (C)DI
+
+ private final String packageUuid;
+ private final List<String> formatInList;
+ private final EditItemEvent editEvent;
+ private int pageSize = 50; // TODO might need to be configurable, or a constant
+ private String feedURL;
+ private Set<Command> unloadListenerSet = new HashSet<Command>();
+
+ private VerticalPanel layout;
+ private CellTable<AssetPageRow> cellTable;
+ private AsyncDataProvider<AssetPageRow> dataProvider;
+ private SimplePager pager;
+ private MultiSelectionModel<AssetPageRow> selectionModel;
+
+ public AssetTable(String packageUuid, List<String> formatInList, EditItemEvent event) {
+ this(packageUuid, formatInList, event, null);
+ }
+
+ public AssetTable(String packageUuid, List<String> formatInList, final EditItemEvent event, String feedURL) {
+ this.packageUuid = packageUuid;
+ this.formatInList = formatInList;
+ this.editEvent = event;
+ this.feedURL = feedURL;
+ this.layout = new VerticalPanel();
+ doCellTable();
+ initWidget(layout);
+ }
+
+ private void doCellTable() {
+ ProvidesKey<AssetPageRow> providesKey = new ProvidesKey<AssetPageRow>() {
+ public Object getKey(AssetPageRow row) {
+ return row.getUuid();
+ }
+ };
+ cellTable = new CellTable<AssetPageRow>(providesKey);
+ selectionModel = new MultiSelectionModel<AssetPageRow>(providesKey);
+ cellTable.setSelectionModel(selectionModel);
+ SelectionColumn.createAndAddSelectionColumn(cellTable);
+
+ ColumnPicker<AssetPageRow> columnPicker = new ColumnPicker<AssetPageRow>(cellTable);
+ SortableHeaderGroup sortableHeaderGroup = new SortableHeaderGroup<AssetPageRow>(cellTable);
+
+ final TextColumn<AssetPageRow> uuidNumberColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getUuid();
+ }
+ };
+ columnPicker.addColumn(uuidNumberColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "uuid TODO", uuidNumberColumn), false); // TODO i18n
+
+ Column<AssetPageRow, String> formatColumn = new Column<AssetPageRow, String>(new ImageCell()) {
+ public String getValue(AssetPageRow row) {
+ return "images/" + EditorLauncher.getAssetFormatIcon(row.getFormat());
+ }
+ };
+ columnPicker.addColumn(formatColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "format TODO", formatColumn), true); // TODO i18n
+
+ TextColumn<AssetPageRow> packageNameColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getPackageName();
+ }
+ };
+ columnPicker.addColumn(packageNameColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "packageName TODO", packageNameColumn), false);
+
+ TextColumn<AssetPageRow> nameColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getName();
+ }
+ };
+ columnPicker.addColumn(nameColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, constants.name(), nameColumn), true);
+
+ TextColumn<AssetPageRow> descriptionColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getDescription();
+ }
+ };
+ columnPicker.addColumn(descriptionColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "description TODO", descriptionColumn), true);
+
+ TextColumn<AssetPageRow> stateNameColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getStateName();
+ }
+ };
+ columnPicker.addColumn(stateNameColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "stateName TODO", stateNameColumn), true);
+
+ TextColumn<AssetPageRow> creatorColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getCreator();
+ }
+ };
+ columnPicker.addColumn(creatorColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "creator TODO", creatorColumn), false); // TODO i18n
+
+ Column<AssetPageRow, Date> createdDateColumn = new Column<AssetPageRow, Date>(new DateCell(
+ DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM))) {
+ public Date getValue(AssetPageRow row) {
+ return row.getCreatedDate();
+ }
+ };
+ columnPicker.addColumn(createdDateColumn, new SortableHeader<AssetPageRow, Date>(
+ sortableHeaderGroup, "createdDate TODO", createdDateColumn), false); // TODO i18n
+
+ TextColumn<AssetPageRow> lastContributorColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getLastContributor();
+ }
+ };
+ columnPicker.addColumn(lastContributorColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "lastContributor TODO", lastContributorColumn), false); // TODO i18n
+
+ Column<AssetPageRow, Date> lastModifiedColumn = new Column<AssetPageRow, Date>(new DateCell(
+ DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM))) {
+ public Date getValue(AssetPageRow row) {
+ return row.getLastModified();
+ }
+ };
+ columnPicker.addColumn(lastModifiedColumn, new SortableHeader<AssetPageRow, Date>(
+ sortableHeaderGroup, "lastModified TODO", lastModifiedColumn), true); // TODO i18n
+
+ TextColumn<AssetPageRow> categorySummaryColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getCategorySummary();
+ }
+ };
+ columnPicker.addColumn(categorySummaryColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "categorySummary TODO", categorySummaryColumn), false); // TODO i18n
+
+ TextColumn<AssetPageRow> externalSourceColumn = new TextColumn<AssetPageRow>() {
+ public String getValue(AssetPageRow row) {
+ return row.getExternalSource();
+ }
+ };
+ columnPicker.addColumn(externalSourceColumn, new SortableHeader<AssetPageRow, String>(
+ sortableHeaderGroup, "externalSource TODO", externalSourceColumn), false); // TODO i18n
+
+ cellTable.setPageSize(pageSize);
+ cellTable.setWidth("100%");
+
+ pager = new SimplePager();
+ pager.setDisplay(cellTable);
+
+ dataProvider = new AsyncDataProvider<AssetPageRow>() {
+ protected void onRangeChanged(HasData<AssetPageRow> display) {
+ AssetPageRequest request = new AssetPageRequest();
+ request.setPackageUuid(packageUuid);
+ request.setFormatInList(formatInList);
+ request.setStartRowIndex(pager.getPageStart());
+ request.setPageSize(pageSize);
+ repositoryService.findAssetPage(request,
+ new GenericCallback<AssetPageResponse>() {
+ public void onSuccess(AssetPageResponse response) {
+ updateRowCount(response.getTotalRowSize(), true);
+ updateRowData(response.getStartRowIndex(), response.getAssetPageRowList());
+ }
+ });
+ }
+ };
+ dataProvider.addDataDisplay(cellTable);
+
+ HorizontalPanel tableHeaderPanel = new HorizontalPanel();
+ Button refreshButton = new Button(constants.refreshList());
+ refreshButton.addListener(new ButtonListenerAdapter() {
+ @Override
+ public void onClick(Button button, EventObject e) {
+ refresh();
+ }
+ });
+ tableHeaderPanel.add(refreshButton);
+ Button openSelectedButton = new Button(constants.openSelected());
+ openSelectedButton.addListener(new ButtonListenerAdapter() {
+ @Override
+ public void onClick(Button button, EventObject e) {
+ Set<AssetPageRow> selectedSet = selectionModel.getSelectedSet();
+ for (AssetPageRow selected : selectedSet) {
+ // TODO directly push the selected AssetPageRow
+ editEvent.open(selected.getUuid());
+ }
+ }
+ });
+ tableHeaderPanel.add(openSelectedButton);
+ Button openSelectedToSingleTabButton = new Button(constants.openSelectedToSingleTab());
+ openSelectedToSingleTabButton.addListener(new ButtonListenerAdapter() {
+ @Override
+ public void onClick(Button button, EventObject e) {
+ Set<AssetPageRow> selectedSet = selectionModel.getSelectedSet();
+ // TODO directly push the selected AssetPageRows
+ List<MultiViewRow> multiViewRowList = new ArrayList<MultiViewRow>(selectedSet.size());
+ for (AssetPageRow selected : selectedSet) {
+ MultiViewRow row = new MultiViewRow();
+ row.uuid = selected.getUuid();
+ row.format = selected.getFormat();
+ row.name = selected.getName();
+ multiViewRowList.add(row);
+ }
+ editEvent.open(multiViewRowList.toArray(new MultiViewRow[multiViewRowList.size()]));
+ }
+ });
+ tableHeaderPanel.add(openSelectedToSingleTabButton);
+ tableHeaderPanel.add(columnPicker.createToggleButton());
+
+ if (feedURL != null) {
+ // TODO use image resources to get the feed.png and use image button or something like that
+ HTML feedButton = new HTML("<a href='" + feedURL + "' target='_blank'><img src='images/feed.png'/></a>");
+ tableHeaderPanel.add(feedButton);
+ }
+ layout.add(tableHeaderPanel);
+ layout.add(cellTable);
+ layout.add(pager);
+ }
+
+ /**
+ * Refreshes the data. Does not rebuild the GUI.
+ */
+ public void refresh() {
+ cellTable.setVisibleRangeAndClearData(cellTable.getVisibleRange(), true);
+ }
+
+ /**
+ * @param unloadListener never null
+ */
+ public void addUnloadListener(Command unloadListener) {
+ unloadListenerSet.add(unloadListener);
+ }
+
+ @Override
+ protected void onUnload() {
+ super.onUnload();
+ for (Command unloadListener : unloadListenerSet) {
+ unloadListener.execute();
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/util/TabOpener.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -16,6 +16,7 @@
package org.drools.guvnor.client.util;
import java.util.Arrays;
+import java.util.List;
import org.drools.guvnor.client.admin.ArchivedAssetManager;
import org.drools.guvnor.client.admin.BackupManager;
@@ -50,6 +51,7 @@
import org.drools.guvnor.client.ruleeditor.RuleViewer;
import org.drools.guvnor.client.rulelist.AssetItemGrid;
import org.drools.guvnor.client.rulelist.AssetItemGridDataLoader;
+import org.drools.guvnor.client.rulelist.AssetTable;
import org.drools.guvnor.client.rulelist.EditItemEvent;
import org.drools.guvnor.client.rulelist.QueryWidget;
@@ -497,50 +499,36 @@
public void openPackageViewAssets(final String packageUuid,
final String packageName,
String key,
- final String[] formats,
+ final List<String> formatInList,
final String itemName) {
- if ( !explorerViewCenterPanel.showIfOpen( key ) ) {
+ if (!explorerViewCenterPanel.showIfOpen(key)) {
- final AssetItemGrid grid = new AssetItemGrid( new EditItemEvent() {
- public void open(String uuid) {
- openAsset( uuid );
- }
+ String feedUrl = GWT.getModuleBaseURL() + "feed/package?name=" + packageName + "&viewUrl=" + Util.getSelfURL() + "&status=*";
+ final AssetTable table = new AssetTable(packageUuid, formatInList, new EditItemEvent() {
+ public void open(String uuid) {
+ openAsset(uuid);
+ }
+ public void open(MultiViewRow[] rows) {
+ openAssetsToMultiView(rows);
+ }
+ }, feedUrl);
+ explorerViewCenterPanel.addTab(itemName + " [" + packageName + "]",
+ table,
+ key);
- public void open(MultiViewRow[] rows) {
- openAssetsToMultiView( rows );
- }
- },
- AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
- new AssetItemGridDataLoader() {
- public void loadData(int startRow,
- int numberOfRows,
- GenericCallback<TableDataResult> cb) {
- RepositoryServiceFactory.getService().listAssets( packageUuid,
- formats,
- startRow,
- numberOfRows,
- AssetItemGrid.PACKAGEVIEW_LIST_TABLE_ID,
- cb );
- }
- },
- GWT.getModuleBaseURL() + "feed/package?name=" + packageName + "&viewUrl=" + Util.getSelfURL() + "&status=*" );
- explorerViewCenterPanel.addTab( itemName + " [" + packageName + "]",
- grid,
- key );
-
final ServerPushNotification sub = new ServerPushNotification() {
public void messageReceived(PushResponse response) {
- if ( response.messageType.equals( "packageChange" ) && response.message.equals( packageName ) ) {
- grid.refreshGrid();
+ if (response.messageType.equals("packageChange") && response.message.equals(packageName)) {
+ table.refresh();
}
}
};
- PushClient.instance().subscribe( sub );
- grid.addUnloadListener( new Command() {
+ PushClient.instance().subscribe(sub);
+ table.addUnloadListener(new Command() {
public void execute() {
- PushClient.instance().unsubscribe( sub );
+ PushClient.instance().unsubscribe(sub);
}
- } );
+ });
}
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -20,6 +20,9 @@
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
+
+import org.drools.guvnor.client.rpc.AssetPageRequest;
+import org.drools.guvnor.client.rpc.AssetPageResponse;
import org.drools.guvnor.client.rpc.BulkTestRunResult;
import org.drools.guvnor.client.rpc.DetailedSerializationException;
@@ -188,6 +191,9 @@
public org.drools.guvnor.client.rpc.ValidatedResponse savePackage(org.drools.guvnor.client.rpc.PackageConfigData p0) throws SerializationException {
return getService().savePackage( p0);
}
+ public AssetPageResponse findAssetPage(AssetPageRequest request) throws SerializationException {
+ return getService().findAssetPage(request);
+ }
public org.drools.guvnor.client.rpc.TableDataResult listAssets(java.lang.String p0, java.lang.String[] p1, int p2, int p3, java.lang.String p4) throws SerializationException {
return getService().listAssets( p0, p1, p2, p3, p4);
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -64,6 +64,9 @@
import org.drools.core.util.DroolsStreamUtils;
import org.drools.guvnor.client.common.AssetFormats;
import org.drools.guvnor.client.explorer.ExplorerNodeConfig;
+import org.drools.guvnor.client.rpc.AssetPageRequest;
+import org.drools.guvnor.client.rpc.AssetPageResponse;
+import org.drools.guvnor.client.rpc.AssetPageRow;
import org.drools.guvnor.client.rpc.BuilderResult;
import org.drools.guvnor.client.rpc.BuilderResultLine;
import org.drools.guvnor.client.rpc.BulkTestRunResult;
@@ -1077,6 +1080,65 @@
@WebRemote
@Restrict("#{identity.loggedIn}")
+ public AssetPageResponse findAssetPage(AssetPageRequest request) throws SerializationException {
+ log.debug("Finding asset page of packageUuid (" + request.getPackageUuid() + ")");
+ long start = System.currentTimeMillis();
+ PackageItem packageItem = repository.loadPackageByUUID( request.getPackageUuid() );
+ AssetItemIterator it;
+ if (request.getFormatInList() != null) {
+ if (request.getFormatIsRegistered() != null) {
+ throw new IllegalArgumentException(
+ "Combining formatInList and formatIsRegistered is not yet supported.");
+ } else {
+ it = packageItem.listAssetsByFormat( request.getFormatInList() );
+ }
+ } else {
+ if (request.getFormatIsRegistered() != null) {
+ it = packageItem.listAssetsNotOfFormat( AssetFormatHelper.listRegisteredTypes() );
+ } else {
+ it = packageItem.queryAssets("");
+ }
+ }
+
+ AssetPageResponse response = new AssetPageResponse();
+ long totalRowSize = it.getSize();
+ if (totalRowSize > Integer.MAX_VALUE) {
+ throw new IllegalStateException("The totalRowSize (" + totalRowSize + ") is too big.");
+ }
+ response.setTotalRowSize((int) totalRowSize);
+ it.skip(request.getStartRowIndex());
+ response.setStartRowIndex(request.getStartRowIndex());
+
+ int pageSize = request.getPageSize();
+ List<AssetPageRow> rowList = new ArrayList<AssetPageRow>(request.getPageSize());
+
+ while (it.hasNext() && (pageSize < 0 || rowList.size() <= pageSize)) {
+ AssetItem assetItem = (AssetItem) it.next();
+ AssetPageRow row = new AssetPageRow();
+ row.setUuid(assetItem.getUUID());
+ row.setFormat(assetItem.getFormat());
+ row.setPackageName(assetItem.getPackageName());
+ row.setName(assetItem.getName());
+ row.setDescription(assetItem.getDescription());
+ row.setStateName(assetItem.getStateDescription());
+ row.setCreator(assetItem.getCreator());
+ row.setCreatedDate(assetItem.getCreatedDate().getTime());
+ row.setLastContributor(assetItem.getLastContributor());
+ row.setLastModified(assetItem.getLastModified().getTime());
+ row.setCategorySummary(assetItem.getCategorySummary());
+ row.setExternalSource(assetItem.getExternalSource());
+ rowList.add(row);
+ }
+ response.setAssetPageRowList(rowList);
+ response.setLastPage(!it.hasNext());
+
+ long methodDuration = System.currentTimeMillis() - start;
+ log.debug("Found asset page of packageUuid (" + request.getPackageUuid() + ") in " + methodDuration + " ms.");
+ return response;
+ }
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
public TableDataResult listAssets(String uuid,
String formats[],
int skip,
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -60,7 +60,7 @@
/**
* @param i The number of rules to skip.
*/
- public void skip(int i) {
+ public void skip(long i) {
it.skip( i );
}
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2010-11-12 02:35:39 UTC (rev 35957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2010-11-12 13:54:37 UTC (rev 35958)
@@ -537,6 +537,10 @@
public AssetItemIterator listArchivedAssets () {
return queryAssets( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG + " = 'true'" , true );
}
+
+ public AssetItemIterator listAssetsByFormat(List<String> formatInList) {
+ return listAssetsByFormat(formatInList.toArray(new String[formatInList.size()]));
+ }
/**
* This will load an iterator for assets of the given format type.
@@ -928,4 +932,5 @@
private String getCurrentUserName() {
return this.rulesRepository.getSession().getUserID();
}
-}
\ No newline at end of file
+
+}
More information about the jboss-svn-commits
mailing list