diff --git a/src/main/java/de/metas/ui/web/pporder/PPOrderLinesView.java b/src/main/java/de/metas/ui/web/pporder/PPOrderLinesView.java index e1d04cb0b..41227ab68 100644 --- a/src/main/java/de/metas/ui/web/pporder/PPOrderLinesView.java +++ b/src/main/java/de/metas/ui/web/pporder/PPOrderLinesView.java @@ -69,7 +69,7 @@ public static PPOrderLinesView cast(final IDocumentViewSelection view) { return (PPOrderLinesView)view; } - + private final ViewId parentViewId; private final ViewId viewId; diff --git a/src/main/java/de/metas/ui/web/view/DocumentViewOrderedSelection.java b/src/main/java/de/metas/ui/web/view/DocumentViewOrderedSelection.java index eeacaffd6..1db2101a9 100644 --- a/src/main/java/de/metas/ui/web/view/DocumentViewOrderedSelection.java +++ b/src/main/java/de/metas/ui/web/view/DocumentViewOrderedSelection.java @@ -9,6 +9,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; +import de.metas.ui.web.window.datatypes.WindowId; import de.metas.ui.web.window.model.DocumentQueryOrderBy; /* @@ -74,6 +75,16 @@ public ViewId getViewId() { return viewId; } + + public WindowId getWindowId() + { + return viewId.getWindowId(); + } + + public String getSelectionId() + { + return viewId.getViewId(); + } public long getSize() { diff --git a/src/main/java/de/metas/ui/web/view/SqlDocumentViewSelection.java b/src/main/java/de/metas/ui/web/view/SqlDocumentViewSelection.java index 6e9749f3d..280d1fd66 100644 --- a/src/main/java/de/metas/ui/web/view/SqlDocumentViewSelection.java +++ b/src/main/java/de/metas/ui/web/view/SqlDocumentViewSelection.java @@ -141,12 +141,12 @@ private SqlDocumentViewSelection(final Builder builder) // // Attributes - attributesProvider = DocumentViewAttributesProviderFactory.instance.createProviderOrNull(defaultSelection.getViewId().getWindowId()); + attributesProvider = DocumentViewAttributesProviderFactory.instance.createProviderOrNull(defaultSelection.getWindowId()); // // Cache cache_documentViewsById = CCache.newLRUCache( // - tableName + "#DocumentViewById#viewId=" + defaultSelection.getViewId() // cache name + tableName + "#DocumentViewById#viewId=" + defaultSelection.getSelectionId() // cache name , 100 // maxSize , 2 // expireAfterMinutes ); @@ -267,11 +267,11 @@ public DocumentViewResult getPage(final int firstRow, final int pageLength, fina final DocumentViewOrderedSelection orderedSelection = getOrderedSelection(orderBys); logger.debug("Using: {}", orderedSelection); - final ViewId viewId = orderedSelection.getViewId(); + final String selectionId = orderedSelection.getSelectionId(); final int firstSeqNo = firstRow + 1; // NOTE: firstRow is 0-based while SeqNo are 1-based final int lastSeqNo = firstRow + pageLength; - final Object[] sqlParams = new Object[] { viewId.getViewId(), firstSeqNo, lastSeqNo }; + final Object[] sqlParams = new Object[] { selectionId, firstSeqNo, lastSeqNo }; PreparedStatement pstmt = null; ResultSet rs = null; try diff --git a/src/main/java/de/metas/ui/web/view/descriptor/SqlDocumentViewOrderedSelectionFactory.java b/src/main/java/de/metas/ui/web/view/descriptor/SqlDocumentViewOrderedSelectionFactory.java index fb4db48ec..ea32b92b6 100644 --- a/src/main/java/de/metas/ui/web/view/descriptor/SqlDocumentViewOrderedSelectionFactory.java +++ b/src/main/java/de/metas/ui/web/view/descriptor/SqlDocumentViewOrderedSelectionFactory.java @@ -14,6 +14,7 @@ import de.metas.ui.web.view.DocumentViewOrderedSelection; import de.metas.ui.web.view.IDocumentViewOrderedSelectionFactory; import de.metas.ui.web.view.ViewId; +import de.metas.ui.web.window.datatypes.WindowId; import de.metas.ui.web.window.model.DocumentQueryOrderBy; /* @@ -62,11 +63,15 @@ public String toString() @Override public DocumentViewOrderedSelection createFromView(final DocumentViewOrderedSelection fromView, final List orderBys) { - final ViewId fromViewId = fromView.getViewId(); - final ViewId newViewId = ViewId.random(fromViewId.getWindowId()); + final WindowId windowId = fromView.getWindowId(); + final String fromSelectionId = fromView.getSelectionId(); + + final ViewId newViewId = ViewId.random(windowId); + final String newSelectionId = newViewId.getViewId(); + final String sqlOrderBys = buildOrderBys(orderBys); // NOTE: we assume it's not empty! final String sqlFinal = sqlCreateFromViewId.replace(SqlDocumentViewBinding.PLACEHOLDER_OrderBy, sqlOrderBys); - final int rowCount = DB.executeUpdateEx(sqlFinal, new Object[] { newViewId.getViewId(), fromViewId.getViewId() }, ITrx.TRXNAME_ThreadInherited); + final int rowCount = DB.executeUpdateEx(sqlFinal, new Object[] { newSelectionId, fromSelectionId }, ITrx.TRXNAME_ThreadInherited); return DocumentViewOrderedSelection.builder() .setViewId(newViewId)