Author: pgolawski
Date: 2008-11-12 06:49:44 -0500 (Wed, 12 Nov 2008)
New Revision: 11105
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/ExtendedTableHolder.java
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java
Log:
[RF-4814]: getGroupingColumn vs getGroupByColumn and getGroupByColumnId
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2008-11-12
10:40:21 UTC (rev 11104)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2008-11-12
11:49:44 UTC (rev 11105)
@@ -32,6 +32,7 @@
import org.richfaces.model.FilterField;
import org.richfaces.model.Modifiable;
import org.richfaces.model.ModifiableModel;
+import org.richfaces.model.Ordering;
import org.richfaces.model.SortField2;
/**
@@ -56,6 +57,10 @@
public abstract Object getActiveRowKey();
public abstract void setActiveRowKey(Object activeRowKey);
+
+ public abstract String getGroupingColumn();
+
+ public abstract void setGroupingColumn(String groupingColumn);
public void broadcast(FacesEvent event) throws AbortProcessingException {
super.broadcast(event);
@@ -135,7 +140,7 @@
state.publishChanges(getFacesContext(), this);
getFacesContext().renderResponse();
- }// processChangeColumnVisibility
+ }
public void processSortingChange(ExtTableSortEvent event) {
DataModel dataModel = getDataModel();
@@ -163,7 +168,7 @@
public boolean isColumnVisible(UIComponent column) {
ensureTableStateInitialized();
return state.isColumnVisible(column.getId());
- }// isColumnVisible
+ }
public void processColumnResize(ColumnResizeEvent event) {
ensureTableStateInitialized();
@@ -171,7 +176,7 @@
state.publishChanges(getFacesContext(), this);
getFacesContext().renderResponse();
- }// processChangeColumnVisibility
+ }
public String getColumnSize(UIComponent column) {
ensureTableStateInitialized();
@@ -179,19 +184,40 @@
}
public boolean isGroupingOn() {
- ensureTableStateInitialized();
- return state.isGroupingOn();
+ //first get it from state
+ String groupingColumnId = getGroupByColumnId();
+ return ((groupingColumnId!=null) && (!"".equals(groupingColumnId))
&& (!ExtendedDataTableState.NONE_COLUMN_ID.equals(groupingColumnId)));
}
- public String getGroupingColumnId() {
+ /**
+ * Get id of column which the data is grouped by. First tries to get it
+ * from the table state. If the table state doesn't provide such
+ * information, get from component attribute.
+ *
+ * @return id of column which the data is grouped by
+ */
+ public String getGroupByColumnId() {
ensureTableStateInitialized();
- return state.getGroupingColumnId();
+ String id = state.getGroupingColumnId();
+ if (id == null){//grouping is not saved in state
+ //get column id from attribute
+ id = getGroupingColumn();
+ }
+ return id;
}
- public UIColumn getGroupingColumn() {
- String groupingColumnId = getGroupingColumnId();
- if (groupingColumnId == null)
+ /**
+ * Get column component which the data is grouped by. First tries to get it
+ * from the table state. If the table state doesn't provide such
+ * information, get from component attribute.
+ *
+ * @return column which the data is grouped by
+ */
+ public UIColumn getGroupByColumn() {
+ if (!isGroupingOn()){
return null;
+ }
+ String groupingColumnId = getGroupByColumnId();
for (Iterator<UIColumn> columns = getChildColumns(); columns.hasNext();) {
UIColumn child = columns.next();
if (groupingColumnId.equalsIgnoreCase(child.getId())) {
@@ -199,9 +225,9 @@
}
}
return null;
- }// getGroupingColumn
+ }
- public void setGroupingColumn(org.richfaces.component.UIColumn column) {
+ public void setGroupByColumn(org.richfaces.component.UIColumn column) {
ensureTableStateInitialized();
if (column == null) {
state.disableGrouping();
@@ -232,14 +258,16 @@
state.toggleGroup(index);
state.publishChanges(getFacesContext(), this);
}
-
- public Collection<Object> getSortPriority() {
- Collection<Object> priority = super.getSortPriority();
+
+ protected Collection<Object> getGroupPriority(){
+ Collection<Object> priority = getSortPriority();
if (isGroupingOn()) {// grouping is on
- String groupColId = getGroupingColumnId();
+ UIColumn column = getGroupByColumn();
+ if ((column.getSortOrder() == null) ||
(column.getSortOrder().equals(Ordering.UNSORTED))){
+ column.setSortOrder(Ordering.ASCENDING);
+ }
+ String groupColId = column.getId();
// try to add group column id as first
-
- //TODO nick - is it ok to change user's priorities collection here?
if (priority.contains(groupColId)) {
priority.remove(groupColId);
}
@@ -280,6 +308,7 @@
protected ExtendedDataModel createDataModel() {
List<FilterField> filterFields = new LinkedList<FilterField>();
Map<String, SortField2> sortFieldsMap = new LinkedHashMap<String,
SortField2>();
+ Collection<Object> sortPriority = getGroupPriority();
List<UIComponent> list = getChildren();
for (Iterator<UIComponent> iterator = list.iterator(); iterator
.hasNext();) {
@@ -298,7 +327,7 @@
}
List<SortField2> sortFields = new LinkedList<SortField2>();
- Collection<Object> sortPriority = getSortPriority();
+
if (sortPriority != null) {
for (Object object : sortPriority) {
if (object instanceof String) {
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2008-11-12
10:40:21 UTC (rev 11104)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2008-11-12
11:49:44 UTC (rev 11105)
@@ -1071,7 +1071,7 @@
// String groupingColumnId = null;
UIColumn groupingColumn = null;
if (isGroupingOn) {
- groupingColumn = table.getGroupingColumn();
+ groupingColumn = table.getGroupByColumn();
sortByGroupingColumn = (groupingColumn == null ? false
: groupingColumn.getClientId(context).equals(
sortColumnId));
@@ -1115,7 +1115,7 @@
if (isGroupingColumn) {
// set as grouping column to mark that grouping
// order has changed
- table.setGroupingColumn(column);
+ table.setGroupByColumn(column);
}
} else if (isSingleSortMode) { // in case of single
// sort mode
@@ -1188,7 +1188,7 @@
column.setSortOrder(Ordering.ASCENDING);
}
// set as grouping column
- table.setGroupingColumn(column);
+ table.setGroupByColumn(column);
} else { // grouping is not by this column
// turn off sorting by this column
column.setSortOrder(Ordering.UNSORTED);
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/ExtendedTableHolder.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/ExtendedTableHolder.java 2008-11-12
10:40:21 UTC (rev 11104)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/ExtendedTableHolder.java 2008-11-12
11:49:44 UTC (rev 11105)
@@ -36,7 +36,7 @@
groupingOn = table.isGroupingOn();
groupingColumnLabel = "";
if (groupingOn){
- groupingColumn = table.getGroupingColumn();
+ groupingColumn = table.getGroupByColumn();
if ((groupingColumn != null) && (groupingColumn instanceof UIColumn)){
groupingColumnLabel =
(String)groupingColumn.getAttributes().get("label");;
}
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java 2008-11-12
10:40:21 UTC (rev 11104)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java 2008-11-12
11:49:44 UTC (rev 11105)
@@ -232,7 +232,7 @@
String actionScript = null;
StringBuilder actionScriptBuilder = new StringBuilder();
boolean isGroupingColumn = column.getId().equalsIgnoreCase(
- table.getGroupingColumnId());
+ table.getGroupByColumnId());
if ((Boolean) column.getAttributes().get("sortable")) {
if (sortFunction != null) {
if (prepareFunction != null) {