Changeset 7546 for branches/3.13-stable


Ignore:
Timestamp:
Dec 10, 2018, 8:43:53 AM (3 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #2133: Formatting of sync filter

Location:
branches/3.13-stable
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • branches/3.13-stable/src/core/net/sf/basedb/util/formatter/PropertyFilterFormatter.java

    r7494 r7546  
    4848  private final DbControl dc;
    4949  private final Formatter<Date> dateFormatter;
     50  private final boolean tagElements;
    5051 
    5152  /**
     
    5455  public PropertyFilterFormatter(DbControl dc, Formatter<Date> dateFormatter)
    5556  {
     57    this(dc, dateFormatter, false);
     58  }
     59 
     60  /**
     61    Create a new formatter with option to create HTML-like tags around elements. The
     62    following tags are used: &lt;value&gt;, &lt;name&gt;, &lt;operator&gt;, &lt;function&gt;
     63    @since 3.13.1
     64  */
     65  public PropertyFilterFormatter(DbControl dc, Formatter<Date> dateFormatter, boolean tagElements)
     66  {
    5667    this.dc = dc;
    5768    this.dateFormatter = dateFormatter;
    58   }
    59  
     69    this.tagElements = tagElements;
     70  }
    6071 
    6172  /*
     
    7788      int startIndex = property.startsWith("##") ? 2 : 1;
    7889      int annotationTypeId = Values.getInt(property.substring(startIndex));
    79       sb.append("{").append(nameOfItem(dc, Item.ANNOTATIONTYPE, annotationTypeId, false)).append("}");
    80       sb.append(" ").append(operator).append(" ");
     90      sb.append("{").append(name(nameOfItem(dc, Item.ANNOTATIONTYPE, annotationTypeId, false))).append("}");
     91      sb.append(" ").append(operator(operator.toString())).append(" ");
    8192      if (operator.isListOperator() && value != null)
    8293      {
     
    8596      else
    8697      {
    87         sb.append(quote).append(value).append(quote);
     98        sb.append(value(quote+value+quote));
    8899      }
    89100    }
     
    94105      int fileTypeId = Values.getInt(property.substring(1, i));
    95106      String fileFilter = property.substring(i+1, property.length()-1);
    96       sb.append("{").append(nameOfItem(dc, Item.DATAFILETYPE, fileTypeId, false)).append("#").append(fileFilter).append("}");
    97       sb.append(" ").append(operator).append(" ");
     107      sb.append("{").append(name(nameOfItem(dc, Item.DATAFILETYPE, fileTypeId, false)+"#"+fileFilter)).append("}");
     108      sb.append(" ").append(operator(operator.toString())).append(" ");
    98109      if (operator.isListOperator() && value != null)
    99110      {
     
    102113      else
    103114      {
    104         sb.append(quote).append(value).append(quote);
     115        sb.append(value(quote+value+quote));
    105116      }
    106117    }
     
    108119    {
    109120      // Item list filter
    110       sb.append(operator == Operator.EQ ? "memberOfList(" : "NOT memberOfList(");
    111       sb.append(nameOfItem(dc, Item.ITEMLIST, Values.getInt(value), true));
     121      if (operator != Operator.EQ) sb.append(operator("NOT"));
     122      sb.append(function("memberOfList")).append("(");
     123      sb.append(value(nameOfItem(dc, Item.ITEMLIST, Values.getInt(value), true)));
    112124      sb.append(")");
    113125    }
     
    115127    {
    116128      WellCoordinateFormatter formatter = new WellCoordinateFormatter(property.equals("bioWell.row"));
    117       sb.append(property).append(" ").append(operator).append(" ");
     129      sb.append(name(property)).append(" ").append(operator(operator.toString())).append(" ");
    118130      List<Object> selected = filter.getValuesAsObjects();
    119131      if (selected.size() > 1) sb.append("(");
     
    124136        sb.append(sep);
    125137        sep = ", ";
    126         sb.append(formatter.format((Integer)index));
     138        sb.append(value(formatter.format((Integer)index)));
    127139      }
    128140      if (selected.size() > 1) sb.append(")");
     
    130142    else if (property.equals("parentType"))
    131143    {
    132       sb.append(property).append(" ").append(operator).append(" ");
     144      sb.append(name(property)).append(" ").append(operator(operator.toString())).append(" ");
    133145      List<Object> selected = filter.getValuesAsObjects();
    134146      if (selected.size() > 1) sb.append("(");
     
    139151        sb.append(sep);
    140152        sep = ", ";
    141         sb.append(Item.fromValue((Integer)index).toString());
     153        sb.append(value(Item.fromValue((Integer)index).toString()));
    142154      }
    143155      if (selected.size() > 1) sb.append(")");
     
    158170      if (nameOfItemType != null)
    159171      {
    160         sb.append(property).append(" ").append(operator).append(" ");
     172        sb.append(name(property)).append(" ").append(operator(operator.toString())).append(" ");
    161173        List<Object> itemIds = filter.getValuesAsObjects();
    162174        if (itemIds.size() > 1) sb.append("(");
     
    167179          sb.append(sep);
    168180          sep = ", ";
    169           sb.append(nameOfItem(dc, nameOfItemType, (Integer)id, true));
     181          sb.append(value(nameOfItem(dc, nameOfItemType, (Integer)id, true)));
    170182        }
    171183        if (itemIds.size() > 1) sb.append(")");
     
    177189          property = property.substring(1);
    178190        }
    179         sb.append(property).append(" ").append(operator).append(" ");
     191        sb.append(name(property)).append(" ").append(operator(operator.toString())).append(" ");
    180192        if (operator.isListOperator() && value != null)
    181193        {
     
    188200            value = dateFormatter.format((Date)Type.DATE.parseString(value));
    189201          }
    190           sb.append(quote).append(value).append(quote);
     202          sb.append(value(quote+value+quote));
    191203        }
    192204      }
     
    228240      sb.append(sep);
    229241      sep = ", ";
    230       sb.append(quote).append(v).append(quote);
     242      sb.append(value(quote+v+quote));
    231243    }
    232244    if (values.length > 1) sb.append(")");
    233245   
    234246  }
     247 
     248  private String value(String value)
     249  {
     250    return tagElements ? "<value>"+value+"</value>" : value;
     251  }
     252 
     253  private String name(String name)
     254  {
     255    return tagElements ? "<name>"+name+"</name>" : name;
     256  }
     257  private String operator(String op)
     258  {
     259    return tagElements ? "<operator>"+op+"</operator>" : op;
     260  }
     261  private String function(String function)
     262  {
     263    return tagElements ? "<function>"+function+"</function>" : function;
     264  }
     265
     266 
    235267}
  • branches/3.13-stable/www/views/itemlists/syncfilter/ajax.jsp

    r6793 r7546  
    4747    StringBuilder sb = new StringBuilder();
    4848    Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(dc.getSessionControl());
    49     Formatter<PropertyFilter> filterFormatter = new PropertyFilterFormatter(dc, dateFormatter);
     49    Formatter<PropertyFilter> filterFormatter = new PropertyFilterFormatter(dc, dateFormatter, true);
    5050    for (int filterRow = 0; filterRow < syncFilter.getFilterRows(); filterRow++)
    5151    {
    52       sb.append(filterRow > 0 ? "\nOR " : "");
     52      sb.append(filterRow > 0 ? "\n<operator>OR</operator> " : "");
    5353      List<String> filters = SyncFilter.getFormattedAndSortedFilters(syncFilter.getPropertyFilters(filterRow), filterFormatter);
    54       sb.append(Values.getString(filters, "\n   AND ", true));
     54      sb.append(Values.getString(filters, "\n   <operator>AND</operator> ", true));
    5555    }
    5656    return sb.toString();
     
    8989    if (sourceItemType == syncFilter.getSourceItemType())
    9090    {
    91       json.put("filter", HTML.encodeTags(formatFilter(dc, syncFilter)));
     91      json.put("filter", HTML.encodeTags(formatFilter(dc, syncFilter), "value|name|operator|function"));
    9292    }
    9393  }
  • branches/3.13-stable/www/views/itemlists/syncfilter/edit_syncfilter.jsp

    r6814 r7546  
    112112  %>
    113113  <base:page type="popup" title="<%=title%>" id="edit-page">
    114   <base:head scripts="tabcontrol-2.js,~syncfilter.js" styles="tabcontrol.css">
     114  <base:head scripts="tabcontrol-2.js,~syncfilter.js" styles="tabcontrol.css,~filtertext.css">
    115115    <ext:scripts context="<%=jspContext%>" />
    116116    <ext:stylesheets context="<%=jspContext%>" />
     
    178178        <th class="subprompt"></th>
    179179        <td>
    180           <pre class="messagecontainer note" id="filter-info" style="height: 12em; overflow: auto;"></pre>
     180          <pre class="messagecontainer note filtertext" id="filter-info" style="height: 12em;"></pre>
    181181        </td>
    182182        <td>
  • branches/3.13-stable/www/views/itemlists/view_list.jsp

    r7166 r7546  
    113113  %>
    114114  <base:page title="<%=title%>" id="view-page">
    115   <base:head scripts="table.js,tabcontrol-2.js,~lists.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
     115  <base:head scripts="table.js,tabcontrol-2.js,~lists.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css,~syncfilter/filtertext.css">
    116116    <ext:scripts context="<%=jspContext%>" />
    117117    <ext:stylesheets context="<%=jspContext%>" />
     
    431431            <%
    432432            int index = 0;
    433             Formatter<PropertyFilter> filterFormatter = new PropertyFilterFormatter(dc, dateFormatter);
     433            Formatter<PropertyFilter> filterFormatter = new PropertyFilterFormatter(dc, dateFormatter, true);
    434434            for (SyncFilter sf : syncFilters)
    435435            {
     
    442442              for (int filterRow = 0; filterRow < sf.getFilterRows(); filterRow++)
    443443              {
    444                 sb.append(filterRow > 0 ? "\nOR " : "");
     444                sb.append(filterRow > 0 ? "\n<operator>OR</operator> " : "");
    445445                List<String> filters = SyncFilter.getFormattedAndSortedFilters(sf.getPropertyFilters(filterRow), filterFormatter);
    446                 sb.append(Values.getString(filters, "\n   AND ", true));
     446                sb.append(Values.getString(filters, "\n   <operator>AND</operator> ", true));
    447447              }
    448448              boolean disabled = sf.isDisabled();
     
    516516                  }
    517517                  %>
    518                   <pre id="syncfilter.<%=filterId%>"><%=HTML.encodeTags(sb.toString())%></pre></tbl:cell>
     518                  <pre class="filtertext" id="syncfilter.<%=filterId%>"><%=HTML.encodeTags(sb.toString(), "value|name|operator|function")%></pre></tbl:cell>
    519519                <tbl:cell column="inSync">
    520520                  <base:icon
Note: See TracChangeset for help on using the changeset viewer.