From 68ce0d47ad1fc6da298e69d8f7d9524c051978fb Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Tue, 1 Mar 2016 12:14:47 +0000
Subject: [PATCH] t SSDM-2780 toString to fetchOptions - add sort options

SVN: 35772
---
 .../fetchoptions/EmptyFetchOptions.java       |  6 ++++
 .../dto/common/fetchoptions/FetchOptions.java |  8 +----
 .../FetchOptionsToStringBuilder.java          | 29 ++++++++++++-------
 .../dto/common/fetchoptions/SortOptions.java  | 11 +++++++
 .../v3/dto/common/fetchoptions/SortOrder.java |  5 ++++
 .../v3/dto/common/fetchoptions/Sorting.java   |  5 ++++
 .../fetchoptions/DataSetFileFetchOptions.java |  7 +++++
 7 files changed, 54 insertions(+), 17 deletions(-)

diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/EmptyFetchOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/EmptyFetchOptions.java
index 0ea9e8d80d3..e8853643f58 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/EmptyFetchOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/EmptyFetchOptions.java
@@ -20,4 +20,10 @@ public class EmptyFetchOptions extends FetchOptions<Void>
         return null;
     }
 
+    @Override
+    public FetchOptionsToStringBuilder getFetchOptionsStringBuilder()
+    {
+        return new FetchOptionsToStringBuilder("Empty", this);
+    }
+
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptions.java
index 0f740ad0013..d98b47624fc 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptions.java
@@ -58,13 +58,7 @@ public abstract class FetchOptions<OBJECT> implements Serializable
 
     public abstract SortOptions<OBJECT> getSortBy();
 
-    @JsonIgnore
-    public FetchOptionsToStringBuilder getFetchOptionsStringBuilder()
-    {
-        FetchOptionsToStringBuilder f = new FetchOptionsToStringBuilder("?", this);
-        f.setName("kuba");
-        return f;
-    }
+    protected abstract FetchOptionsToStringBuilder getFetchOptionsStringBuilder();
 
     @Override
     public String toString()
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptionsToStringBuilder.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptionsToStringBuilder.java
index fd5c2f30497..38f87e91a3e 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptionsToStringBuilder.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/FetchOptionsToStringBuilder.java
@@ -21,9 +21,12 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
 /**
- * @author pkupczyk
+ * @author jakubs
  */
+@JsonObject("as.dto.common.fetchoptions.FetchOptionsToStringBuilder")
 public class FetchOptionsToStringBuilder
 {
     private String name;
@@ -42,12 +45,6 @@ public class FetchOptionsToStringBuilder
         this.keys = new ArrayList<>();
     }
 
-    public FetchOptionsToStringBuilder setName(String name)
-    {
-        this.name = name;
-        return this;
-    }
-
     public FetchOptionsToStringBuilder addFetchOption(String key, FetchOptions<?> fo)
     {
         childrenFetchOptions.put(key, fo);
@@ -62,7 +59,13 @@ public class FetchOptionsToStringBuilder
 
         if (indentation.isEmpty())
         {
-            sb.append(this.name + "\n");
+            if (this.mainFetchOptions.getSortBy() != null)
+            {
+                sb.append(this.name + " " + this.mainFetchOptions.getSortBy() + "\n");
+            } else
+            {
+                sb.append(this.name + "\n");
+            }
         }
 
         processed.add(this.mainFetchOptions);
@@ -74,13 +77,19 @@ public class FetchOptionsToStringBuilder
             FetchOptions<?> subOptions = childrenFetchOptions.get(key);
             if (subOptions != null)
             {
+                String sortOptionsPart = "";
+                if (subOptions.getSortBy() != null)
+                {
+                    sortOptionsPart = " " + subOptions.getSortBy();
+                }
+
                 FetchOptionsToStringBuilder sbb = subOptions.getFetchOptionsStringBuilder();
                 if (processed.contains(subOptions))
                 {
-                    sb.append(indentation + "with " + key + "(recursive) \n");
+                    sb.append(indentation + "with " + key + sortOptionsPart + "(recursive)\n");
                 } else
                 {
-                    sb.append(indentation + "with " + key + "\n");
+                    sb.append(indentation + "with " + key + sortOptionsPart + "\n");
                     sb.append(sbb.toString(indentation, processed));
                 }
             }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOptions.java
index 7e56b0ad2f0..cf61e87b238 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOptions.java
@@ -17,6 +17,7 @@
 package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -61,4 +62,14 @@ public abstract class SortOptions<OBJECT> implements Serializable
         return sortings;
     }
 
+    @Override
+    public String toString()
+    {
+        List<String> strings = new ArrayList<>();
+        for (Sorting sort : sortings)
+        {
+            strings.add(sort.toString());
+        }
+        return String.join(", ", strings);
+    }
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOrder.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOrder.java
index e9a95aa48b6..7731cf42914 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOrder.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/SortOrder.java
@@ -46,4 +46,9 @@ public class SortOrder implements Serializable
         return asc;
     }
 
+    @Override
+    public String toString()
+    {
+        return isAsc() ? "ASC" : "DESC";
+    }
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/Sorting.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/Sorting.java
index 3c45afce397..4f819b261ac 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/Sorting.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/fetchoptions/Sorting.java
@@ -54,4 +54,9 @@ public class Sorting implements Serializable
         return order;
     }
 
+    @Override
+    public String toString()
+    {
+        return "order by " + field + " " + order;
+    }
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/fetchoptions/DataSetFileFetchOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/fetchoptions/DataSetFileFetchOptions.java
index ccf178295ee..63fbef3f511 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/fetchoptions/DataSetFileFetchOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/fetchoptions/DataSetFileFetchOptions.java
@@ -20,6 +20,7 @@ import java.io.Serializable;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions.FetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions.FetchOptionsToStringBuilder;
 import ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.DataSetFile;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -49,4 +50,10 @@ public class DataSetFileFetchOptions extends FetchOptions<DataSetFile> implement
     {
         return sort;
     }
+
+    @Override
+    protected FetchOptionsToStringBuilder getFetchOptionsStringBuilder()
+    {
+        return new FetchOptionsToStringBuilder("DataSetFile", this);
+    }
 }
-- 
GitLab