package com.goldencode.dataset;

import com.goldencode.p2j.util.*;
import com.goldencode.p2j.persist.*;
import com.goldencode.dataset.dmo.fwd.*;
import com.goldencode.p2j.ui.*;
import com.goldencode.p2j.persist.lock.*;

import static com.goldencode.p2j.util.BlockManager.*;
import static com.goldencode.p2j.util.InternalEntry.Type;
import static com.goldencode.p2j.ui.LogicalTerminal.*;

/**
 * Business logic (converted to Java from the 4GL source code
 * in start.p).
 */
@DatabaseReferences(aliases = 
{
   "fwd"
}, tables = 
{
   "fwd.test"
})
public class Start
{
   Test.Buf test = RecordBuffer.define(Test.Buf.class, "fwd", "test", "test");

   /**
    * External procedure (converted to Java from the 4GL source code
    * in start.p).
    */
   @LegacySignature(type = Type.MAIN, name = "start.p")
   public void execute()
   {
      externalProcedure(Start.this, new Block((Body) () -> 
      {
         AdaptiveQuery query0 = new AdaptiveQuery();
         
         forEach(query0, "loopLabel0", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query0.initialize(test, ((String) null), null, "test.f1 asc");
         }, 
         (Body) () -> 
         {
            message((integer) new FieldReference(test, "f1").getValue());
         }));
         
         AdaptiveQuery query1 = new AdaptiveQuery();
         
         forEach(query1, "loopLabel1", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query1.initialize(test, "contains(test.c1, 'a*')", null, "test.c1 asc");
         }, 
         (Body) () -> 
         {
            message((integer) new FieldReference(test, "f1").getValue());
         }));
         
         PreselectQuery query2 = new PreselectQuery();
         
         forEach(query2, "loopLabel2", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query2.initialize(test, "contains(test.c1, 'a*')", null, "test.f1 asc, test.c1 asc");
         }, 
         (Body) () -> 
         {
            message((integer) new FieldReference(test, "f1").getValue());
         }));
         
         AdaptiveQuery query3 = new AdaptiveQuery();
         
         forEach(query3, "loopLabel3", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query3.initialize(test, "test.f2 = 1 and test.f3 >= 1 and contains(test.c1, 'a*')", null, "test.c1 asc");
         }, 
         (Body) () -> 
         {
            message((integer) new FieldReference(test, "f1").getValue());
         }));
         
         AdaptiveQuery query4 = new AdaptiveQuery();
         
         forEach(query4, "loopLabel4", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query4.initialize(test, "test.f2 = 1 and test.f3 >= 1 or contains(test.c1, 'a*')", null, "test.f1 asc");
         }, 
         (Body) () -> 
         {
            message((integer) new FieldReference(test, "f1").getValue());
         }));
         
         AdaptiveQuery query5 = new AdaptiveQuery();
         
         forEach(query5, "loopLabel5", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query5.initialize(test, "contains(test.c1, 'co*')", null, "test.c1 asc");
         }, 
         (Body) () -> 
         {
            message((character) new FieldReference(test, "c1").getValue());
         }));
         
         AdaptiveQuery query6 = new AdaptiveQuery();
         
         forEach(query6, "loopLabel6", new Block((Init) () -> 
         {
            RecordBuffer.openScope(test);
            query6.initialize(test, "contains(test.c1, 'm*')", null, "test.c1 asc");
         }, 
         (Body) () -> 
         {
            message((character) new FieldReference(test, "c1").getValue());
         }));
      }));
   }
}
