Rahmadnet

working with DAL part 1

Oct 3rd, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.04 KB | None | 0 0
  1. package org.rahmadnet.learning.query;
  2.  
  3. import java.sql.Date;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. import org.junit.Test;
  8. import org.openbravo.dal.service.OBDal;
  9. import org.openbravo.dal.service.OBQuery;
  10. import org.openbravo.model.procurement.RequisitionLine;
  11. import org.openbravo.test.base.OBBaseTest;
  12.  
  13. public class QueryTest extends OBBaseTest
  14. {
  15.     @Test
  16.     public void testQueryOne()
  17.     {
  18.        
  19.             setUserContext("100");
  20.          
  21.             // create the where clause stringbuilder
  22.             final StringBuilder whereClause = new StringBuilder();
  23.             // rl is used as the alias for the RequisitionLine
  24.             whereClause.append(" as rl");
  25.          
  26.             // Initialize the parameter map, will be used to
  27.             // add parameters to the query
  28.             final Map<String, Object> parameters = new HashMap<>(6);
  29.            
  30.      
  31.             // do a left outer join on business partner as it can be null
  32.             // in both the requisition line and the requisition
  33.             whereClause.append(" left outer join rl.businessPartner ");
  34.             whereClause.append(" left outer join rl.requisition.businessPartner ");
  35.            
  36.      
  37.             // AND COALESCE(M_REQUISITIONLINE.C_BPARTNER_ID,M_REQUISITION.C_BPARTNER_ID) = C_BPARTNER.C_BPARTNER_ID
  38.             // AND C_BPARTNER.PO_PAYMENTTERM_ID IS NOT NULL
  39.             whereClause.append(" where (rl.businessPartner.pOPaymentTerms != null or rl.requisition.businessPartner.pOPaymentTerms != null)");
  40.          
  41.      
  42.             // AND M_REQUISITION.ISACTIVE = 'Y'
  43.             whereClause.append(" and rl.requisition.active=true");
  44.          
  45.             // AND M_REQUISITIONLINE.ISACTIVE = 'Y' <-- is done by the DAL Layer
  46.          
  47.             // AND M_REQUISITION.DOCSTATUS = 'DR'
  48.             whereClause.append(" and rl.requisition.documentStatus='DR'");
  49.          
  50.             // AND M_REQUISITIONLINE.REQSTATUS = 'O'
  51.             whereClause.append(" and rl.requisitionLineStatus='O'");
  52.            
  53.             // AND (M_REQUISITIONLINE.LOCKEDBY IS NULL OR
  54.             // COALESCE (M_REQUISITIONLINE.LOCKDATE, TO_DATE('01-01-1900', 'DD-MM-YYYY')) < (now()-3))
  55.             whereClause.append(" and (rl.lockedBy = null or rl.lockDate<:lockDate or rl.lockDate = null)");  
  56.             final long threeDays = 1000 * 3600 * 24 * 3;
  57.            
  58.      
  59.             // AND M_REQUISITION.AD_CLIENT_ID IN ? <-- Done by the DAL
  60.             // AND M_REQUISITIONLINE.AD_ORG_ID IN ? <-- Done by the DAL
  61.          
  62.             // AND M_REQUISITIONLINE.NEEDBYDATE >= ?
  63.             whereClause.append(" and rl.needByDate>=:needByDateFrom");
  64.             // needByDate from, set at 30 days back
  65.             final long thirtyDays = threeDays * 10;
  66.             parameters.put("needByDateFrom", new Date(System.currentTimeMillis() - thirtyDays));
  67.          
  68.             // AND AND M_REQUISITIONLINE.NEEDBYDATE < ?
  69.             whereClause.append(" and rl.needByDate<:needByDateTo");
  70.             // needByDate to, set at 30 days in the future
  71.             parameters.put("needByDateTo", new Date(System.currentTimeMillis() + thirtyDays));
  72.            
  73.      
  74.             // AND M_REQUISITIONLINE.M_PRODUCT_ID = ?
  75.             whereClause.append(" and rl.product.id=:productId");
  76.             parameters.put("productId", "DA7FC1BB3BA44EC48EC1AB9C74168CED");
  77.          
  78.             // AND M_REQUISITION.AD_USER_ID = TO_CHAR(?)
  79.             whereClause.append(" and rl.requisition.userContact.id=:userId");
  80.             parameters.put("userId", "100");
  81.            
  82.      
  83.             // AND ((M_REQUISITIONLINE.C_BPARTNER_ID = ? OR M_REQUISITION.C_BPARTNER_ID = ?) OR
  84.             // (M_REQUISITIONLINE.C_BPARTNER_ID IS NULL AND M_REQUISITION.C_BPARTNER_ID IS NULL))
  85.             // ORDER BY M_REQUISITIONLINE.NEEDBYDATE, M_REQUISITIONLINE.M_PRODUCT_ID,
  86.             // M_REQUISITIONLINE.M_ATTRIBUTESETINSTANCE_ID
  87.             whereClause
  88.                 .append(" and ((rl.businessPartner.id = :bpId or rl.requisition.businessPartner.id = :bpId) or "
  89.                     + "(rl.businessPartner = null and rl.requisition.businessPartner = null))");
  90.             parameters.put("bpId", "2E7F35F3ACE94769BAD7A99BF71691B1");
  91.            
  92.             parameters.put("lockDate", new Date(System.currentTimeMillis() - threeDays));
  93.            
  94.             final OBQuery<RequisitionLine> obQuery = OBDal.getInstance().createQuery(RequisitionLine.class,
  95.                 whereClause.toString());
  96.          
  97.             obQuery.setNamedParameters(parameters);
  98.            
  99.             System.out.println(obQuery.list());
  100.        
  101.             // now print the select clause parts
  102.             for (RequisitionLine requisitionLine : obQuery.list()) {
  103.      
  104.                 // now print the information from the select clause
  105.                 // SELECT M_REQUISITIONLINE_ID, M_REQUISITIONLINE.NEEDBYDATE,
  106.                 System.err.println(requisitionLine.getId());
  107.                 System.err.println(requisitionLine.getNeedByDate());
  108.            
  109.                 // M_REQUISITIONLINE.QTY - M_REQUISITIONLINE.ORDEREDQTY AS QTYTOORDER,
  110.                 if (requisitionLine.getOrderQuantity() != null) {      
  111.                 System.err.println(requisitionLine.getQuantity().min(requisitionLine.getOrderQuantity()));
  112.                 }
  113.            
  114.                 // M_REQUISITIONLINE.PRICEACTUAL AS PRICE,
  115.                 System.err.println(requisitionLine.getUnitPrice());
  116.                
  117.                
  118.                 // AD_COLUMN_IDENTIFIER(to_char('C_BPartner'),
  119.                 // to_char(COALESCE(M_REQUISITIONLINE.C_BPARTNER_ID, M_REQUISITION.C_BPARTNER_ID)), ?) AS
  120.                 // VENDOR,
  121.                 if (requisitionLine.getBusinessPartner() != null) {
  122.                   System.err.println(requisitionLine.getBusinessPartner().getIdentifier());
  123.                 } else if (requisitionLine.getRequisition().getBusinessPartner() != null) {      
  124.                   System.err.println(requisitionLine.getRequisition().getBusinessPartner().getIdentifier());
  125.                 }
  126.            
  127.                 // AD_COLUMN_IDENTIFIER(to_char('M_PriceList'),
  128.                 // to_char(COALESCE(M_REQUISITIONLINE.M_PRICELIST_ID,
  129.                 // M_REQUISITION.M_PRICELIST_ID)), ?) AS PRICELISTID,
  130.                 if (requisitionLine.getPriceList() != null) {
  131.                   System.err.println(requisitionLine.getPriceList().getIdentifier());
  132.                 } else if (requisitionLine.getRequisition().getPriceList() != null) {
  133.                   System.err.println(requisitionLine.getRequisition().getPriceList().getIdentifier());
  134.                 }
  135.            
  136.                 // AD_COLUMN_IDENTIFIER(to_char('M_Product'),
  137.                 // to_char(M_REQUISITIONLINE.M_PRODUCT_ID), ?) AS PRODUCT,
  138.                 System.err.println(requisitionLine.getProduct().getIdentifier());
  139.            
  140.                 // AD_COLUMN_IDENTIFIER(to_char('M_AttributeSetInstance'),
  141.                 // to_char(M_REQUISITIONLINE.M_ATTRIBUTESETINSTANCE_ID), ?) AS ATTRIBUTE,
  142.                 if (requisitionLine.getAttributeSetValue() != null) {
  143.                   System.err.println(requisitionLine.getAttributeSetValue().getIdentifier());
  144.                 }
  145.            
  146.                 // AD_COLUMN_IDENTIFIER(to_char('AD_User'), to_char(M_REQUISITION.AD_USER_ID), ?) AS REQUESTER
  147.                 System.err.println(requisitionLine.getRequisition().getUserContact().getIdentifier());
  148.                
  149.                
  150.             }
  151.       }
  152.     }
Advertisement
Add Comment
Please, Sign In to add comment