2018-06-03 22:26:41 +08:00

79 lines
2.9 KiB
Java
Raw Permalink Blame History

package com.amarsoft.app.base.businessobject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectQuery;
import com.amarsoft.are.jbo.JBOException;
import com.amarsoft.are.jbo.ql.DefaultParser;
import com.amarsoft.are.jbo.ql.Element;
import com.amarsoft.are.jbo.ql.JBOClass;
import com.amarsoft.are.lang.StringX;
public class BusinessObjectQuery{
protected BizObjectQuery bizObjectQuery;
protected Map<String,String[]> selectAttributeMap;
protected Map<String,String> classMap;
public BusinessObjectQuery(BizObjectQuery bizObjectQuery) {
this.bizObjectQuery=bizObjectQuery;
}
public BizObjectQuery getBizObjectQuery(){
return bizObjectQuery;
}
public void init(Map<String,String[]> selectAttributeMap,String whereString) throws JBOException{
this.classMap=new HashMap<String,String>();
this.selectAttributeMap=selectAttributeMap;
DefaultParser parser = new DefaultParser();
parser.parse(bizObjectQuery.getBizObjectClass(),whereString);
Element[] elementArray = parser.getElementSequence();
for(int i=0;i<elementArray.length;i++){
Element element=elementArray[i];
if(element instanceof JBOClass){
classMap.put(((JBOClass) element).getAlias(), ((JBOClass) element).getName());
}
}
}
public List<BusinessObject> getResultList(boolean flag) throws JBOException {
List<BizObject> bizObjectList = (List<BizObject>)bizObjectQuery.getResultList(flag);
List<BusinessObject> businessObjectList = new ArrayList<BusinessObject>(bizObjectList.size());
for(BizObject bizObject:bizObjectList){
BusinessObject businessObject =convertToBusinessObject(bizObject);
businessObjectList.add(businessObject);
}
return businessObjectList;
}
public BusinessObject convertToBusinessObject(BizObject bizObject)throws JBOException {
BusinessObject businessObject = BusinessObject.createBusinessObject(bizObject.getBizObjectClass().getRoot().getAbsoluteName());
for(String attributeName:selectAttributeMap.keySet()){
Object value = bizObject.getAttribute(attributeName);
if(value==null) continue;
String[] queryAttribute=selectAttributeMap.get(attributeName);
if(StringX.isEmpty(queryAttribute[0])||queryAttribute[0].equalsIgnoreCase("O")){//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ֶ<EFBFBD>
businessObject.setAttributeValue(attributeName, value);
}
else{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
String subClassName = this.classMap.get(queryAttribute[0]);
BusinessObject subObject = businessObject.getBusinessObject(queryAttribute[0]);
if(subObject==null){
subObject = BusinessObject.createBusinessObject(subClassName);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵȥ<D6B5><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊͬ<CEAA><CDAC>״̬
subObject.changeState(bizObject.getState());
}
subObject.setAttributeValue(attributeName, value);
}
}
businessObject.changeState(bizObject.getState());
return businessObject;
}
}