Package it.eng.spagobi.tools.dataset.bo

Examples of it.eng.spagobi.tools.dataset.bo.JDBCDataSet


      String fileName = getAttributeAsString(DataSetConstants.FILE_NAME);
      ((FileDataSet)ds).setFileName(fileName);   
    }

    if(dsType.equalsIgnoreCase(DataSetConstants.DS_QUERY)){   
      ds=new JDBCDataSet();
      String query = getAttributeAsString(DataSetConstants.QUERY);
      String dataSourceLabel = getAttributeAsString(DataSetConstants.DATA_SOURCE);
      ((JDBCDataSet)ds).setQuery(query);
      if(dataSourceLabel!=null && !dataSourceLabel.equals("")){
        IDataSource dataSource;
View Full Code Here


        int beginIndex = sqlStatement.toUpperCase().indexOf(" FROM ") + " FROM ".length();
        int endIndex = sqlStatement.indexOf(" ", beginIndex);
        String inlineSQLQuery = sqlStatement.substring(0, beginIndex) + " ( " + sqlQuery + " ) TEMP " + sqlStatement.substring(endIndex);
        logger.debug("Executable query for user [" + userProfile.getUserId() + "] (SQL): [" + inlineSQLQuery + "]");
        auditlogger.info("[" + userProfile.getUserId() + "]:: SQL: " + inlineSQLQuery);
        JDBCDataSet dataSet = new JDBCDataSet();
        dataSet.setDataSource(dataSource);
        dataSet.setQuery(inlineSQLQuery);
        dataSet.loadData();
        dataStore = (DataStore) dataSet.getDataStore();
      } else {
        logger.debug("Using temporary table strategy....");
   
        logger.debug("Temporary table definition for user [" + userProfile.getUserId() + "] (SQL): [" + sqlQuery + "]");
   
View Full Code Here

    // injecting temporary table name into SQL statement
    int beginIndex = sqlStatement.toUpperCase().indexOf(" FROM ") + " FROM ".length();
    int endIndex = sqlStatement.indexOf(" ", beginIndex);
    sqlStatement = sqlStatement.substring(0, beginIndex) + tableName + sqlStatement.substring(endIndex);
    logger.debug("SQL statement is [" + sqlStatement + "]");
    JDBCDataSet dataSet = new JDBCDataSet();
    dataSet.setDataSource(dataSource);
    dataSet.setQuery(sqlStatement);
    dataSet.loadData();
    DataStore dataStore = (DataStore) dataSet.getDataStore();
    logger.debug("Data store retrieved successfully");
    logger.debug("OUT");
    return dataStore;
   
  }
View Full Code Here

            dataStore = dataSet.getDataStore();
         
          } else {
            // case of FormEngine
           
            JDBCDataSet dataset = new JDBCDataSet();
            IDataSource datasource = (IDataSource) this.getEnv().get( EngineConstants.ENV_DATASOURCE );
            dataset.setDataSource(datasource);
            dataset.setUserProfileAttributes(UserProfileUtils.getProfileAttributes( (UserProfile) this.getEnv().get(EngineConstants.ENV_USER_PROFILE)));
            dataset.setQuery(sqlQuery);
            logger.debug("Executing query ...");
            dataset.loadData();
            dataStore = dataset.getDataStore();
          }
         
          Exporter exp = new Exporter(dataStore);
          exp.setExtractedFields(extractedFields);
         
View Full Code Here

    Integer start;
    JSONArray groupFields;
    Integer maxSize;
    boolean isMaxResultsLimitBlocking;
    IDataStore dataStore;
    JDBCDataSet dataSet;
    JSONDataWriter dataSetWriter;
   
    Query query;
    IStatement statement;
   
    Integer resultNumber;
    JSONObject gridDataFeed = new JSONObject();
   
    Monitor totalTimeMonitor = null;
    Monitor errorHitsMonitor;
         
    logger.debug("IN");
   
    try {
   
      super.service(request, response)
     
      totalTimeMonitor = MonitorFactory.start("QbeEngine.executeQueryAction.totalTime");
     
      start = getAttributeAsInteger( START )
      logger.debug("Parameter [" + START + "] is equals to [" + start + "]");
     
      limit = getAttributeAsInteger( LIMIT );
      logger.debug("Parameter [" + LIMIT + "] is equals to [" + limit + "]");
     
      groupFields = getAttributeAsJSONArray( GROUPBY_FIELDS );
      logger.debug("Parameter [" + GROUPBY_FIELDS + "] is equals to [" + groupFields + "]");
      Assert.assertNotNull(groupFields, "Parameter [" + GROUPBY_FIELDS + "] cannot be null");
      Assert.assertTrue(groupFields.length() > 0, "GroupBy fileds list cannot be empty");
           
      maxSize = QbeEngineConfig.getInstance().getResultLimit();     
      logger.debug("Configuration setting  [" + "QBE.QBE-SQL-RESULT-LIMIT.value" + "] is equals to [" + (maxSize != null? maxSize: "none") + "]");
      isMaxResultsLimitBlocking = QbeEngineConfig.getInstance().isMaxResultLimitBlocking();
      logger.debug("Configuration setting  [" + "QBE.QBE-SQL-RESULT-LIMIT.isBlocking" + "] is equals to [" + isMaxResultsLimitBlocking + "]");
     
      Assert.assertNotNull(getEngineInstance(), "It's not possible to execute " + this.getActionName() + " service before having properly created an instance of EngineInstance class");
     
     
      // STEP 1: modify the query according to the input that come from the form
      query = getEngineInstance().getQueryCatalogue().getFirstQuery();
     
      // ... query transformation goes here 
      logger.debug("Making a deep copy of the original query...");
      String store = ((JSONObject)SerializerFactory.getSerializer("application/json").serialize(query, getEngineInstance().getDataSource(), getLocale())).toString();
      Query copy = SerializerFactory.getDeserializer("application/json").deserializeQuery(store, getEngineInstance().getDataSource());
      logger.debug("Deep copy of the original query produced");
     
      String jsonEncodedFormState = getAttributeAsString( FORM_STATE );
      logger.debug("Form state retrieved as a string: " + jsonEncodedFormState);
      JSONObject formState = new JSONObject(jsonEncodedFormState);
      logger.debug("Form state converted into a valid JSONObject: " + formState.toString(3));
      JSONObject template = (JSONObject) getEngineInstance().getFormState().getConf();
      logger.debug("Form viewer template retrieved.");
     
      FormViewerQueryTransformer formViewerQueryTransformer = new FormViewerQueryTransformer();
      formViewerQueryTransformer.setFormState(formState);
      formViewerQueryTransformer.setTemplate(template);
      logger.debug("Applying Form Viewer query transformation...");
      query = formViewerQueryTransformer.execTransformation(copy);
      logger.debug("Applying Form Viewer query transformation...");
     
      updatePromptableFiltersValue(query);
      getEngineInstance().setActiveQuery(query);
     
     
      // STEP 2: prepare statment and obtain the corresponding sql query
      statement = getEngineInstance().getStatment()
      statement.setParameters( getEnv() );
     
      //String jpaQueryStr = statement.getQueryString();
      String sqlQuery = statement.getSqlQueryString();
     
      UserProfile userProfile = (UserProfile)getEnv().get(EngineConstants.ENV_USER_PROFILE);
     
     
      // STEP 3: transform the sql query
      GroupByQueryTransformer transformer = new GroupByQueryTransformer();
      List selectFields = SqlUtils.getSelectFields(sqlQuery);
     
      for(int i = 0; i < groupFields.length(); i++) {
        String groupByField = groupFields.getString(i);
        int fieldIndex = query.getSelectFieldIndex(groupByField);   
        Assert.assertTrue(fieldIndex >= 0 && fieldIndex <selectFields.size(), "Impossible to group on field [" + groupByField + "]");
        String[] f = (String[])selectFields.get(fieldIndex);       
        transformer.addGrouByColumn(f[1]!=null? f[1]:f[0], query.getSelectFieldByIndex(fieldIndex).getAlias());
      }
     
      // count column
      transformer.addAggregateColumn("*"/*f[1]!=null? f[1]:f[0]*/, "COUNT", "Records");
     
      // aggregate measures
      List dataMartSelectFields = query.getDataMartSelectFields(true);
      Iterator it = dataMartSelectFields.iterator();
      while (it.hasNext()) {
        DataMartSelectField field = (DataMartSelectField) it.next();
        int fieldIndex = query.getSelectFieldIndex(field.getUniqueName());       
        String[] f = (String[])selectFields.get(fieldIndex);
        IAggregationFunction aggregationFunction = field.getFunction();
        if (aggregationFunction != null && aggregationFunction != AggregationFunctions.NONE_FUNCTION) {
          transformer.addAggregateColumn(f[1]!=null? f[1]:f[0], aggregationFunction.getName(), field.getAlias());
        }
      }
     
      sqlQuery = (String)transformer.transformQuery(sqlQuery);
     
      // STEP 4: execute the query
     
      try {
        logger.debug("Executing query: [" + sqlQuery + "]");
        auditlogger.info("[" + userProfile.getUserId() + "]:: SQL: " + sqlQuery);
       
        dataSet = new JDBCDataSet();
        ConnectionDescriptor connection = (ConnectionDescriptor)getDataSource().getConfiguration().loadDataSourceProperties().get("connection");
        DataSource dataSource = new DataSource();
        dataSource.setJndi(connection.getJndiName());
        dataSource.setHibDialectName(connection.getDialect());
        dataSource.setUrlConnection(connection.getUrl());
        dataSource.setDriver(connection.getDriverClass());
        dataSource.setUser(connection.getUsername());
        dataSource.setPwd(connection.getPassword());
        dataSet.setDataSource(dataSource);
        dataSet.setQuery(sqlQuery);
        dataSet.loadData(start, limit, -1);
        dataStore = dataSet.getDataStore();
      } catch (Exception e) {
        logger.debug("Query execution aborted because of an internal exceptian");
        SpagoBIEngineServiceException exception;
        String message;
       
        message = "An error occurred in " + getActionName() + " service while executing query: [" +  statement.getQueryString() + "]";       
        exception = new SpagoBIEngineServiceException(getActionName(), message, e);
        exception.addHint("Check if the query is properly formed: [" + statement.getQueryString() + "]");
        exception.addHint("Check connection configuration");
        exception.addHint("Check the qbe jar file");
       
        throw exception;
      }
      logger.debug("Query executed succesfully");
     
     
      //dataStore.getMetaData().setProperty("resultNumber", new Integer( (int)dataStore.getRecordsCount() ));
     
      resultNumber = (Integer)dataStore.getMetaData().getProperty("resultNumber");
      Assert.assertNotNull(resultNumber, "property [resultNumber] of the dataStore returned by loadData method of the class [" + dataSet.getClass().getName()+ "] cannot be null");
      logger.debug("Total records: " + resultNumber);     
     
     
      boolean overflow = maxSize != null && resultNumber >= maxSize;
      if (overflow) {
View Full Code Here

      ((FileDataSet)ds).setFileName(((SbiFileDataSet)hibDataSet).getFileName());   
      ds.setDsType(DataSetConstants.FILE);
    }

    if(hibDataSet instanceof SbiQueryDataSet){     
      ds=new JDBCDataSet();
      ((JDBCDataSet)ds).setQuery(((SbiQueryDataSet)hibDataSet).getQuery());

      SbiDataSource sbids=((SbiQueryDataSet)hibDataSet).getDataSource();
      if(sbids!=null){
        DataSourceDAOHibImpl dataSourceDao=new DataSourceDAOHibImpl();
View Full Code Here

    Integer start;
    JSONArray filters;
    Integer maxSize;
    boolean isMaxResultsLimitBlocking;
    IDataStore dataStore;
    JDBCDataSet dataSet;
    JSONDataWriter dataSetWriter;
   
    Query query;
    IStatement statement;
   
    Integer resultNumber;
    JSONObject gridDataFeed = new JSONObject();
   
    Monitor totalTimeMonitor = null;
    Monitor errorHitsMonitor;
         
    logger.debug("IN");
   
    try {
   
      super.service(request, response)
     
      totalTimeMonitor = MonitorFactory.start("QbeEngine.executeQueryAction.totalTime");
     
      start = getAttributeAsInteger( START )
      logger.debug("Parameter [" + START + "] is equals to [" + start + "]");
     
      limit = getAttributeAsInteger( LIMIT );
      logger.debug("Parameter [" + LIMIT + "] is equals to [" + limit + "]");
     
      filters = getAttributeAsJSONArray( FILTERS );
      logger.debug("Parameter [" + FILTERS + "] is equals to [" + filters + "]");
      Assert.assertNotNull(filters, "Parameter [" + FILTERS + "] cannot be null");
      Assert.assertTrue(filters.length() > 0, "GroupBy fileds list cannot be empty");
           
      maxSize = QbeEngineConfig.getInstance().getResultLimit();     
      logger.debug("Configuration setting  [" + "QBE.QBE-SQL-RESULT-LIMIT.value" + "] is equals to [" + (maxSize != null? maxSize: "none") + "]");
      isMaxResultsLimitBlocking = QbeEngineConfig.getInstance().isMaxResultLimitBlocking();
      logger.debug("Configuration setting  [" + "QBE.QBE-SQL-RESULT-LIMIT.isBlocking" + "] is equals to [" + isMaxResultsLimitBlocking + "]");
     
      Assert.assertNotNull(getEngineInstance(), "It's not possible to execute " + this.getActionName() + " service before having properly created an instance of EngineInstance class");
     
     
      // STEP 1: modify the query according to the input that come from the form
      query = getEngineInstance().getQueryCatalogue().getFirstQuery();     
      // ... query transformation goes here 
     
      logger.debug("Making a deep copy of the original query...");
      String store = ((JSONObject)SerializerFactory.getSerializer("application/json").serialize(query, getEngineInstance().getDataSource(), getLocale())).toString();
      Query copy = SerializerFactory.getDeserializer("application/json").deserializeQuery(store, getEngineInstance().getDataSource());
      logger.debug("Deep copy of the original query produced");
     
      String jsonEncodedFormState = getAttributeAsString( FORM_STATE );
      logger.debug("Form state retrieved as a string: " + jsonEncodedFormState);
      JSONObject formState = new JSONObject(jsonEncodedFormState);
      logger.debug("Form state converted into a valid JSONObject: " + formState.toString(3));
      JSONObject template = (JSONObject) getEngineInstance().getFormState().getConf();
      logger.debug("Form viewer template retrieved.");
     
      FormViewerQueryTransformer formViewerQueryTransformer = new FormViewerQueryTransformer();
      formViewerQueryTransformer.setFormState(formState);
      formViewerQueryTransformer.setTemplate(template);
      logger.debug("Applying Form Viewer query transformation...");
      query = formViewerQueryTransformer.execTransformation(copy);
      logger.debug("Applying Form Viewer query transformation...");
     
      updatePromptableFiltersValue(query);
      getEngineInstance().setActiveQuery(query);
     
     
     
      // STEP 2: prepare statment and obtain the corresponding sql query
      statement = getEngineInstance().getStatment()
      statement.setParameters( getEnv() );
     
      String jpaQueryStr = statement.getQueryString();
      String sqlQuery = statement.getSqlQueryString();
      logger.debug("Executable query (HQL/JPQL): [" +  jpaQueryStr+ "]");
      //logger.debug("Executable query (SQL): [" + sqlQuery + "]");
      UserProfile userProfile = (UserProfile)getEnv().get(EngineConstants.ENV_USER_PROFILE);
      //auditlogger.info("[" + userProfile.getUserId() + "]:: HQL: " + hqlQuery);
      //auditlogger.info("[" + userProfile.getUserId() + "]:: SQL: " + sqlQuery);
     
      // STEP 3: transform the sql query
      FilterQueryTransformer transformer = new FilterQueryTransformer();
      List selectFields = SqlUtils.getSelectFields(sqlQuery);
     
      List queryFields = query.getDataMartSelectFields(true);
      for(int i = 0; i < queryFields.size(); i++) {
        ISelectField queryField = (ISelectField)queryFields.get(i);
        String[] f = (String[])selectFields.get(i)
        transformer.addColumn(f[1]!=null? f[1]:f[0], f[1]!=null? f[1]:f[0]);       
      }
     
      for(int i = 0; i < filters.length(); i++) {
        JSONObject filter = filters.getJSONObject(i);
        String columnName = filter.getString("columnName");
        String value = filter.getString("value");
       
        int fieldIndex = query.getSelectFieldIndex(columnName);       
        String[] f = (String[])selectFields.get(fieldIndex);   
        transformer.addFilter(f[1]!=null? f[1]:f[0], value);
      }
     
      sqlQuery = (String)transformer.transformQuery(sqlQuery);
     
      // put the query into session
      this.setAttributeInSession(LAST_DETAIL_QUERY, sqlQuery);
     
      // STEP 4: execute the query
     
      try {
        logger.debug("Executing query: [" + sqlQuery + "]");
        auditlogger.info("[" + userProfile.getUserId() + "]:: SQL: " + sqlQuery);
       
        dataSet = new JDBCDataSet();
        //Session session = getDatamartModel().getDataSource().getSessionFactory().openSession();
        ConnectionDescriptor connection = (ConnectionDescriptor)getDataSource().getConfiguration().loadDataSourceProperties().get("connection");
        DataSource dataSource = new DataSource();
        dataSource.setJndi(connection.getJndiName());
        dataSource.setHibDialectName(connection.getDialect());
        dataSource.setUrlConnection(connection.getUrl());
        dataSource.setDriver(connection.getDriverClass());
        dataSource.setUser(connection.getUsername());
        dataSource.setPwd(connection.getPassword());
        dataSet.setDataSource(dataSource);
        dataSet.setQuery(sqlQuery);
        dataSet.loadData(start, limit, -1);
        dataStore = dataSet.getDataStore();
        IDataStoreMetaData dataStoreMetadata = dataStore.getMetaData();
        for(int i = 0; i < dataStoreMetadata.getFieldCount(); i++) {
          ISelectField queryField = (ISelectField)queryFields.get(i);
          dataStoreMetadata.changeFieldAlias(i, queryField.getAlias());
        }
      } catch (Exception e) {
        logger.debug("Query execution aborted because of an internal exceptian");
        SpagoBIEngineServiceException exception;
        String message;
       
        message = "An error occurred in " + getActionName() + " service while executing query: [" +  statement.getQueryString() + "]";       
        exception = new SpagoBIEngineServiceException(getActionName(), message, e);
        exception.addHint("Check if the query is properly formed: [" + statement.getQueryString() + "]");
        exception.addHint("Check connection configuration");
        exception.addHint("Check the qbe jar file");
       
        throw exception;
      }
      logger.debug("Query executed succesfully");
     
     
      //dataStore.getMetaData().setProperty("resultNumber", new Integer( (int)dataStore.getRecordsCount() ));
     
      resultNumber = (Integer)dataStore.getMetaData().getProperty("resultNumber");
      Assert.assertNotNull(resultNumber, "property [resultNumber] of the dataStore returned by loadData method of the class [" + dataSet.getClass().getName()+ "] cannot be null");
      logger.debug("Total records: " + resultNumber);     
     
     
      boolean overflow = maxSize != null && resultNumber >= maxSize;
      if (overflow) {
View Full Code Here

  private int getResultNumberUsingInlineView(org.hibernate.Query hibernateQuery, Session session) throws Exception {
    int resultNumber = 0;
    logger.debug("IN");
    String sqlQuery = "SELECT COUNT(*) FROM (" + statement.getSqlQueryString() + ") temptable";
    logger.debug("Executing query " + sqlQuery + " ...");
    JDBCDataSet dataSet = new JDBCDataSet();
    JDBCSharedConnectionDataProxy proxy = new JDBCSharedConnectionDataProxy(session.connection());
    dataSet.setDataProxy(proxy);
    dataSet.setQuery(sqlQuery);
    dataSet.loadData(0, 1, -1);
    logger.debug("Query " + sqlQuery + " executed");
    IDataStore dataStore = dataSet.getDataStore();
    logger.debug("Data store retrieved");
    resultNumber = ((Number)dataStore.getRecordAt(0).getFieldAt(0).getValue()).intValue();
    logger.debug("Result number is " + resultNumber);
    resultNumber = resultNumber < 0? 0: resultNumber;
    logger.debug("OUT: returning " + resultNumber);
View Full Code Here

      String fileName = getAttributeAsString(DataSetConstants.FILE_NAME);
      ((FileDataSet)ds).setFileName(fileName);   
    }

    if(dsType.equalsIgnoreCase(DataSetConstants.DS_QUERY)){   
      ds=new JDBCDataSet();
      String query = getAttributeAsString(DataSetConstants.QUERY);
      String dataSourceLabel = getAttributeAsString(DataSetConstants.DATA_SOURCE);
      ((JDBCDataSet)ds).setQuery(query);
      if(dataSourceLabel!=null && !dataSourceLabel.equals("")){
        IDataSource dataSource;
View Full Code Here

      IDataSet dataSet;
     
      dataSet = (IDataSet)getEnv().get(EngineConstants.ENV_DATASET);

      if(dataSet == null) {
        JDBCDataSet jdbcDataSet = new JDBCDataSet();
        jdbcDataSet.setQuery(query);
        jdbcDataSet.setDataSource(dataSource);
        dataSet = jdbcDataSet;
        dataSet.setParamsMap(getEnv());
      }
     
          
View Full Code Here

TOP

Related Classes of it.eng.spagobi.tools.dataset.bo.JDBCDataSet

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.