/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. 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. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package org.compiere.model; import java.io.Serializable; import java.sql.Timestamp; import java.util.EventObject; import org.idempiere.fa.util.Util; /** * Data Status Event *
* Indicates the current Status of the database * * @author Jorg Janke * @version $Id: DataStatusEvent.java,v 1.4 2006/07/30 00:51:02 jjanke Exp $ */ public final class DataStatusEvent extends EventObject implements Serializable { /** * generated serial id */ private static final long serialVersionUID = -1988674163839245029L; /** * Constructor * @param source1 source * @param totalRows total rows * @param changed changed * @param autoSave auto save * @param inserting inserting */ public DataStatusEvent (Object source1, int totalRows, boolean changed, boolean autoSave, boolean inserting) { super(source1); m_totalRows = totalRows; m_changed = changed; m_autoSave = autoSave; m_inserting = inserting; } // DataStatusEvent private int m_totalRows; private boolean m_changed; private boolean m_autoSave; private boolean m_inserting; // private String m_AD_Message = null; private String m_info = null; private boolean m_isError = false; private boolean m_isWarning = false; private boolean m_confirmed = false; // private boolean m_allLoaded = true; private int m_loadedRows = -1; private int m_currentRow = -1; // private int m_changedColumn = -1; private String m_columnName = null; // IDEMPIERE-1287:indicate case user just start edit field, want update status of toolbar button (like save button) // but don't want change anything (even value of edit field) private boolean isInitEdit = false; /** Created */ public Timestamp Created = null; /** Created By */ public Integer CreatedBy = null; /** Updated */ public Timestamp Updated = null; /** Updated By */ public Integer UpdatedBy = null; /** Info */ public String Info = null; /** Table ID */ public int AD_Table_ID = 0; /** Record ID */ public Object Record_ID = null; /** * Set Loading Info * @param loadedRows loaded rows */ public void setLoading (int loadedRows) { m_allLoaded = false; m_loadedRows = loadedRows; } // setLoaded /** * Is loading * @return true if loading */ public boolean isLoading() { return !m_allLoaded; } // isLoading /** * Get loaded rows * @return loaded rows */ public int getLoadedRows() { return m_loadedRows; } // getLoadedRows /** * Set current Row (zero based) * @param currentRow current row */ public void setCurrentRow (int currentRow) { m_currentRow = currentRow; } // setCurrentRow /** * Get current row (zero based) * @return current row */ public int getCurrentRow() { return m_currentRow; } // getCurrentRow /** * Get total rows * @return total number of rows */ public int getTotalRows() { return m_totalRows; } // getTotalRows /** * Set Message Info * @param AD_Message message * @param info info * @param isError error * @param isWarning true if warning */ public void setInfo (String AD_Message, String info, boolean isError, boolean isWarning) { m_AD_Message = AD_Message; m_info = info; m_isError = isError; m_isWarning = isWarning; } // setInfo /** * Set Inserting * @param inserting inserting */ public void setInserting (boolean inserting) { m_inserting = inserting; } // setInserting /** * @return true if inserting */ public boolean isInserting() { return m_inserting; } // isInserting /** * Get AD Message * @return AD Message */ public String getAD_Message() { return m_AD_Message; } // getAD_Message /** * Get info for AD Message * @return info for AD Message */ public String getInfo() { return m_info; } // getInfo /** * Is this an error * @return true if error */ public boolean isError() { return m_isError; } // isError /** * Is this a warning * @return true if warning */ public boolean isWarning() { return m_isWarning; } // isWarning /** * String representation of Status. * @return Examples: +*1?/20 * 1/256->2000 */ public String toString() { StringBuilder sb = new StringBuilder("DataStatusEvent - "); if (m_AD_Message != null) sb.append(m_AD_Message); if (m_info != null) sb.append(" ").append(m_info); sb.append(" : ").append(getMessage()); return sb.toString(); } // toString /** * String representation of Status. *
{@code
* *1/20 Change - automatic commit
* ?1/20 Change - manual confirm
* 1/56->200 Loading
* 1/20 Normal
* +*1/20 Inserting, changed - automatic commit
* The row number is converted from zero based representation
* }
* @return Status info
*/
public String getMessage()
{
StringBuilder retValue = new StringBuilder();
if (m_inserting)
retValue.append("+");
retValue.append(m_changed ? (m_autoSave ? "*" : "?") : " ");
// current row
if (m_totalRows == 0)
retValue.append(m_currentRow);
else
retValue.append(m_currentRow+1);
// of
retValue.append("/");
if (! m_allLoaded)
retValue.append(m_loadedRows).append("->");
retValue.append(m_totalRows);
//
return retValue.toString();
} // getMessage
/**
* Is Data Changed
* @return true if changed
*/
public boolean isChanged()
{
return m_changed;
} // isChanged
/**
* Is First Row - (zero based)
* @return true if first row
*/
public boolean isFirstRow()
{
if (m_totalRows == 0)
return true;
return m_currentRow == 0;
} // isFirstRow
/**
* Is Last Row - (zero based)
* @return true if last row
*/
public boolean isLastRow()
{
if (m_totalRows == 0)
return true;
return m_currentRow == m_totalRows-1;
} // isLastRow
/**
* Set Changed Column
* @param col column index
* @param columnName column name
*/
public void setChangedColumn (int col, String columnName)
{
m_changedColumn = col;
m_columnName = columnName;
} // setChangedColumn
/**
* Get Changed Column
* @return changed column index
*/
public int getChangedColumn()
{
return m_changedColumn;
} // getChangedColumn
/**
* Get Column Name
* @return column name
*/
public String getColumnName()
{
return m_columnName;
} // getColumnName
/**
* Set Confirmed toggle
* @param confirmed confirmed
*/
public void setConfirmed (boolean confirmed)
{
m_confirmed = confirmed;
} // setConfirmed
/**
* Is Confirmed (e.g. user has seen it)
* @return true if confirmed
*/
public boolean isConfirmed()
{
return m_confirmed;
} // isConfirmed
/**
* @param e
* @return true if equal with e
*/
public boolean isEqual(DataStatusEvent e) {
if (e == null) return false;
return e.m_changed == m_changed &&
e.m_inserting == m_inserting &&
e.m_isError == m_isError &&
e.m_isWarning == m_isWarning &&
Util.equals(e.m_AD_Message, m_AD_Message) &&
e.m_changedColumn == m_changedColumn &&
Util.equals(e.m_columnName, m_columnName) &&
e.m_currentRow == m_currentRow &&
e.m_loadedRows == m_loadedRows &&
e.isInitEdit == isInitEdit;
}
/**
* @return true if this event is by user start edit this field but not yet completed edit
*/
public boolean isInitEdit() {
return isInitEdit;
}
/**
* @param isInitEdit indicate this event is by user start edit this field but not yet completed edit
*/
public void setIsInitEdit(boolean isInitEdit) {
this.isInitEdit = isInitEdit;
}
} // DataStatusEvent