db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t.@apache.org
Subject svn commit: r1870544 - /db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
Date Thu, 28 Nov 2019 09:33:37 GMT
Author: tv
Date: Thu Nov 28 09:33:37 2019
New Revision: 1870544

URL: http://svn.apache.org/viewvc?rev=1870544&view=rev
Log:
Better localization support for progress text

Modified:
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java?rev=1870544&r1=1870543&r2=1870544&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
(original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/LargeSelect.java
Thu Nov 28 09:33:37 2019
@@ -22,14 +22,15 @@ package org.apache.torque.util;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.apache.torque.Torque;
 import org.apache.torque.TorqueException;
 import org.apache.torque.criteria.Criteria;
@@ -175,18 +176,29 @@ public class LargeSelect<T> implements R
      */
     private BasePeerImpl<T> peer = null;
 
+    /** default MessageFormat pattern for the page progress text */ 
+    public static final String DEFAULT_PAGE_PROGRESS_TEXT_PATTERN = "{0} of {1,choice,0#&gt;
|1#}{2}";
+
     /**
-     * The default value ("&gt;") used to indicate that the total number of
-     * records or pages is unknown.
+     * The MessageFormat pattern to format a page progress.
+     * The default <pre>{0} of {1,choice,0#&gt; |1#}{2}</pre> formats as
<pre>2 of 3</pre>.
+     * if the total number of records or pages is unknown, the pattern formats as <pre>2
of &gt; 3</pre>.
+     * You can use <code>setPageProgressTextPattern()</code>
+     * to change this to whatever value you like.
      */
-    public static final String DEFAULT_MORE_INDICATOR = "&gt;";
+    private String pageProgressTextPattern = DEFAULT_PAGE_PROGRESS_TEXT_PATTERN;
 
+    /** default MessageFormat pattern for the record progress text */ 
+    public static final String DEFAULT_RECORD_PROGRESS_TEXT_PATTERN = "{0} - {1} of {2,choice,0#&gt;
|1#}{3}";
+    
     /**
-     * The value used to indicate that the total number of records or pages is
-     * unknown (default: "&gt;"). You can use <code>setMoreIndicator()</code>
-     * to change this to whatever value you like (e.g. "more than").
+     * The MessageFormat pattern to format a record progress.
+     * The default <pre>{0} - {1} of {2,choice,0#&gt; |1#}{3}</pre> formats
as <pre>1 - 25 of 100</pre>.
+     * if the total number of records or pages is unknown, the pattern formats as <pre>1
- 25 of &gt; 100</pre>.
+     * You can use <code>setRecordProgressTextPattern()</code>
+     * to change this to whatever value you like.
      */
-    private String moreIndicator = DEFAULT_MORE_INDICATOR;
+    private String recordProgressTextPattern = DEFAULT_RECORD_PROGRESS_TEXT_PATTERN;
 
     /**
      * The default value for the maximum number of pages of data to be retained
@@ -215,7 +227,7 @@ public class LargeSelect<T> implements R
     private Map<String, String> params = null;
 
     /** Logging */
-    private static Log log = LogFactory.getLog(LargeSelect.class);
+    private static final Logger log = LogManager.getLogger(LargeSelect.class);
 
     /**
      * Creates a LargeSelect whose results are returned as a <code>List</code>
@@ -408,11 +420,7 @@ public class LargeSelect<T> implements R
     private synchronized List<T> getResults(final int start, final int size)
             throws TorqueException
     {
-        if (log.isDebugEnabled())
-        {
-            log.debug("getResults(start: " + start
-                    + ", size: " + size + ") invoked.");
-        }
+        log.debug("getResults(start: {}, size: {}) invoked.", start, size);
 
         if (size > memoryLimit)
         {
@@ -425,13 +433,9 @@ public class LargeSelect<T> implements R
         // retrieved.
         if (start >= blockBegin && (start + size - 1) <= blockEnd)
         {
-            if (log.isDebugEnabled())
-            {
-                log.debug("getResults(): Sleeping until "
-                        + "start+size-1 (" + (start + size - 1)
-                        + ") > currentlyFilledTo (" + currentlyFilledTo
-                        + ") && !queryCompleted (!" + queryCompleted + ")");
-            }
+            log.debug("getResults(): Sleeping until "
+                        + "start+size-1 ({}) > currentlyFilledTo ({}) && !queryCompleted
(!{})", 
+                        start + size - 1, currentlyFilledTo, queryCompleted);
             while (((start + size - 1) > currentlyFilledTo) && !queryCompleted)
             {
                 try
@@ -449,11 +453,9 @@ public class LargeSelect<T> implements R
         // might want at least 2 sets of data.
         else if (start < blockBegin && start >= 0)
         {
-            if (log.isDebugEnabled())
-            {
-                log.debug("getResults(): Paging backwards as start (" + start
-                        + ") < blockBegin (" + blockBegin + ") && start >=
0");
-            }
+            log.debug("getResults(): Paging backwards as start "
+                    + "({}) < blockBegin ({}) && start >= 0",
+                    start, blockBegin);
             stopQuery();
             if (memoryLimit >= 2 * size)
             {
@@ -476,12 +478,9 @@ public class LargeSelect<T> implements R
         // Assume we are moving on, do not retrieve any records prior to start.
         else if ((start + size - 1) > blockEnd)
         {
-            if (log.isDebugEnabled())
-            {
-                log.debug("getResults(): Paging past end of loaded data as "
-                        + "start+size-1 (" + (start + size - 1)
-                        + ") > blockEnd (" + blockEnd + ")");
-            }
+            log.debug("getResults(): Paging past end of loaded data as start+size-1 "
+                    + "({}) > blockEnd ({})",
+                    start + size - 1, blockEnd);
             stopQuery();
             blockBegin = start;
             blockEnd = blockBegin + memoryLimit - 1;
@@ -489,7 +488,7 @@ public class LargeSelect<T> implements R
             // Re-invoke getResults() to provide the wait processing.
             return getResults(start, size);
         }
-
+        
         else
         {
             throw new IllegalArgumentException("Parameter configuration not "
@@ -499,13 +498,10 @@ public class LargeSelect<T> implements R
         int fromIndex = start - blockBegin;
         int toIndex = fromIndex + Math.min(size, results.size() - fromIndex);
 
-        if (log.isDebugEnabled())
-        {
-            log.debug("getResults(): Retrieving records from results elements "
-                    + "start-blockBegin (" + fromIndex + ") through "
-                    + "fromIndex + Math.min(size, results.size() - fromIndex) ("
-                    + toIndex + ")");
-        }
+        log.debug("getResults(): Retrieving records from results elements "
+                + "start-blockBegin ({}) through fromIndex + "
+                + "Math.min(size, results.size() - fromIndex) ({})",
+                fromIndex, toIndex);
 
         List<T> returnResults;
 
@@ -545,11 +541,10 @@ public class LargeSelect<T> implements R
             // Execute the query.
             if (log.isDebugEnabled())
             {
-                String query = SqlBuilder.buildQuery(criteria).toString();
-                log.debug("run(): query = " + query);
-                log.debug("run(): memoryLimit = " + memoryLimit);
-                log.debug("run(): blockBegin = " + blockBegin);
-                log.debug("run(): blockEnd = " + blockEnd);
+                log.debug("run(): query = {}", SqlBuilder.buildQuery(criteria).toString());
+                log.debug("run(): memoryLimit = {}", memoryLimit);
+                log.debug("run(): blockBegin = {}", blockBegin);
+                log.debug("run(): blockEnd = {}", blockEnd);
             }
 
             // Continue getting rows one page at a time until the memory limit
@@ -560,10 +555,7 @@ public class LargeSelect<T> implements R
                     && !allRecordsRetrieved
                     && currentlyFilledTo + pageSize <= blockEnd)
             {
-                if (log.isDebugEnabled())
-                {
-                    log.debug("run(): Invoking BasePeerImpl.doSelect()");
-                }
+                log.debug("run(): Invoking BasePeerImpl.doSelect()");
 
                 List<T> tempResults = peer.doSelect(
                         criteria,
@@ -625,15 +617,14 @@ public class LargeSelect<T> implements R
             if (log.isDebugEnabled())
             {
                 log.debug("run(): While loop terminated because either:");
-                log.debug("run(): 1. qds.allRecordsRetrieved(): "
-                        + allRecordsRetrieved);
-                log.debug("run(): 2. killThread: " + killThread);
-                log.debug("run(): 3. !(currentlyFilledTo + size <= blockEnd): !"
-                        + (currentlyFilledTo + pageSize <= blockEnd));
-                log.debug("run(): - currentlyFilledTo: " + currentlyFilledTo);
-                log.debug("run(): - size: " + pageSize);
-                log.debug("run(): - blockEnd: " + blockEnd);
-                log.debug("run(): - results.size(): " + results.size());
+                log.debug("run(): 1. qds.allRecordsRetrieved(): {}", allRecordsRetrieved);
+                log.debug("run(): 2. killThread: {}", killThread);
+                log.debug("run(): 3. !(currentlyFilledTo + size <= blockEnd): !{}",
+                        currentlyFilledTo + pageSize <= blockEnd);
+                log.debug("run(): - currentlyFilledTo: {}", currentlyFilledTo);
+                log.debug("run(): - size: {}", pageSize);
+                log.debug("run(): - blockEnd: {}", blockEnd);
+                log.debug("run(): - results.size(): {}", results.size());
             }
         }
         catch (TorqueException e)
@@ -647,10 +638,7 @@ public class LargeSelect<T> implements R
             // Make sure getResults() finally returns if we die.
             queryCompleted = true;
 
-            if (log.isDebugEnabled())
-            {
-                log.debug("Exiting query thread");
-            }
+            log.debug("Exiting query thread");
         }
     }
 
@@ -661,10 +649,7 @@ public class LargeSelect<T> implements R
      */
     private synchronized void startQuery(final int initialSize)
     {
-        if (log.isDebugEnabled())
-        {
-            log.debug("Starting query thread");
-        }
+        log.debug("Starting query thread");
         if (!threadRunning)
         {
             pageSize = initialSize;
@@ -674,10 +659,7 @@ public class LargeSelect<T> implements R
             thread.setName("LargeSelect query Thread");
             thread.start();
             threadRunning = true;
-            if (log.isDebugEnabled())
-            {
-                log.debug("query thread started");
-            }
+            log.debug("query thread started");
         }
     }
 
@@ -689,10 +671,7 @@ public class LargeSelect<T> implements R
      */
     private synchronized void stopQuery() throws TorqueException
     {
-        if (log.isDebugEnabled())
-        {
-            log.debug("stopQuery(): Stopping query thread");
-        }
+        log.debug("stopQuery(): Stopping query thread");
         if (threadRunning)
         {
             killThread = true;
@@ -707,10 +686,7 @@ public class LargeSelect<T> implements R
             }
 
             killThread = false;
-            if (log.isDebugEnabled())
-            {
-                log.debug("stopQuery(): query thread stopped.");
-            }
+            log.debug("stopQuery(): query thread stopped.");
         }
     }
 
@@ -807,23 +783,68 @@ public class LargeSelect<T> implements R
     }
 
     /**
-     * Provide a way of changing the more pages/records indicator.
-     *
-     * @param moreIndicator the indicator to use in place of the default
-     * ("&gt;").
+     * Retrieve the MessageFormat pattern for the page progress
+     * The default is <pre>{0} of {1,choice,0#&gt; |1#}{2}</pre>
+     * 
+     * @return the pattern as a string
+     */
+    public String getPageProgressTextPattern()
+    {
+        return pageProgressTextPattern;
+    }
+
+    /**
+     * Set the MessageFormat pattern for the page progress.
+     * The default is <pre>{0} of {1,choice,0#&gt; |1#}{2}</pre>
+     * <p>
+     * The pattern contains three placeholders
+     * <ul>
+     * <li>{0} - the current page</li>
+     * <li>{1} - 0 if the total number of pages is not yet known, 1 otherwise</li>
+     * <li>{2} - the total number of pages</li>
+     * </ul>
+     * <p>
+     * Localized example in German:<br>
+     * <pre>Seite {0} von {1,choice,0#mehr als |1#}{2}</pre>
+     * 
+     * @param pageProgressTextPattern
      */
-    public void setMoreIndicator(final String moreIndicator)
+    public void setPageProgressTextPattern(String pageProgressTextPattern)
     {
-        this.moreIndicator = moreIndicator;
+        this.pageProgressTextPattern = pageProgressTextPattern;
     }
 
     /**
-     * Retrieve the more pages/records indicator.
-     * @return string indicating if there are more pages/records
+     * Retrieve the MessageFormat pattern for the record progress
+     * The default is <pre>{0} - {1} of {2,choice,0#&gt; |1#}{3}</pre>
+     * 
+     * @return the pattern as a string
+     */
+    public String getRecordProgressTextPattern()
+    {
+        return recordProgressTextPattern;
+    }
+    
+    /**
+     * Set the MessageFormat pattern for the record progress.
+     * The default is <pre>{0} - {1} of {2,choice,0#&gt; |1#}{3}</pre>
+     * <p>
+     * The pattern contains four placeholders
+     * <ul>
+     * <li>{0} - number of the first record on the page</li>
+     * <li>{1} - number of the last record on the page</li>
+     * <li>{2} - 0 if the total number of records is not yet known, 1 otherwise</li>
+     * <li>{3} - the total number of records</li>
+     * </ul>
+     * <p>
+     * Localized example in German:<br>
+     * <pre>Datens├Ątze {0} bis {1} von {2,choice,0#mehr als |1#}{3}</pre>
+     * 
+     * @param recordProgressTextPattern
      */
-    public String getMoreIndicator()
+    public void setRecordProgressTextPattern(String recordProgressTextPattern)
     {
-        return this.moreIndicator;
+        this.recordProgressTextPattern = recordProgressTextPattern;
     }
 
     /**
@@ -861,16 +882,10 @@ public class LargeSelect<T> implements R
      */
     public String getPageProgressText()
     {
-        StringBuilder result = new StringBuilder();
-        result.append(getCurrentPageNumber());
-        result.append(" of ");
-        if (!totalsFinalized)
-        {
-            result.append(moreIndicator);
-            result.append(" ");
-        }
-        result.append(getTotalPages());
-        return result.toString();
+        return MessageFormat.format(getPageProgressTextPattern(), 
+                getCurrentPageNumber(), 
+                totalsFinalized ? 1 : 0, 
+                getTotalPages());
     }
 
     /**
@@ -936,18 +951,11 @@ public class LargeSelect<T> implements R
      */
     public String getRecordProgressText() throws TorqueException
     {
-        StringBuilder result = new StringBuilder();
-        result.append(getFirstRecordNoForPage());
-        result.append(" - ");
-        result.append(getLastRecordNoForPage());
-        result.append(" of ");
-        if (!totalsFinalized)
-        {
-            result.append(moreIndicator);
-            result.append(" ");
-        }
-        result.append(getTotalRecords());
-        return result.toString();
+        return MessageFormat.format(getRecordProgressTextPattern(), 
+                getFirstRecordNoForPage(),
+                getLastRecordNoForPage(),
+                totalsFinalized ? 1 : 0, 
+                getTotalRecords());
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org


Mime
View raw message