public String parseInLinecalculatedField(String expr, Query query, Map entityAliasesMaps){
List allSelectFields;
IModelEntity rootEntity;
IModelField datamartField;
String queryName;
String rootEntityAlias;
Map entityAliases = (Map)entityAliasesMaps.get(query.getId());
List<String> aliasEntityMapping = new ArrayList<String>();
List<String> aliases = new ArrayList<String>();
StringTokenizer stk = new StringTokenizer(expr, "+-|*/()");
while(stk.hasMoreTokens()){
String alias = stk.nextToken().trim();
// alias can contain "DISTINCT" HQL/SQL key: we have to remove it
if (alias.toUpperCase().startsWith("DISTINCT ")) {
alias = alias.substring("DISTINCT ".length());
}
String uniqueName;
allSelectFields = query.getSelectFields(false);
for(int i=0; i<allSelectFields.size(); i++){
if(allSelectFields.get(i).getClass().equals(DataMartSelectField.class) && ((DataMartSelectField)allSelectFields.get(i)).getAlias().equals(alias)){
uniqueName=((DataMartSelectField)allSelectFields.get(i)).getUniqueName();
datamartField = getDataSource().getModelStructure().getField(uniqueName);
queryName = (String)datamartField.getQueryName().getFirst();
rootEntity = datamartField.getParent().getRoot();
rootEntityAlias = (String)entityAliases.get(rootEntity.getUniqueName());
queryName = ((DataMartSelectField)allSelectFields.get(i)).getFunction().apply(rootEntityAlias+"."+queryName);
aliasEntityMapping.add(queryName);
aliases.add(alias);
break;