You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by bu...@apache.org on 2014/07/01 08:03:29 UTC

svn commit: r914533 - in /websites/staging/olingo/trunk/content: ./ doc/tutorials/DeltaQuerySupport.html

Author: buildbot
Date: Tue Jul  1 06:03:29 2014
New Revision: 914533

Log:
Staging update by buildbot for olingo

Modified:
    websites/staging/olingo/trunk/content/   (props changed)
    websites/staging/olingo/trunk/content/doc/tutorials/DeltaQuerySupport.html

Propchange: websites/staging/olingo/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Jul  1 06:03:29 2014
@@ -1 +1 @@
-1606983
+1606984

Modified: websites/staging/olingo/trunk/content/doc/tutorials/DeltaQuerySupport.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/tutorials/DeltaQuerySupport.html (original)
+++ websites/staging/olingo/trunk/content/doc/tutorials/DeltaQuerySupport.html Tue Jul  1 06:03:29 2014
@@ -92,34 +92,36 @@
  <span class="n">JPQLStatement</span> <span class="n">jpqlStatement</span> <span class="p">=</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">createBuilder</span><span class="p">(</span><span class="n">jpqlContext</span><span class="p">).</span><span class="n">build</span><span class="p">();</span>
 
  <span class="n">Query</span> <span class="n">query</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span><span class="n">jpqlStatement</span><span class="p">);</span>
+</pre></div>
 
-<span class="n">The</span> <span class="n">JPQLStatement</span> <span class="n">is</span> <span class="n">generated</span> <span class="n">based</span> <span class="n">on</span> <span class="n">the</span> <span class="n">OData</span> <span class="n">request</span> <span class="p">(</span><span class="n">resultsView</span><span class="p">).</span> <span class="n">The</span> <span class="n">generated</span> <span class="n">JPQLStatement</span> <span class="n">can</span> <span class="n">be</span> <span class="n">enhanced</span> <span class="n">to</span> <span class="n">introduce</span> <span class="n">conditions</span> <span class="n">that</span> <span class="n">filters</span> <span class="n">and</span> <span class="n">fetches</span> <span class="n">delta</span> <span class="n">JPA</span> <span class="n">Entities</span><span class="p">.</span> <span class="n">To</span> <span class="n">enhance</span> <span class="n">the</span> <span class="n">JPQLStatement</span> <span class="n">and</sp
 an> <span class="n">add</span> <span class="n">a</span> <span class="n">condition</span> <span class="n">to</span> <span class="n">the</span> <span class="n">WHERE</span> <span class="n">Clause</span><span class="p">,</span> <span class="n">refer</span> <span class="n">to</span> <span class="n">the</span> <span class="n">following</span> <span class="n">code</span> <span class="n">snippet</span><span class="p">.</span>
-
-<span class="o">*</span><span class="n">Note</span><span class="o">*</span><span class="p">:</span> <span class="n">It</span> <span class="n">is</span> <span class="n">up</span> <span class="n">to</span> <span class="n">the</span> <span class="n">JPA</span> <span class="n">application</span> <span class="n">developers</span> <span class="n">to</span> <span class="n">come</span> <span class="n">up</span> <span class="n">with</span> <span class="n">a</span> <span class="n">logic</span> <span class="n">suitable</span> <span class="k">for</span> <span class="n">their</span> <span class="n">use</span> <span class="k">case</span><span class="p">.</span>
-
-<span class="n">String</span> <span class="n">deltaToken</span> <span class="p">=</span> <span class="n">ODataJPATombstoneContext</span><span class="p">.</span><span class="n">getDeltaToken</span><span class="p">();</span>
 
-<span class="n">Query</span> <span class="n">query</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span>
-<span class="k">if</span> <span class="p">(</span><span class="n">deltaToken</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>  
-  <span class="n">String</span> <span class="n">statement</span> <span class="p">=</span> <span class="n">jpqlStatement</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>  
-  <span class="n">String</span><span class="p">[]</span> <span class="n">statementParts</span> <span class="p">=</span> <span class="n">statement</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span><span class="p">);</span>  
-  <span class="n">String</span> <span class="n">deltaCondition</span> <span class="p">=</span> <span class="n">jpqlContext</span><span class="p">.</span><span class="n">getJPAEntityAlias</span><span class="p">()</span> <span class="o">+</span> &quot;<span class="p">.</span><span class="n">creationDate</span> <span class="o">&gt;</span><span class="p">=</span> <span class="p">{</span><span class="n">ts</span> <span class="s">&#39;&quot; + deltaToken + &quot;&#39;</span><span class="p">}</span>&quot;<span class="p">;</span>  
-  <span class="k">if</span> <span class="p">(</span><span class="n">statementParts</span><span class="p">.</span><span class="nb">length</span> <span class="o">&gt;</span> 1<span class="p">)</span>  
-  <span class="p">{</span>    
-  <span class="n">statement</span> <span class="p">=</span> <span class="n">statementParts</span><span class="p">[</span>0<span class="p">]</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">deltaCondition</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">Operator
 </span><span class="p">.</span><span class="n">AND</span> <span class="o">+</span> <span class="n">statementParts</span><span class="p">[</span>1<span class="p">];</span>  
-  <span class="p">}</span>  
-  <span class="k">else</span> <span class="p">{</span>    
-    <span class="n">statement</span> <span class="p">=</span> <span class="n">statementParts</span><span class="p">[</span>0<span class="p">]</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">deltaCondition</span><span class="p">;</span>  
-  <span class="p">}</span>
-
-  <span class="n">query</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span><span class="n">statement</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="k">else</span>  
-   <span class="n">query</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span><span class="n">jpqlStatement</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span>
+</li>
+</ol>
+<p>The JPQLStatement is generated based on the OData request (resultsView). The generated JPQLStatement can be enhanced to introduce conditions that filters and fetches delta JPA Entities. To enhance the JPQLStatement and add a condition to the WHERE Clause, refer to the following code snippet.</p>
+<p><em>Note</em>: It is up to the JPA application developers to come up with a logic suitable for their use case.</p>
+<div class="codehilite"><pre>    <span class="n">String</span> <span class="n">deltaToken</span> <span class="p">=</span> <span class="n">ODataJPATombstoneContext</span><span class="p">.</span><span class="n">getDeltaToken</span><span class="p">();</span>
+
+    <span class="n">Query</span> <span class="n">query</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">deltaToken</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>  
+      <span class="n">String</span> <span class="n">statement</span> <span class="p">=</span> <span class="n">jpqlStatement</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>  
+      <span class="n">String</span><span class="p">[]</span> <span class="n">statementParts</span> <span class="p">=</span> <span class="n">statement</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span><span class="p">);</span>  
+      <span class="n">String</span> <span class="n">deltaCondition</span> <span class="p">=</span> <span class="n">jpqlContext</span><span class="p">.</span><span class="n">getJPAEntityAlias</span><span class="p">()</span> <span class="o">+</span> &quot;<span class="p">.</span><span class="n">creationDate</span> <span class="o">&gt;</span><span class="p">=</span> <span class="p">{</span><span class="n">ts</span> <span class="s">&#39;&quot; + deltaToken + &quot;&#39;</span><span class="p">}</span>&quot;<span class="p">;</span>  
+      <span class="k">if</span> <span class="p">(</span><span class="n">statementParts</span><span class="p">.</span><span class="nb">length</span> <span class="o">&gt;</span> 1<span class="p">)</span>  
+      <span class="p">{</span>    
+      <span class="n">statement</span> <span class="p">=</span> <span class="n">statementParts</span><span class="p">[</span>0<span class="p">]</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">deltaCondition</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">Oper
 ator</span><span class="p">.</span><span class="n">AND</span> <span class="o">+</span> <span class="n">statementParts</span><span class="p">[</span>1<span class="p">];</span>  
+      <span class="p">}</span>  
+      <span class="k">else</span> <span class="p">{</span>    
+        <span class="n">statement</span> <span class="p">=</span> <span class="n">statementParts</span><span class="p">[</span>0<span class="p">]</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">KEYWORD</span><span class="p">.</span><span class="n">WHERE</span> <span class="o">+</span> <span class="n">JPQLStatement</span><span class="p">.</span><span class="n">DELIMITER</span><span class="p">.</span><span class="n">SPACE</span> <span class="o">+</span> <span class="n">deltaCondition</span><span class="p">;</span>  
+      <span class="p">}</span>
+
+      <span class="n">query</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span><span class="n">statement</span><span class="p">);</span>
+     <span class="p">}</span>
+     <span class="k">else</span>  
+       <span class="n">query</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span><span class="n">jpqlStatement</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span>
 </pre></div>
 
 
-</li>
+<ol>
 <li>
 <p>Implement the method <code>generateDeltaToken</code> to generate a string representation of the delta token. The delta token generated shall be used by the client applications to fetch delta in their subsequent OData requests.</p>
 <div class="codehilite"><pre>    <span class="n">SimpleDateFormat</span> <span class="n">dateFormat</span> <span class="p">=</span> <span class="n">new</span> <span class="n">SimpleDateFormat</span><span class="p">(</span>&quot;<span class="n">yyyy</span><span class="o">-</span><span class="n">MM</span><span class="o">-</span><span class="n">dd</span> <span class="n">HH</span><span class="p">:</span><span class="n">mm</span><span class="p">:</span><span class="n">ss</span><span class="p">.</span>000&quot;<span class="p">);;</span>    
@@ -129,15 +131,16 @@
 </pre></div>
 
 
-<ol>
+</li>
 <li>
 <p>Register the class (created above) as an Entity Listener in JPA Entity.</p>
-<p>@Entity
-@Table(name = "T_SALESORDERHEADER")
-@EntityListeners(com.sap.core.odata.processor.ref.jpa.listners.SalesOrderTombstoneListner.class)
-public class SalesOrderHeader { </p>
-</li>
-</ol>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">Entity</span>
+<span class="p">@</span><span class="n">Table</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">T_SALESORDERHEADER</span>&quot;<span class="p">)</span>
+<span class="p">@</span><span class="n">EntityListeners</span><span class="p">(</span><span class="n">com</span><span class="p">.</span><span class="n">sap</span><span class="p">.</span><span class="n">core</span><span class="p">.</span><span class="n">odata</span><span class="p">.</span><span class="n">processor</span><span class="p">.</span><span class="n">ref</span><span class="p">.</span><span class="n">jpa</span><span class="p">.</span><span class="n">listners</span><span class="p">.</span><span class="n">SalesOrderTombstoneListner</span><span class="p">.</span><span class="n">class</span><span class="p">)</span>
+<span class="n">public</span> <span class="n">class</span> <span class="n">SalesOrderHeader</span> <span class="p">{</span>
+</pre></div>
+
+
 </li>
 </ol>
 <h5 id="second-approach">Second Approach</h5>