pt.moredata.dataentry.core
Class AbstractDataEntry

java.lang.Object
  extended bypt.moredata.dataentry.core.AbstractDataEntry
All Implemented Interfaces:
DataEntry, java.io.Serializable
Direct Known Subclasses:
FormDataEntry, GridDataEntry

public abstract class AbstractDataEntry
extends java.lang.Object
implements DataEntry, java.io.Serializable

AbstractDataEntry.java Company MoreData

Version:
$Revision: 1.27 $
Author:
pcarmo
See Also:
FormDataEntry, GriddDataEntry, Serialized Form

Field Summary
protected  java.util.List _components
          Lista de componentes da entrada de dados.
protected  DAOView _daoView
          DAOView usado para popular esta entrada de dados.
protected  java.util.Hashtable _map
          Mapeamento entre o nome de uma coluna da tabela e um componente.
protected  boolean _queryAllowed
          Indica se a entrada de dados permite que sejam efectuadas pesquisas.
protected static java.lang.String ACTION_EVENT_KEY
           
static int AFTER_ACTION_EVENT
           
static int BEFORE_ACTION_EVENT
           
protected static java.lang.String MODE_CHANGED_EVENT_KEY
           
protected static java.lang.String RECORD_DELETED_EVENT_KEY
           
protected static java.lang.String RECORD_INSERTED_EVENT_KEY
           
protected static java.lang.String RECORD_MODIFIED_EVENT_KEY
           
 
Fields inherited from interface pt.moredata.dataentry.DataEntry
INSERT_MODE, QUERY_MODE, READ_MODE, UPDATE_MODE
 
Constructor Summary
AbstractDataEntry(java.lang.String dataEntryName)
          Creates a new instance of AbstractDataEntry
 
Method Summary
 void addActionListener(ActionListener listener)
          Adiciona um actionListener.
 void addActionMapping(java.lang.String commandName, java.lang.String className)
          Add a new Action mapping for a giveen command.
 void addComponent(DataEntryComponent component)
          Adiciona uma relacao entre uma coluna da tabela com um campo da entrada de dados.
 void addModeChangedListener(ModeChangedListener listener)
          Adiciona um ModeChangedListener.
 void addRecordDeletedListener(RecordDeletedListener listener)
          Adiciona um RecordDeletedListener.
 void addRecordInsertedListener(RecordInsertedListener listener)
          Adiciona um RecordInsertedListener.
 void addRecordModifiedListener(RecordModifiedListener listener)
          Adiciona um RecordModifiedListener.
 void cleanUp()
          Clean up the DataEntry, removing all listeners added to other objects.
protected  void fireDataEntryEvent(DataEntryEvent event)
          Dispara a ocorrencia de um evento DataEntryEvent para os listeners registados.
 java.lang.String getClassNameForAction(java.lang.String commandName)
          Returns the name of the class that implements a Action for a giveen command.
protected  java.lang.String getColumnName(int columnNumber)
          Devolve o nome de uma coluna de um componente com determinado index.
protected  int getColumnNumber(java.lang.String componentName)
          Devolve o index de um componente associado a uma coluna com um determinado nome.
 DataEntryComponent getComponent(int index)
          Devolve um determinado componente da entrada de dados.
 DataEntryComponent getComponent(java.lang.String componentName)
          Devolve um determinado componente da entrada de dados.
 java.util.Iterator getComponents()
          Devolve um iterador com todos os componentes da entrada de dados.
 int getComponentsCount()
          Devolve o numero de componentes da entrada de dados.
 java.util.Iterator getComponentsNames()
          Devolve um iterador para o nome dos componentes da entrade dados.
 int getCurrentRow()
          Devolve o index do registo que se encontra selecionado na entrada de dados.
 DAOManager getDAOManager()
          Getter for property daoManager.
 DAOView getDAOView()
          Getter for property _daoView.
 java.lang.Object getFieldValue(java.lang.String componentName)
          Devolve o valor guardado num determinado campo visual da entrada de dados.
 int getMode()
          Devolve o modo em que se encontra a entrada de dados.
 java.lang.String getName()
          Getter for the DataEntry name.
 java.lang.Object getProperty(java.lang.Object key)
          Devolve o valor de um determinado atributo da entrada de dados.
 boolean isColumn(java.lang.String componentName)
          Check if a column name is part of the DataEntry columns.
 boolean isColumn(java.lang.String tableName, java.lang.String columnName)
          Check if exists any component with the columnName and table name.
 boolean isModified()
          Verifica se a algum registo da entrada de dados se encontra modificado.
 boolean isModified(int rowNumber)
          Verifica se um determinado registo se encontra modificado na entrada de dados.
 boolean isModified(int rowNumber, java.lang.String componentName)
          Verifica se uma determinada coluna de um determinado registo se encontra modificado na entrada de dados.
 boolean isNavigable()
          Indica se e possivel navegar atraves dos varios registos da entrada de dados.
 boolean isQueryAllowed()
          Indica se a entrada de dados permite ou nao a realizacao de pesquisas.
 void loadDataFromDAOView()
          Carrega na entrada de dados todas as linhas tal como foram lidas do DataSource.
 void refreshComponentsData()
          Actualiza os valores dos componentes da entrada de dados com os dados que tinham da ultima vez que estiveram visiveis na entrada de dados.
 void refreshComponentsData(int rowNumber)
          Actualiza os valores dos componentes da entrada de dados com os dados que uma determinada linha tinha da ultima vez que essa linha se encontrava visivel na entrada de dados.
 void removeActionListener(ActionListener listener)
          Remove um ActionListener.
 void removeAllRows()
          Remove todas as linhas da entrada de dados.
 void removeModeChangedListener(ModeChangedListener listener)
          Remove um ModeChangedListener.
 void removeRecordDeletedListener(RecordDeletedListener listener)
          Remove um RecordDeletedListener.
 void removeRecordInsertedListener(RecordInsertedListener listener)
          Remove um RecordInsertedListener.
 void removeRecordModifiedListener(RecordModifiedListener listener)
          Remove um RecordModifiedListener.
 void saveComponentsData()
          Salvaguarda os valores armazenados nos componente tornando possivel a sua recuperacao atraves dos metodos refreshComponentsData() ou refreshComponentsData(int).
 void saveComponentsData(int rowNumber)
          Salvaguarda os valores armazenados nos componente tornando possivel a sua recuperacao atraves dos metodos refreshComponentsData() ou refreshComponentsData(int).
 void setCurrentRow(int rowNumber)
          Altera o index do registo que se encontra selecionado na entrada de dados.
 void setDAOManager(DAOManager daoManager)
          Setter for property daoManager.
 void setDAOView(DAOView daoView)
          Setter for property _daoView.
 void setMode(int mode)
          Altera o modo em que se encontra a entrada de dados.
 void setNavigable(boolean isNavigable)
          Activa ou desactiva a navegacao pelos registos da entrada de dados.
 void setProperty(java.lang.Object key, java.lang.Object obj)
          Guarda um determinado atributo na entrada de dados.
 void setQueryAllowed(boolean queryAllowed)
          Activa ou desactiva a possibilidade de se realizar pesquisas na entrada de dados.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface pt.moredata.dataentry.DataEntry
getFieldValue, getFieldValue, getRows, insertNewRow, loadDataFromDAOView, removeRow, setFieldValue
 

Field Detail

RECORD_INSERTED_EVENT_KEY

protected static final java.lang.String RECORD_INSERTED_EVENT_KEY
See Also:
Constant Field Values

RECORD_DELETED_EVENT_KEY

protected static final java.lang.String RECORD_DELETED_EVENT_KEY
See Also:
Constant Field Values

RECORD_MODIFIED_EVENT_KEY

protected static final java.lang.String RECORD_MODIFIED_EVENT_KEY
See Also:
Constant Field Values

MODE_CHANGED_EVENT_KEY

protected static final java.lang.String MODE_CHANGED_EVENT_KEY
See Also:
Constant Field Values

ACTION_EVENT_KEY

protected static final java.lang.String ACTION_EVENT_KEY
See Also:
Constant Field Values

BEFORE_ACTION_EVENT

public static final int BEFORE_ACTION_EVENT
See Also:
Constant Field Values

AFTER_ACTION_EVENT

public static final int AFTER_ACTION_EVENT
See Also:
Constant Field Values

_components

protected java.util.List _components
Lista de componentes da entrada de dados.


_map

protected java.util.Hashtable _map
Mapeamento entre o nome de uma coluna da tabela e um componente.


_daoView

protected transient DAOView _daoView
DAOView usado para popular esta entrada de dados. Pode ser null.


_queryAllowed

protected boolean _queryAllowed
Indica se a entrada de dados permite que sejam efectuadas pesquisas.

Constructor Detail

AbstractDataEntry

public AbstractDataEntry(java.lang.String dataEntryName)
Creates a new instance of AbstractDataEntry

Parameters:
dataEntryName - The DataEntry name.
Method Detail

fireDataEntryEvent

protected void fireDataEntryEvent(DataEntryEvent event)
Dispara a ocorrencia de um evento DataEntryEvent para os listeners registados. Qualquer excepcao gerada pelos listners é apanhada neste metodo e ignorada.

Parameters:
event - O evento a disparar.

getColumnName

protected java.lang.String getColumnName(int columnNumber)
                                  throws java.lang.IndexOutOfBoundsException
Devolve o nome de uma coluna de um componente com determinado index.

Parameters:
columnNumber - O index do componente.
Throws:
java.lang.IndexOutOfBoundsException

getColumnNumber

protected int getColumnNumber(java.lang.String componentName)
                       throws NoFieldMappedToColumnException
Devolve o index de um componente associado a uma coluna com um determinado nome.

Parameters:
componentName - The name of the DataEntryComponent.
Throws:
NoFieldMappedToColumnException

addComponent

public void addComponent(DataEntryComponent component)
                  throws InvalidComponentException,
                         DuplicateComponentException
Adiciona uma relacao entre uma coluna da tabela com um campo da entrada de dados. A relação só é adicionada se já não existir.

Specified by:
addComponent in interface DataEntry
Parameters:
component - The feature to be added to the VisualField attribute.
Throws:
InvalidComponentException - Se a relação já existir.
DuplicateComponentException - Se o componente não for do tipo FormDataEntryComponent.

getComponents

public java.util.Iterator getComponents()
Devolve um iterador com todos os componentes da entrada de dados.

Specified by:
getComponents in interface DataEntry
Returns:
Um iterador com todos os componentes da entrada de dados.

getComponent

public DataEntryComponent getComponent(int index)
                                throws java.lang.IndexOutOfBoundsException
Devolve um determinado componente da entrada de dados.

Specified by:
getComponent in interface DataEntry
Parameters:
index - O index do componente a devolver.
Returns:
O componente da entrada de dados com um determinado index.
Throws:
java.lang.IndexOutOfBoundsException - Se o index for superior ao numero de componentes.

getComponent

public DataEntryComponent getComponent(java.lang.String componentName)
                                throws NoFieldMappedToColumnException
Devolve um determinado componente da entrada de dados.

Specified by:
getComponent in interface DataEntry
Parameters:
componentName - The name of the DataEntryComponent.
Returns:
A DataEntryComponent for the giveen component name.
Throws:
NoFieldMappedToColumnException - If there is no component associated to the giveen column name.

getComponentsCount

public int getComponentsCount()
Devolve o numero de componentes da entrada de dados.

Specified by:
getComponentsCount in interface DataEntry
Returns:
O numero de componentes da entrada de dados.

getComponentsNames

public java.util.Iterator getComponentsNames()
Devolve um iterador para o nome dos componentes da entrade dados. Cada elemento do iterador corresponde a uma String com o nome de um componente A lista de nomes devolvida por este metodo pode ser diferente da lista devolvida pelo DAOView: getDAOView().getColumnNames(); Isto acontece quando o DAOView contem mais colunas do que as que são vizualizadas na entrada de dados ou quando os comonentes tem nomes diferentes do nome das colunas.

Specified by:
getComponentsNames in interface DataEntry
Returns:
Um iterador para o nome das colunas da entrade dados. O iterador pode estar vazio, se o DAOView for nulo.

cleanUp

public void cleanUp()
Clean up the DataEntry, removing all listeners added to other objects. This operation is necessary for making this object free of references so the GC can collect it.

Specified by:
cleanUp in interface DataEntry

isColumn

public boolean isColumn(java.lang.String componentName)
Check if a column name is part of the DataEntry columns.

Specified by:
isColumn in interface DataEntry
Parameters:
componentName - The name of the DataEntryComponent.
Returns:
True if the column is part of the DataEntry, false otherwise.

isColumn

public boolean isColumn(java.lang.String tableName,
                        java.lang.String columnName)
Check if exists any component with the columnName and table name. Table alias can be specified insted table name.

Specified by:
isColumn in interface DataEntry
Parameters:
tableName - The component tableName or table alias.
columnName - The component columnName.
Returns:
True if exists any component with the columnName and table name, false otherwise.

getName

public java.lang.String getName()
Getter for the DataEntry name.

Specified by:
getName in interface DataEntry
Returns:
The DataEntry name.

getProperty

public java.lang.Object getProperty(java.lang.Object key)
Devolve o valor de um determinado atributo da entrada de dados.

Specified by:
getProperty in interface DataEntry
Parameters:
key - Nome chave do atributo pretendido.
Returns:
O valor do atributo com a chave 'key'.

setProperty

public void setProperty(java.lang.Object key,
                        java.lang.Object obj)
Guarda um determinado atributo na entrada de dados.

Specified by:
setProperty in interface DataEntry
Parameters:
key - Nome chave do atributo pretendido.
obj - Atributo a guardar na entrada de dados.

getCurrentRow

public int getCurrentRow()
Devolve o index do registo que se encontra selecionado na entrada de dados. Este numero corresponde ao numero da linha do DAOView a que o registo que esta a ser visualizado pertence.

Specified by:
getCurrentRow in interface DataEntry
Returns:
O registo que se encontra selecionado na entrada de dados. 0 para o caso de não existirem registos na entrada de dados.

setCurrentRow

public void setCurrentRow(int rowNumber)
Altera o index do registo que se encontra selecionado na entrada de dados. Este numero corresponde ao numero da linha do DAOView a que o registo que esta a ser visualizado pertence. Os valores dos componentes da linha anterior sao salvaguardados atraves do metodo saveComponentsData e os valores dos componentes da nova linha sao actualizados.

Specified by:
setCurrentRow in interface DataEntry
Parameters:
rowNumber - O novo numero da linha selecionada na entrada de dados.

getFieldValue

public java.lang.Object getFieldValue(java.lang.String componentName)
Devolve o valor guardado num determinado campo visual da entrada de dados. A linha a que pertence o campo visual e a linha que se encontra selecionada na entrada de dados. O comportamento deste metodo depende do modo em que estiver a entrada de dados. Caso a entrada de dados esteja em modo de QUERY, o valor devolvido e o valor usado na pesquisa, caso contrario e devolvido o valor armazenado na entrada de dados.

Specified by:
getFieldValue in interface DataEntry
Parameters:
componentName - The name of the DataEntryComponent.
Returns:
O valor do campo visual associado a coluna da tabela.

getMode

public int getMode()
Devolve o modo em que se encontra a entrada de dados.

Specified by:
getMode in interface DataEntry
Returns:
O modo em que se encontra a entrada de dados.

setMode

public void setMode(int mode)
Altera o modo em que se encontra a entrada de dados. Se o modo escolhido for INSERT_MODE, o registo currente deve ser alterado com o numero de registos da entrada de dados mais 1. O valor do registo currente deve ser salvaguardado, para quando se voltar a alterar o modo para QUERY_MODE ou READ_MODE.

Specified by:
setMode in interface DataEntry
Parameters:
mode - O novo modo da entrada de dados.

setDAOView

public void setDAOView(DAOView daoView)
Setter for property _daoView. O registo currente permanece inalterado.

Specified by:
setDAOView in interface DataEntry
Parameters:
daoView - The new daoView value

getDAOView

public DAOView getDAOView()
Getter for property _daoView.

Specified by:
getDAOView in interface DataEntry
Returns:
Devolve o DAOView associado a entrada de dados.

isModified

public boolean isModified(int rowNumber,
                          java.lang.String componentName)
Verifica se uma determinada coluna de um determinado registo se encontra modificado na entrada de dados. Se o valor da coluna for nulo na base de dados, não é considerado modificado se o seu valor na entrada de dados for uma string vazia.

Specified by:
isModified in interface DataEntry
Parameters:
rowNumber - Numero do registo.
componentName - The name of the DataEntryComponent.
Returns:
true caso o campo esteja modificado, false caso contrario.

isModified

public boolean isModified(int rowNumber)
Verifica se um determinado registo se encontra modificado na entrada de dados. Os registos caom campos nulos na base de dados, não são considerados modificados se o seu valor na entrada de dados for uma string vazia.

Specified by:
isModified in interface DataEntry
Parameters:
rowNumber - Numero do registo.
Returns:
true caso o registo esteja modificado, false caso contrario.

isModified

public boolean isModified()
Verifica se a algum registo da entrada de dados se encontra modificado. Os registos caom campos nulos na base de dados, não são considerados modificados se o seu valor na entrada de dados for uma string vazia.

Specified by:
isModified in interface DataEntry
Returns:
true caso algum registo esteja modificado, false caso contrario.

isNavigable

public boolean isNavigable()
Indica se e possivel navegar atraves dos varios registos da entrada de dados.

Specified by:
isNavigable in interface DataEntry
Returns:
true Se a entrada de dados for navegavel, false caso contrario.

setNavigable

public void setNavigable(boolean isNavigable)
Activa ou desactiva a navegacao pelos registos da entrada de dados.

Specified by:
setNavigable in interface DataEntry
Parameters:
isNavigable - True para permitir a navesação na entrada de dados, false caso contrario.

loadDataFromDAOView

public void loadDataFromDAOView()
Carrega na entrada de dados todas as linhas tal como foram lidas do DataSource.

Specified by:
loadDataFromDAOView in interface DataEntry

refreshComponentsData

public void refreshComponentsData()
Actualiza os valores dos componentes da entrada de dados com os dados que tinham da ultima vez que estiveram visiveis na entrada de dados. Este metodo deve ser implementado se os dados do componente da entrada de dados forem armazenados directamente no proprio componente. Tipicamente este metodo e chamado por uma Action que deseje reverter os dados da entrada de dados com os valores salvaguardados com o metodo saveComponentsData().

Specified by:
refreshComponentsData in interface DataEntry

refreshComponentsData

public void refreshComponentsData(int rowNumber)
Actualiza os valores dos componentes da entrada de dados com os dados que uma determinada linha tinha da ultima vez que essa linha se encontrava visivel na entrada de dados. Este metodo deve ser implementado se os dados do componente da entrada de dados nao forem armazenados directamente no proprio componente. Tipicamente este metodo e chamado por uma Action que deseje reverter os dados da entrada de dados com os valores salvaguardados com o metodo saveComponentsData().

Specified by:
refreshComponentsData in interface DataEntry
Parameters:
rowNumber - Linha da entrada de dados.

saveComponentsData

public void saveComponentsData()
Salvaguarda os valores armazenados nos componente tornando possivel a sua recuperacao atraves dos metodos refreshComponentsData() ou refreshComponentsData(int). Todas as linhas visiveis na entrada de dados são salvaguardadas. No caso da entrada de dados so permitir visualizar uma unica linha de cada vez, este metodo devera prosuzir o mesmo efeito que o metodo saveComponentsData(int). Este metodo deve ser implementado se os dados do componente da entrada de dados nao forem armazenados directamente no proprio componente. Tipicamente este metodo e chamado por uma Action que deseje salvaguardar os dados da entrada de dados para mais tarde serem repostos com o metodo refreshComponentsData().

Specified by:
saveComponentsData in interface DataEntry

saveComponentsData

public void saveComponentsData(int rowNumber)
Salvaguarda os valores armazenados nos componente tornando possivel a sua recuperacao atraves dos metodos refreshComponentsData() ou refreshComponentsData(int). Apenas é salvaguardada a linha passada por parametro. Este metodo deve ser implementado se os dados do componente da entrada de dados nao forem armazenados directamente no proprio componente. Tipicamente este metodo e chamado por uma Action que deseje salvaguardar os dados da entrada de dados para mais tarde serem repostos com o metodo refreshComponentsData().

Specified by:
saveComponentsData in interface DataEntry
Parameters:
rowNumber - Numero da linha da entrada de dados que deve ser salvaguardada.

addRecordModifiedListener

public void addRecordModifiedListener(RecordModifiedListener listener)
Adiciona um RecordModifiedListener.

Specified by:
addRecordModifiedListener in interface DataEntry
Parameters:
listener - O listener a adicionar.

addRecordInsertedListener

public void addRecordInsertedListener(RecordInsertedListener listener)
Adiciona um RecordInsertedListener.

Specified by:
addRecordInsertedListener in interface DataEntry
Parameters:
listener - O listener a adicionar.

addRecordDeletedListener

public void addRecordDeletedListener(RecordDeletedListener listener)
Adiciona um RecordDeletedListener.

Specified by:
addRecordDeletedListener in interface DataEntry
Parameters:
listener - O listener a adicionar.

addModeChangedListener

public void addModeChangedListener(ModeChangedListener listener)
Adiciona um ModeChangedListener.

Specified by:
addModeChangedListener in interface DataEntry
Parameters:
listener - O listener a adicionar.

addActionListener

public void addActionListener(ActionListener listener)
Adiciona um actionListener.

Specified by:
addActionListener in interface DataEntry
Parameters:
listener - O listener a adicionar.

removeRecordModifiedListener

public void removeRecordModifiedListener(RecordModifiedListener listener)
Remove um RecordModifiedListener.

Specified by:
removeRecordModifiedListener in interface DataEntry
Parameters:
listener - O listener a remover.

removeRecordInsertedListener

public void removeRecordInsertedListener(RecordInsertedListener listener)
Remove um RecordInsertedListener.

Specified by:
removeRecordInsertedListener in interface DataEntry
Parameters:
listener - O listener a remover.

removeRecordDeletedListener

public void removeRecordDeletedListener(RecordDeletedListener listener)
Remove um RecordDeletedListener.

Specified by:
removeRecordDeletedListener in interface DataEntry
Parameters:
listener - O listener a remover.

removeModeChangedListener

public void removeModeChangedListener(ModeChangedListener listener)
Remove um ModeChangedListener.

Specified by:
removeModeChangedListener in interface DataEntry
Parameters:
listener - O listener a remover.

removeActionListener

public void removeActionListener(ActionListener listener)
Remove um ActionListener.

Specified by:
removeActionListener in interface DataEntry
Parameters:
listener - O listener a remover.

isQueryAllowed

public boolean isQueryAllowed()
Indica se a entrada de dados permite ou nao a realizacao de pesquisas.

Specified by:
isQueryAllowed in interface DataEntry
Returns:
true caso a entrada de dados permita a realizacao de pesquisas, false caso naoi permita.

setQueryAllowed

public void setQueryAllowed(boolean queryAllowed)
Activa ou desactiva a possibilidade de se realizar pesquisas na entrada de dados.

Specified by:
setQueryAllowed in interface DataEntry
Parameters:
queryAllowed - true para activar a pesquisa na entrada de dados, false para desactivar.

getDAOManager

public DAOManager getDAOManager()
Getter for property daoManager.

Specified by:
getDAOManager in interface DataEntry
Returns:
Value of property daoManager.

setDAOManager

public void setDAOManager(DAOManager daoManager)
Setter for property daoManager.

Specified by:
setDAOManager in interface DataEntry
Parameters:
daoManager - New value of property daoManager.

removeAllRows

public void removeAllRows()
Remove todas as linhas da entrada de dados.

Specified by:
removeAllRows in interface DataEntry

addActionMapping

public void addActionMapping(java.lang.String commandName,
                             java.lang.String className)
Add a new Action mapping for a giveen command.

Specified by:
addActionMapping in interface DataEntry
Parameters:
commandName - The name of the command that identifies the action.
className - The name of the class that implements the action command.

getClassNameForAction

public java.lang.String getClassNameForAction(java.lang.String commandName)
Returns the name of the class that implements a Action for a giveen command.

Specified by:
getClassNameForAction in interface DataEntry
Parameters:
commandName - The name of the command that identifies the action.
Returns:
The name of the class that implements a Action for a giveen command.