Package it.eng.qbe.model.structure

Examples of it.eng.qbe.model.structure.IModelEntity


    Map<String, List<ModelCalculatedField>> calculatedFields = structure.getCalculatedFields();
    Set keys = calculatedFields.keySet();
    Iterator keysIt = keys.iterator();
    while (keysIt.hasNext()) {
      String entityUniqueName = (String) keysIt.next();
      IModelEntity dataMartEntity = structure.getEntity(entityUniqueName);
      IModelEntity dataMartRootEntity = dataMartEntity.getRoot();
      List rootEntities = structure.getRootEntities(datamartName);
      if (rootEntities.contains(dataMartRootEntity)) {
        toReturn.put(entityUniqueName, calculatedFields.get(entityUniqueName));
      }
    }
View Full Code Here


    List allSelectFields;
    List<InLineCalculatedSelectField> selectInLineCalculatedFields = new ArrayList<InLineCalculatedSelectField>();
    AbstractSelectField selectAbstractField;
    DataMartSelectField selectField;
    InLineCalculatedSelectField selectInLineField;
    IModelEntity rootEntity;
    IModelField datamartField;
    String queryName;
    String rootEntityAlias;
    String selectClauseElement; // rootEntityAlias.queryName
    Map entityAliases;
     
    logger.debug("IN");
    buffer = new StringBuffer();
    try {
      selectFields = query.getSelectFields(true);
     
      if(selectFields == null ||selectFields.size() == 0) {
        return "";
      }
     
      entityAliases = (Map)entityAliasesMaps.get(query.getId());
           
      buffer.append(SELECT);   
      if (query.isDistinctClauseEnabled()) {
        buffer.append(" " + DISTINCT);
      }
     
      Iterator it = selectFields.iterator();
      if(it.hasNext()){
        selectAbstractField = (AbstractSelectField)it.next();
        String[] idsForQuery = new String[selectFields.size()-query.getCalculatedSelectFields(true).size()];
        int index=0;
        do{       
          if(selectAbstractField.isDataMartField()){
         
            selectField = (DataMartSelectField)selectAbstractField;
           
            logger.debug("select field unique name [" + selectField.getUniqueName() + "]");
           
            datamartField = getDataSource().getModelStructure().getField(selectField.getUniqueName());
           
            Couple queryNameAndRoot = datamartField.getQueryName();
           
            queryName = (String) queryNameAndRoot.getFirst();
            logger.debug("select field query name [" + queryName + "]");
           
            if(queryNameAndRoot.getSecond()!=null){
              rootEntity = (IModelEntity)queryNameAndRoot.getSecond();  
            }else{
              rootEntity = datamartField.getParent().getRoot();  
            }
           
             
            logger.debug("select field root entity unique name [" + rootEntity.getUniqueName() + "]");
           
            rootEntityAlias = (String)entityAliases.get(rootEntity.getUniqueName());
            if(rootEntityAlias == null) {
              rootEntityAlias = getNextAlias(entityAliasesMaps);
              entityAliases.put(rootEntity.getUniqueName(), rootEntityAlias);
            }
            logger.debug("select field root entity alias [" + rootEntityAlias + "]");
           
           
            selectClauseElement = rootEntityAlias + "." + queryName.substring(0,1).toLowerCase()+queryName.substring(1);
View Full Code Here

        logger.debug("entity [" + entityUniqueName +"]");
       
        String entityAlias = (String)entityAliases.get(entityUniqueName);
        logger.debug("entity alias [" + entityAlias +"]");
       
        IModelEntity datamartEntity =  getDataSource().getModelStructure().getEntity(entityUniqueName);
       
        addTableFakeCondition(datamartEntity.getName(), entityAlias);
       
        String whereClauseElement = datamartEntity.getName() + " " + entityAlias;
        logger.debug("where clause element [" + whereClauseElement +"]");
       
        buffer.append(" " + whereClauseElement);
        if( it.hasNext() ) {
          buffer.append(",");
View Full Code Here

  }
 
  private String buildFieldOperand(Operand operand, Query query, Map entityAliasesMaps) {
    String operandElement;
    IModelField datamartField;
    IModelEntity rootEntity;
    String queryName;
    String rootEntityAlias;
    Map targetQueryEntityAliasesMap;
   
    logger.debug("IN");
   
    try {
     
      targetQueryEntityAliasesMap = (Map)entityAliasesMaps.get(query.getId());
      Assert.assertNotNull(targetQueryEntityAliasesMap, "Entity aliases map for query [" + query.getId() + "] cannot be null in order to execute method [buildUserProvidedWhereField]");
     
     
      datamartField = getDataSource().getModelStructure().getField( operand.values[0] );
      Assert.assertNotNull(datamartField, "DataMart does not cantain a field named [" + operand.values[0] + "]");
      Couple queryNameAndRoot = datamartField.getQueryName();
     
      queryName = (String) queryNameAndRoot.getFirst();
      logger.debug("select field query name [" + queryName + "]");
     
      if(queryNameAndRoot.getSecond()!=null){
        rootEntity = (IModelEntity)queryNameAndRoot.getSecond();  
      }else{
        rootEntity = datamartField.getParent().getRoot();  
      }
      logger.debug("where field query name [" + queryName + "]");
     
      logger.debug("where field root entity unique name [" + rootEntity.getUniqueName() + "]");
     
      if(!targetQueryEntityAliasesMap.containsKey(rootEntity.getUniqueName())) {
        logger.debug("Entity [" + rootEntity.getUniqueName() + "] require a new alias");
        rootEntityAlias = getNextAlias(entityAliasesMaps);
        logger.debug("A new alias has been generated [" + rootEntityAlias + "]");       
        targetQueryEntityAliasesMap.put(rootEntity.getUniqueName(), rootEntityAlias);
      }
      rootEntityAlias = (String)targetQueryEntityAliasesMap.get( rootEntity.getUniqueName() );
      logger.debug("where field root entity alias [" + rootEntityAlias + "]");
     
      if (operand instanceof HavingField.Operand) {
        HavingField.Operand havingFieldOperand = (HavingField.Operand) operand;
        IAggregationFunction function = havingFieldOperand.function;
View Full Code Here

   
    String[] chunks;
    String parentQueryId;
    String fieldName;
    IModelField datamartField;
    IModelEntity rootEntity;
    String queryName;
    String rootEntityAlias;
   
   
    logger.debug("IN");
   
    try {
     
      // it comes directly from the client side GUI. It is a composition of the parent query id and filed name,
      // separated by a space
      logger.debug("operand  is equals to [" + operand.values[0] + "]");
     
      chunks = operand.values[0].split(" ");
      Assert.assertTrue(chunks.length >= 2, "Operand [" + chunks.toString() + "] does not contains enougth informations in order to resolve the reference to parent field");
     
      parentQueryId = chunks[0];
      logger.debug("where right-hand field belonging query [" + parentQueryId + "]");
      fieldName = chunks[1];
      logger.debug("where right-hand field unique name [" + fieldName + "]");

      datamartField = getDataSource().getModelStructure().getField( fieldName );
      Assert.assertNotNull(datamartField, "DataMart does not cantain a field named [" + fieldName + "]");
     
      Couple queryNameAndRoot = datamartField.getQueryName();
     
      queryName = (String) queryNameAndRoot.getFirst();
      logger.debug("select field query name [" + queryName + "]");
     
      if(queryNameAndRoot.getSecond()!=null){
        rootEntity = (IModelEntity)queryNameAndRoot.getSecond();  
      }else{
        rootEntity = datamartField.getParent().getRoot();  
      }
      logger.debug("where right-hand field query name [" + queryName + "]");
      logger.debug("where right-hand field root entity unique name [" + rootEntity.getUniqueName() + "]");
     
      Map parentEntityAliases = (Map)entityAliasesMaps.get(parentQueryId);
      if(parentEntityAliases != null) {
        if(!parentEntityAliases.containsKey(rootEntity.getUniqueName())) {
          Assert.assertUnreachable("Filter of subquery [" + query.getId() + "] refers to a non " +
              "existing parent query [" + parentQueryId + "] entity [" + rootEntity.getUniqueName() + "]");
        }
        rootEntityAlias = (String)parentEntityAliases.get( rootEntity.getUniqueName() );
      } else {
        rootEntityAlias = "unresoved_alias";
        logger.warn("Impossible to get aliases map for parent query [" + parentQueryId +"]. Probably the parent query ha not been compiled yet");         
        logger.warn("Query [" + query.getId() +"] refers entities of its parent query [" + parentQueryId +"] so the generated statement wont be executable until the parent query will be compiled");         
      }
View Full Code Here

  }
 
 
  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();
      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)
          Couple queryNameAndRoot = datamartField.getQueryName();
          queryName = (String) queryNameAndRoot.getFirst();
          logger.debug("select field query name [" + queryName + "]");
         
          if(queryNameAndRoot.getSecond()!=null){
            rootEntity = (IModelEntity)queryNameAndRoot.getSecond();  
          }else{
            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;
        }
View Full Code Here

    IModelAccessModality dataMartModelAccessModality = getDataSource().getModelAccessModality();
   
    Iterator it = entityAliases.keySet().iterator();
    while(it.hasNext()){
      String entityUniqueName = (String)it.next();
      IModelEntity entity = dataMartModelStructure.getEntity( entityUniqueName );
     
      // check for condition filter on this entity
      List filters = dataMartModelAccessModality.getEntityFilterConditions(entity.getType());
      if(filters!=null){
        for(int i = 0; i < filters.size(); i++) {
          Filter filter = (Filter)filters.get(i);
          Set fields = filter.getFields();
          Properties props = new Properties();
          Iterator fieldIterator = fields.iterator();
          while(fieldIterator.hasNext()) {
            String fieldName = (String)fieldIterator.next();
            String entityAlias = (String)entityAliases.get(entityUniqueName);
            props.put(fieldName, entityAlias + "." + fieldName);
          }
          String filterCondition = null;
          try {
            filterCondition = StringUtils.replaceParameters(filter.getFilterCondition(), "F", props);
          } catch (IOException e) {
            e.printStackTrace();
          }
         
          if(filterCondition != null) {
            if(buffer.toString().length() > 0) {
              buffer.append(" and ");
            } else {
              buffer.append("where ");
            }
            buffer.append(filterCondition + " ");
          }
        }
       
       
       
        if(dataMartModelAccessModality.getRecursiveFiltering() == null
            || dataMartModelAccessModality.getRecursiveFiltering().booleanValue() == true) {
          //  check for condition filter on sub entities
          List subEntities = entity.getAllSubEntities();
          for(int i = 0; i < subEntities.size(); i++) {
            IModelEntity subEntity = (IModelEntity)subEntities.get(i);
            filters = dataMartModelAccessModality.getEntityFilterConditions(subEntity.getType());
            for(int j = 0; j < filters.size(); j++) {
              Filter filter = (Filter)filters.get(j);
              Set fields = filter.getFields();
              Properties props = new Properties();
              Iterator fieldIterator = fields.iterator();
              while(fieldIterator.hasNext()) {
                String fieldName = (String)fieldIterator.next();
                IModelField filed = null;
                Iterator subEntityFields = subEntity.getAllFields().iterator();
                while(subEntityFields.hasNext()) {
                  filed = (IModelField)subEntityFields.next();
                  if(((String)filed.getQueryName().getFirst()).endsWith("." + fieldName)) break;
                }
                String entityAlias = (String)entityAliases.get(entityUniqueName);
View Full Code Here

        DataMartSelectField groupByField = (DataMartSelectField)abstractSelectedField;
        IModelField datamartField = getDataSource().getModelStructure().getField(groupByField.getUniqueName());
       
           
        Couple queryNameAndRoot = datamartField.getQueryName();
        IModelEntity root;
        String queryName = (String) queryNameAndRoot.getFirst();
        logger.debug("select field query name [" + queryName + "]");
       
        if(queryNameAndRoot.getSecond()!=null){
          root = (IModelEntity)queryNameAndRoot.getSecond();  
        }else{
          root = datamartField.getParent().getRoot();  
        }
       
       
        if(!entityAliases.containsKey(root.getUniqueName())) {
          entityAliases.put(root.getUniqueName(), getNextAlias(entityAliasesMaps));
        }
        String entityAlias = (String)entityAliases.get( root.getUniqueName() );
        fieldName = entityAlias + "." +queryName;
      }
      buffer.append(" " + fieldName);
      if( it.hasNext() ) {
        buffer.append(",");
View Full Code Here

     
      Assert.assertTrue(selectField.isOrderByField(), "Field [" + selectField.getUniqueName() +"] is not an orderBy filed");
     
      IModelField datamartField = getDataSource().getModelStructure().getField(selectField.getUniqueName());
      Couple queryNameAndRoot = datamartField.getQueryName();
      IModelEntity root;
      String queryName = (String) queryNameAndRoot.getFirst();
      logger.debug("select field query name [" + queryName + "]");
     
      if(queryNameAndRoot.getSecond()!=null){
        root = (IModelEntity)queryNameAndRoot.getSecond();  
      }else{
        root = datamartField.getParent().getRoot();  
      }
     
      if(!entityAliases.containsKey(root.getUniqueName())) {
        entityAliases.put(root.getUniqueName(), getNextAlias(entityAliasesMaps));
      }
      String entityAlias = (String)entityAliases.get( root.getUniqueName() );
      String fieldName = entityAlias + "." + queryName;
      buffer.append(" " + selectField.getFunction().apply(fieldName));
      buffer.append(" " + (selectField.isAscendingOrder()?"ASC": "DESC") );
           
      if( it.hasNext() ) {
View Full Code Here

  public Set getSelectedEntities() {
    Set selectedEntities;
    Map entityAliasesMaps;
    Iterator entityUniqueNamesIterator;
    String entityUniqueName;
    IModelEntity entity;
   
   
    Assert.assertNotNull( getQuery(), "Input parameter 'query' cannot be null");
    Assert.assertTrue(! getQuery().isEmpty(), "Input query cannot be empty (i.e. with no selected fields)");
   
View Full Code Here

TOP

Related Classes of it.eng.qbe.model.structure.IModelEntity

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.