Difference between revisions of "ADempiere Best Practices"

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
(SVN Commit Policy)
(Team)
Line 14: Line 14:
 
[[User:vpj-cd|Victor Perez]] [http://e-evolution.com e-Evolution]
 
[[User:vpj-cd|Victor Perez]] [http://e-evolution.com e-Evolution]
  
[[User:Trifonnt|Trifon]]
+
[[User:Trifonnt|Trifon] www.d3-soft.com]
  
 
=SVN Commit Policy=
 
=SVN Commit Policy=

Revision as of 12:48, 17 December 2008

 DISCLAIMER: Target of this document is developers who want to help us fixing and completing
 ADempiere's manufacturing functionality (libero).

Overview

Goal

Team

Teo Sarca Arhipac

Victor Perez e-Evolution

[[User:Trifonnt|Trifon] www.d3-soft.com]

SVN Commit Policy

  • ...

Reference

SVN Best Practices

Coding Standards

  • ...

Coding Style

See Eclipse Code Formatter Profile .

Known issues:

  1. At present eclipse formatter is not supporting fluent interfaces (see eclipse bug #196001)


How to use Adempiere Query class?

How to return only ONE object?

StringBuffer whereClause = null;
whereClause = new StringBuffer("AD_Client_ID=?"			// #1
							 + " AND AD_Org_ID=?"		// #2
							 + " AND C_AcctSchema_ID=?"	// #3
							 + " AND Account_ID=?");	// #4

ArrayList<Object> params = new ArrayList<Object>();
params.add(AD_Client_ID);
params.add(AD_Org_ID);
params.add(C_AcctSchema_ID);
params.add(Account_ID);

Account existingAccount = new Query(ctx, MAccount.Table_Name, whereClause.toString(), null)
		.setParameters( params )
		.first();


How to return ARRAY of objects?

public static MAchievement[] getOfMeasure (Properties ctx, int PA_Measure_ID)
{
	String whereClause = "PA_Measure_ID=? AND IsAchieved='Y'"; 
	List<MAchievement> list = new Query(ctx, MAchievement.Table_Name, whereClause, null)
		.setParameters(new Object[]{PA_Measure_ID})
		.setOrderBy("SeqNo, DateDoc")
		.list()
	;
			
	MAchievement[] retValue = new MAchievement[ list.size() ];
	retValue = list.toArray (retValue);
	return retValue;
}

How to return ARRAY of objects and process elements?

public static MAchievement[] getOfMeasure (Properties ctx, int PA_Measure_ID)
{
	String whereClause = "PA_Measure_ID=? AND IsAchieved='Y'"; 
	List<MAchievement> list = new Query(ctx, MAchievement.Table_Name, whereClause, null)
		.setParameters(new Object[]{PA_Measure_ID})
		.setOrderBy("SeqNo, DateDoc")
		.list()
	;
	for(MAchievement achievement : list)
	{
	  s_log.fine(" - " + achievement);
	}

	MAchievement[] retValue = new MAchievement[ list.size() ];
	retValue = list.toArray (retValue);
	return retValue;
}

How to pass Timestamp parameter?

Timestamp dateAcct = ...;
String trxName = ...;

String whereClause = "c.C_CashBook_ID=?"		//	#1
		+ " AND TRUNC(c.StatementDate)=?"	//	#2
		+ " AND c.Processed='N'";
		
MCash retValue = new Query(ctx, MCash.Table_Name, whereClause, trxName)
	.setParameters(new Object[]{C_CashBook_ID, TimeUtil.getDay(dateAcct)})
	.first()
;


How to use Query class with complex where clause: EXISTS?

String whereClause = "C_Cash.AD_Org_ID=?"		//	#1
+ " AND TRUNC(C_Cash.StatementDate)=?"			//	#2
+ " AND C_Cash.Processed='N'"
+ " AND EXISTS (SELECT * FROM C_CashBook cb "
	+ "WHERE C_Cash.C_CashBook_ID=cb.C_CashBook_ID AND cb.AD_Org_ID=C_Cash.AD_Org_ID"
	+ " AND cb.C_Currency_ID=?)"			//	#3
;
MCash retValue = new Query(ctx, MCash.Table_Name, whereClause, trxName)
	.setParameters(new Object[]{AD_Org_ID,TimeUtil.getDay(dateAcct),C_Currency_ID})
	.first()
;

References

EE Best Practices

Precise Java

Test Units

  • ...

Document Policy