📄 genericeventprocessor.java
字号:
return mainGVL;
}
} else {
if (fields != null) {
Iterator entries = fields.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry anEntry = (Map.Entry) entries.next();
queryInfo.addCondition( mainEntityName, (String) anEntry.getKey(), EntityOperator.EQUALS, anEntry.getValue());
}
}
}
break;
}
Debug.logVerbose("calling (findIteratorByCondition)", module);
Debug.logVerbose("mainEntityName: " + mainEntityName, module);
if (TIMER) {
timer.timerString(3,
"[GenericEventProcessor.retrieveMainEntity] Start findIteratorByCondition)");
}
if (securityInfo == null) {
try {
queryInfo.setOrderBy(orderBy);
eli = queryInfo.getQueryIterator();
} catch (GenericEntityException e) {
Debug.logError("An error occurred in the " +
"GenericDelegator.findByCondition method: " +
e.getLocalizedMessage(), module);
}
} else {
try {
eli = SecurityWrapper.findListIteratorByCondition(mainEntityName,
queryInfo, orderBy, userInfo, securityInfo, delegator);
} catch (GenericEntityException e) {
Debug.logError("An error occurred in the " +
"SecurityWrapper.findByCondition method: " +
e.getLocalizedMessage(), module);
}
}
if ( eli != null )
{
try {
mainGVL = eli.getPartialList( getRowOffset() + 1, getFetchSize());
hasMoreRows = false;
// check next value since we close the cursor anyway.
if ( (mainGVL.size() == getFetchSize()) && (eli.next() != null ))
hasMoreRows = true;
// check to see if we need to save the output to a named list.
if ( ( queryInfo.getSaveResultListId() != null ) && ( queryInfo.getSaveResultListId().length() > 0) )
{
eli.beforeFirst();
GenericValue gv = null;
ModelEntity me = delegator.getModelEntity("UiListItem");
ModelEntity primaryME = delegator.getModelEntity(mainEntityName);
if ( primaryME.getPksSize() != 1)
throw new IllegalArgumentException("Multi-Field primary Keys not allows in Save Result List");
String keyFieldName = primaryME.getPk(0).getName();
while ( (gv = (GenericValue) eli.next()) != null )
{
GenericValue itemGV = new GenericValue(me);
itemGV.setDelegator(delegator);
itemGV.set("listItemId", GenericReplicator.getNextSeqId("UiListItem", delegator));
itemGV.set("listId", queryInfo.getSaveResultListId());
itemGV.set("entityName", mainEntityName);
String entityId = gv.getString(keyFieldName);
itemGV.set("entityId", entityId);
itemGV.set("status", "new");
delegator.create(itemGV);
}
}
eli.close();
} catch (GenericEntityException e) {
Debug.logError("An error occurred in the getPartialList method: " + e.getLocalizedMessage(), module);
}
}
if (TIMER) {
timer.timerString(3,
"[GenericEventProcessor.retrieveMainEntity] End findIteratorByCondition");
}
return mainGVL;
}
/**
* DOCUMENT ME!
*
* @param mainGV
* @param relatedSearchClause
* @param outGVV
* @param userInfo
* @param delegator
*
* @return
*/
protected GenericValue retrieveOneRelatedGV(GenericValue mainGV,
UIScreenSectionEntity relatedSearchClause, Vector outGVV, UserInfo userInfo,
GenericDelegator delegator) {
String relationTitle = relatedSearchClause.getRelationTitle();
String relationRelEntityName = relatedSearchClause.getEntityName();
Map byAndFields = relatedSearchClause.getDecodedAndFields();
List relatedOrderBy = (List) relatedSearchClause.getDecodedOrderBy();
Debug.logVerbose("About to retrieve related entity \"" +
relationTitle + relationRelEntityName + "\".", module);
List relatedGVL = null;
boolean relationFound = false;
String relationName = relationTitle + relationRelEntityName;
try {
relatedGVL = delegator.getRelated(relationName, byAndFields,
relatedOrderBy, mainGV);
Debug.logVerbose("Found relation \"" + relationName +
"\" on entity " + mainGV.getEntityName() + ".", module);
relationFound = true;
} catch (GenericModelException gme1) {
// The relation was not found on the primary entity. Try the other secondary ones retrieved so far.
Debug.logVerbose("Did not find relation \"" + relationName +
"\" on entity " + relationRelEntityName +
". Looking on secondary entities.", module);
for (int entityNbr = 1; entityNbr < outGVV.size(); entityNbr++) {
GenericValue tempGV = (GenericValue) outGVV.get(entityNbr);
try {
relatedGVL = delegator.getRelated(relationName,
byAndFields, relatedOrderBy, tempGV);
Debug.logVerbose("Found relation \"" + relationName +
"\" on entity " + tempGV.getEntityName() + ".", module);
relationFound = true;
break;
} catch (GenericModelException gme2) {
// Continue looking on the next entity.
Debug.logVerbose("Did not find relation \"" +
relationName + "\" on entity " +
tempGV.getEntityName() + ".", module);
} catch (GenericEntityException gee2) {
Debug.logError("An error occured while looking for " +
"entities related to secondary entity " +
tempGV.getEntityName() + " using relation " +
relationName + ": " + gee2.getLocalizedMessage(), module);
}
}
} catch (GenericEntityException gee1) {
Debug.logError("An error occured while looking for " +
"entities related to main entity " + mainGV.getEntityName() +
" using relation " + relationName + ": " +
gee1.getLocalizedMessage(), module);
}
if (!relationFound) {
//see if there is a relation from the related entity back to one of the entities already retrieved
//this will only be entered if there is not a corresponding relation in the other direction, as the previous
//code would have found that link. This is necessary for entities in the SFA data model that are related to
//entities in other ofbiz data models, since the other ofbiz data models are not aware of SFA
ModelEntity relatedME = delegator.getModelEntity(relationRelEntityName);
for (int entityNbr = 0; entityNbr < outGVV.size(); entityNbr++) {
GenericValue tempGV = (GenericValue) outGVV.get(entityNbr);
ModelRelation relation = relatedME.getRelation( tempGV.getEntityName());
if ( relation != null )
{
Map fields = byAndFields == null ? new HashMap() : new HashMap(byAndFields);
for (int i = 0; i < relation.getKeyMapsSize(); i++) {
ModelKeyMap keyMap = relation.getKeyMap(i);
fields.put(keyMap.getFieldName(), tempGV.get(keyMap.getRelFieldName()));
}
try {
relatedGVL = delegator.findByAnd(relationRelEntityName, fields, relatedOrderBy);
relationFound = true;
break;
} catch (GenericEntityException gee3) {
Debug.logError("An error occured while looking for " +
"entities related to secondary entity " +
tempGV.getEntityName() + " using relation " +
relationName + ": " + gee3.getLocalizedMessage(), module);
}
}
}
}
if ( !relationFound) {
Debug.logError("Error retrieving entity \"" +
relationRelEntityName + "\". Relation \"" + relationName +
"\" was not found on any entity in this screen section.", module);
}
// Get the first related entity so it can be appended to the related generic value vector.
GenericValue relatedGV = null;
if ( relatedGVL != null )
{
Iterator relatedGVI = relatedGVL.iterator();
if (relatedGVI.hasNext()) {
// At least one related entity was found. Use the first one.
relatedGV = (GenericValue) relatedGVI.next();
}
}
if ( relatedGV == null ){
// No related entity was found. Create an empty one.
ModelEntity relatedME = delegator.getModelEntity(relationRelEntityName);
relatedGV = new GenericValue(relatedME);
relatedGV.setDelegator(delegator);
}
return relatedGV;
}
//-------------------------------------------------------------------------
// CREATE - Creates a blank set of entities to prepare for an INSERT.
//-------------------------------------------------------------------------
public int processCreate(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix)
throws GenericEntityException {
int status = STATUS_CONTINUE;
// Trigger the pre-create event.
status = this.preCreate(userInfo, entityNameList, delegator, dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the create event.
status = this.create(userInfo, entityNameList, delegator, dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the post-create event.
status = this.postCreate(userInfo, entityNameList, delegator, dataMatrix);
return status;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param entityNameList
* @param delegator
* @param dataMatrix
*
* @return
*/
protected int preCreate(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix) {
return STATUS_CONTINUE;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param entityNameList
* @param delegator
* @param dataMatrix
*
* @return
*
* @throws GenericEntityException
*/
public int create(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix)
throws GenericEntityException {
// Create an empty entity so the section will show up.
dataMatrix.getCurrentBuffer().addEmptyRow();
return STATUS_CONTINUE;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param entityNameList
* @param delegator
* @param dataMatrix
*
* @return
*/
protected int postCreate(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix) {
return STATUS_CONTINUE;
}
//-------------------------------------------------------------------------
// SHOW_COPY - Preparing to show a copy of an existing record so it can be saved as a new record.
//-------------------------------------------------------------------------
public int processShowCopy(UserInfo userInfo, GenericDelegator delegator,
DataMatrix dataMatrix) throws GenericEntityException {
int status = STATUS_CONTINUE;
// Trigger the pre-ShowCopy event.
status = this.preShowCopy(userInfo, delegator, dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the showCopy event.
status = this.showCopy(userInfo, delegator, dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the post-ShowCopy event.
status = this.postShowCopy(userInfo, delegator, dataMatrix);
return status;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param delegator
* @param dataMatrix
*
* @return
*/
protected int preShowCopy(UserInfo userInfo, GenericDelegator delegator,
DataMatrix dataMatrix) {
return STATUS_CONTINUE;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param delegator
* @param dataMatrix
*
* @return
*
* @throws GenericEntityException
*/
public int showCopy(UserInfo userInfo, GenericDelegator delegator,
DataMatrix dataMatrix) throws GenericEntityException {
return STATUS_CONTINUE;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param delegator
* @param dataMatrix
*
* @return
*/
protected int postShowCopy(UserInfo userInfo, GenericDelegator delegator,
DataMatrix dataMatrix) {
return STATUS_CONTINUE;
}
//-------------------------------------------------------------------------
// SHOWQUERY - Creates a blank set of entities to prepare for query mode.
//-------------------------------------------------------------------------
public int processShowQuery(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix)
throws GenericEntityException {
int status = STATUS_CONTINUE;
// Trigger the pre-showQuery event.
status = this.preShowQuery(userInfo, entityNameList, delegator,
dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the showQuery event.
status = this.showQuery(userInfo, entityNameList, delegator, dataMatrix);
if (status != STATUS_CONTINUE) {
return status;
}
// Trigger the post-showQuery event.
status = this.postShowQuery(userInfo, entityNameList, delegator,
dataMatrix);
return status;
}
/**
* DOCUMENT ME!
*
* @param userInfo
* @param entityNameList
* @param delegator
* @param dataMatrix
*
* @return
*/
protected int preShowQuery(UserInfo userInfo, List entityNameList,
GenericDelegator delegator, DataMatrix dataMatrix) {
return STATUS_CONTINUE;
}
/**
* DOCUMENT ME!
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -