/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*****************************************************************************/
package org.compiere.print.layout;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Properties;
import org.compiere.model.MPInstance;
import org.compiere.model.MPInstanceLog;
import org.compiere.model.MQuery;
import org.compiere.model.X_AD_PInstance_Log;
import org.compiere.print.MPrintTableFormat;
import org.compiere.util.DB;
import org.compiere.util.Msg;
import org.compiere.util.Util;
/**
* Print element for instance log
* @author Teo Sarca, SC ARHIPAC SERVICE SRL
*
FR [ 1966406 ] Report Engine: AD_PInstance_Logs should be displayed
*/
public class PInstanceLogElement extends GridElement {
/**
* generated serial id
*/
private static final long serialVersionUID = 8315529954507023182L;
private int m_effectiveRowCount = 0;
/**
* @param ctx
* @param query
* @param tFormat
*/
public PInstanceLogElement(Properties ctx, MQuery query, MPrintTableFormat tFormat)
{
super (calculateRowCount(query, ctx), 4);
//
int AD_PInstance_ID = query.getAD_PInstance_ID();
if (AD_PInstance_ID > 0) {
MPInstance instance = new MPInstance(ctx, AD_PInstance_ID, null);
MPInstanceLog[] logs = instance.getLog();
for (int r = 0; r < logs.length; r++) {
int col = 0;
String msg = logs[r].getP_Msg();
if (!Util.isEmpty(msg, true)) {
String s = Msg.parseTranslation(ctx, msg);
setData (r, col++, s, tFormat.getParameter_Font(), tFormat.getParameter_Color());
}
BigDecimal num = logs[r].getP_Number();
if (num != null) {
String s = num.toString();
setData (r, col++, s, tFormat.getParameter_Font(), tFormat.getParameter_Color());
}
Timestamp date = logs[r].getP_Date();
if (date != null) {
String s = date.toString();
setData (r, col++, s, tFormat.getParameter_Font(), tFormat.getParameter_Color());
}
//
if (col > 0)
m_effectiveRowCount++;
}
}
}
/**
* Get effective row count
* @return number of rows effectively added
*/
public int getEffectiveRowCount() {
return m_effectiveRowCount;
}
/**
* Get number of row for instance log
* @param query
* @param ctx
* @return number of row
*/
private static int calculateRowCount(MQuery query, Properties ctx) {
int AD_PInstance_ID = query.getAD_PInstance_ID();
if (AD_PInstance_ID > 0) {
String sql = "SELECT COUNT(*) FROM "+X_AD_PInstance_Log.Table_Name
+" WHERE "+X_AD_PInstance_Log.COLUMNNAME_AD_PInstance_ID+"=?";
int no = DB.getSQLValue(null, sql, AD_PInstance_ID);
if (no > 0) {
return no;
}
}
return 0;
}
}