Package it.eng.spagobi.tools.dataset.common.datastore

Examples of it.eng.spagobi.tools.dataset.common.datastore.DataStoreMetaData


        }
      }
      dataSet.setParamsMap(parameters);
      dataSet.loadData();
      IDataStore dataStore = dataSet.getDataStore();
      DataStoreMetaData dataStoreMetadata = (DataStoreMetaData) dataStore.getMetaData();
      toReturn = new SDKObjectsConverter().fromDataStoreMetadataToSDKDataStoreMetadata(dataStoreMetadata);
    } catch(NotAllowedOperationException e) {
      throw e;
    } catch(MissingParameterValue e) {
      throw e;
View Full Code Here


  }


  public IDataStoreMetaData xmlToMetadata(String xmlMetadata) throws ClassNotFoundException {
    logger.debug("IN");
    DataStoreMetaData dsMeta=new DataStoreMetaData();

    if(xmlMetadata==null){
      logger.error("String rapresentation of metadata is null");
      return null;
    }
    SourceBean sb=null;
    try {
      //sb=new SourceBean(xmlMetadata);
      sb=SourceBean.fromXMLString(xmlMetadata);
    } catch (SourceBeanException e) {
      logger.error("wrong xml metadata format");
      return null;
    }

    List lst=sb.getAttributeAsList("ROWS.ROW");
    for (Iterator iterator = lst.iterator(); iterator.hasNext();) {
      SourceBean sbRow = (SourceBean)iterator.next();
      String name=sbRow.getAttribute("NAME")!= null ? sbRow.getAttribute("NAME").toString() : null;
      String type=sbRow.getAttribute("TYPE")!= null ? sbRow.getAttribute("TYPE").toString() : null;
      if(name!=null){
        FieldMetadata fieldMeta=new FieldMetadata();
        fieldMeta.setName(name);
        if(type!=null){
          // remove class!
          type=type.substring(6);
          fieldMeta.setType(Class.forName(type.trim()));
        }       
        dsMeta.addFiedMeta(fieldMeta);
      }
    }
    logger.debug("OUT");
    return dsMeta;
  }
View Full Code Here

  public boolean isFetchSizeSupported() {return true;
  public boolean isMaxResultsSupported() {return true;}
   
    public IDataStore read(Object data) throws EMFUserError, EMFInternalError {
      DataStore dataStore;
      DataStoreMetaData dataStoreMeta;
      FieldMetadata fieldMeta;
      String fieldName;
      String fieldType;
      ResultSet rs;
      int columnCount;
      int columnIndex;
     
      logger.debug("IN");
     
      dataStore = null;
     
      try {
       
        Assert.assertNotNull(data, "Input parameter [data] cannot be null");
        Assert.assertTrue(data instanceof ResultSet, "Input parameter [data] cannot be of type [" + data.getClass().getName() + "]");
       
        rs = (ResultSet)data;
               
        dataStore = new DataStore();
          dataStoreMeta = new DataStoreMetaData();
         
          logger.debug("Reading metadata ...");
          columnCount = rs.getMetaData().getColumnCount();
        for(columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
            fieldMeta = new FieldMetadata();
            fieldName = rs.getMetaData().getColumnLabel(columnIndex);
            fieldType = rs.getMetaData().getColumnClassName(columnIndex);
            logger.debug("Field [" + columnIndex + "] name is equal to [" + fieldName + "]. TYPE= "+fieldType);
            fieldMeta.setName( fieldName );
            if(fieldType!=null){
              // Patch for hsql..  TODO
              if ("double".equals(fieldType.trim())){
                fieldMeta.setType(Class.forName("java.lang.Double"));
              }else if ("int".equals(fieldType.trim())){
                fieldMeta.setType(Class.forName("java.lang.Integer"));
              }else{
                fieldMeta.setType(Class.forName(fieldType.trim()));
              }
            }
            dataStoreMeta.addFiedMeta(fieldMeta);
          }   
        dataStore.setMetaData(dataStoreMeta);
        logger.debug("Metadata readed succcesfully");
       
       
        logger.debug("Reading data ...");
        if(getOffset() > 0) {
          logger.debug("Offset is equal to [" + getOffset() + "]");
         
          /*
           * The following invokation causes an error on Oracle: java.sql.SQLException: Nessuna riga corrente: relative
           * rs.relative(getOffset());
           */
         
          rs.first();
          rs.relative(getOffset() - 1);
         
        } else {
          logger.debug("Offset not set");
        }
       
        long maxRecToParse = Long.MAX_VALUE;
        if(getFetchSize() > 0) {
          maxRecToParse = getFetchSize();
          logger.debug("FetchSize is equal to [" + maxRecToParse + "]");
        } else {
          logger.debug("FetchSize not set");
        }
       
        int recCount = 0;
        int resultNumber = 0;
        while ((recCount < maxRecToParse) && rs.next()) {
          IRecord record = new Record(dataStore);
          for(columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
            Object columnValue = rs.getObject(columnIndex);
            IField field = new Field( columnValue );
          if(columnValue != null) {
            dataStoreMeta.getFieldMeta(columnIndex-1).setType( columnValue.getClass() );
          }
          record.appendField( field );
          }
          dataStore.appendRecord(record);
          recCount++;
View Full Code Here

    super();       
  }

  public IDataStore read( Object data ) {
    DataStore dataStore;
    DataStoreMetaData dataStoreMeta;
    JSONObject parsedData;

    logger.debug("IN");
   
    dataStore = null;
    parsedData = null;

    dataStore = new DataStore();
    dataStoreMeta = new DataStoreMetaData();
    dataStore.setMetaData(dataStoreMeta);


    try {
      if (!(data instanceof JSONObject)) {
        parsedData = new JSONObject( (String)data );
      }
      else{
        parsedData = (JSONObject)data;
      }
      JSONObject parsedMeta = parsedData.optJSONObject("metaData");
     
     
      // init meta
      if(parsedMeta == null) {
        throw new RuntimeException("Malformed data. Impossible to find attribute [" + "metaData" + "]");
      }
      String root = parsedMeta.optString("root");
      if(root == null) {
        throw new RuntimeException("Malformed meta data. Impossible to find attribute [" + "root" + "]");
      }
      JSONArray parsedFieldsMeta = parsedMeta.optJSONArray("fields");
      if(parsedFieldsMeta == null) {
        throw new RuntimeException("Malformed meta data. Impossible to find attribute [" + "fields" + "]");
      }
      for(int i = 1; i < parsedFieldsMeta.length(); i++) { // skip "recNo"
        JSONObject parsedFieldMeta = parsedFieldsMeta.getJSONObject(i);
        String columnName = parsedFieldMeta.getString("dataIndex");
          String columnHeader = parsedFieldMeta.getString("header");
          String columnType = parsedFieldMeta.getString("type");
         
          FieldMetadata fieldMeta = new FieldMetadata();
        fieldMeta.setName( columnName );
        fieldMeta.setAlias(columnHeader);
        if(columnType.equalsIgnoreCase("string")) {
          fieldMeta.setType( String.class );
        }else if(columnType.equalsIgnoreCase("int")) {
          fieldMeta.setType( BigInteger.class );
        } else if(columnType.equalsIgnoreCase("float")) {
          fieldMeta.setType( Double.class );
        } else if(columnType.equalsIgnoreCase("date")) {
          String subtype = parsedFieldMeta.optString("subtype");
          if(subtype != null && subtype.equalsIgnoreCase("timestamp")) {
            fieldMeta.setType( Timestamp.class );
          } else {
            fieldMeta.setType( Date.class );
          }
        } else if(columnType.equalsIgnoreCase("boolean")) {
          fieldMeta.setType( Boolean.class );
        } else {
          throw new RuntimeException("Impossible to resolve column type [" + columnType + "]");
        }
       
        dataStoreMeta.addFiedMeta(fieldMeta);
      }
     
     
      // init results
      JSONArray parsedRows = parsedData.optJSONArray(root);
      if(parsedRows == null) {
        throw new RuntimeException("Malformed data. Impossible to find attribute [" + root + "]");
      }

      int rowNumber = parsedRows.length();
      for (int i = 0; i < rowNumber; i++) {
        JSONObject parsedRow = parsedRows.getJSONObject(i);
        IRecord record = new Record(dataStore);
        for(int j = 0; j < dataStoreMeta.getFieldCount(); j++) {
          String columnName = dataStoreMeta.getFieldName(j);
          String columnValue = parsedRow.getString(columnName);
          IFieldMetaData fieldMeta = dataStoreMeta.getFieldMeta(j);
     
         
          Class fieldType = fieldMeta.getType();
          Object value = null;
          if(fieldType == String.class) {
View Full Code Here

    super();
  }

  public IDataStore read( Object data ) {
    DataStore dataStore = null;
    DataStoreMetaData dataStoreMeta;
   
    InputStream inputDataStream;
    LineNumberReader lineReader;
    String line;
   
    logger.debug("IN");
   
    inputDataStream = (InputStream)data;
   
    dataStore = new DataStore();
    dataStoreMeta = new DataStoreMetaData();
    dataStore.setMetaData(dataStoreMeta);
   
    try {       
      lineReader = new LineNumberReader( new InputStreamReader( inputDataStream ) );
      while ( (line = lineReader.readLine()) != null ){
        IRecord record = new Record(dataStore);
               
        StringTokenizer tokenizer = new StringTokenizer(line, SEPARATOR);
        while(tokenizer.hasMoreElements()){
          String token = tokenizer.nextToken();
          if (lineReader.getLineNumber() == 1) {
            FieldMetadata fieldMeta = new FieldMetadata();
            fieldMeta.setName(token);
            fieldMeta.setType(String.class);
            dataStoreMeta.addFiedMeta(fieldMeta);
          } else {
            if (token != null) {
              IField field = new Field(token);
              record.appendField(field);
            }
View Full Code Here



  public IDataStore read( Object data ) {
    DataStore dataStore;
    DataStoreMetaData dataStoreMeta;

    InputStream inputDataStream;
    DocumentBuilder documentBuilder;

    logger.debug("IN");

    if (!(data instanceof InputStream)) {
      inputDataStream = new StringBufferInputStream((String)data);
    }
    else{
      inputDataStream = (InputStream)data;
    }

    dataStore = new DataStore();
    dataStoreMeta = new DataStoreMetaData();
    dataStore.setMetaData(dataStoreMeta);


    try {
      documentBuilder = domFactory.newDocumentBuilder();
     
      Document document =  documentBuilder.parse(inputDataStream);
     
      NodeList nodes = readXMLNodes(document, "/ROWS/ROW");
     
      if(nodes == null) {
        throw new RuntimeException("Malformed data. Impossible to find tag rows.row");
      }

      int rowNumber = nodes.getLength();
      boolean firstRow = true;
      for (int i = 0; i < rowNumber; i++, firstRow = false) {
        IRecord record = new Record(dataStore);
       
          NamedNodeMap nodeAttributes = nodes.item(i).getAttributes();
          for(int j = 0; j < nodeAttributes.getLength(); j++) {
            Node attribute = nodeAttributes.item(j);
            String columnName = attribute.getNodeName();
            String columnValue = attribute.getNodeValue();
            Class columnType = attribute.getNodeValue().getClass();
           
            if(firstRow==true) {
            FieldMetadata fieldMeta = new FieldMetadata();
            fieldMeta.setName( columnName );
            fieldMeta.setType( columnType );
            dataStoreMeta.addFiedMeta(fieldMeta);
          }
           
            IField field = new Field(columnValue);
          record.appendField(field);
          }
View Full Code Here

   
    public IDataStore read(Object data) throws EMFUserError, EMFInternalError {
     
      logger.debug("IN");
      DataStore dataStore;
      DataStoreMetaData dataStoreMeta;
      FieldMetadata fieldMeta;
     
      ScrollableDataResult scrollableDataResult;
      List columnsNames;
      SourceBean resultSB;
     
     
      try {
     
        scrollableDataResult = (ScrollableDataResult)data;
       
        dataStore = new DataStore();
        dataStoreMeta = new DataStoreMetaData();
       
        logger.debug("Reading dataStore metadata ...");
        columnsNames = Arrays.asList(scrollableDataResult.getColumnNames());
        for(int i = 0; i < columnsNames.size(); i++) {
          fieldMeta = new FieldMetadata();
          fieldMeta.setName( (String)columnsNames.get(i) );
          dataStoreMeta.addFiedMeta(fieldMeta);
          logger.debug("Field [" + (i+1) + "] name is equak to [" + fieldMeta.getName() + "]");
        }     
      dataStore.setMetaData(dataStoreMeta);
      logger.debug("dataStore metadata read succefully");
     
      try {
        resultSB = scrollableDataResult.getSourceBean();
      } catch(Throwable t ) {
        throw new RuntimeException("Impossible to extract xml data", t);
     
      if( resultSB != null) {
        List rows;
        Iterator rowIterator;
       
        rows = null;
        rowIterator = null;
        try {
          rows = resultSB.getAttributeAsList("ROW");
          rowIterator = rows.iterator();
        } catch(Throwable t ) {
          throw new RuntimeException("Impossible to extract rows content from sourcebean [" + resultSB + "]", t);
       
         
        while(rowIterator.hasNext()) {   
          SourceBean rowSB = (SourceBean) rowIterator.next();
          IRecord record = new Record(dataStore);
           
          for(int i = 0; i < dataStoreMeta.getFieldCount(); i++) {
            IFieldMetaData fieldMetaData = dataStoreMeta.getFieldMeta(i);
            try {
              Object value = rowSB.getAttribute( dataStoreMeta.getFieldName(i) );
              logger.debug("Column [" + fieldMetaData.getName() + "] of type [" + (value!=null? value.getClass(): "undef") + "] is equal to [" + value + "]");         
              IField field = new Field( value );
              if(value != null) {
                dataStoreMeta.getFieldMeta(i).setType( value.getClass() );
              }
              record.appendField( field );
            } catch(Throwable t ) {
              throw new RuntimeException("Impossible to read column [" + fieldMetaData.getName()+ "] value", t);
            }
View Full Code Here

      String rowValue = "";
      newRecord = new Record();

      while (it.hasNext()){
      IRecord record =(IRecord) it.next()
      DataStoreMetaData dataStoreMeta = (DataStoreMetaData)record.getDataStore().getMetaData();
      List fields = record.getFields();
      for(int j = 0; j < fields.size(); j++) {   
        IField field = (IField)fields.get(j);
        String fieldName = dataStoreMeta.getFieldName(j);
        String fieldValue = "" + field.getValue();
       
        //checks if the field is a row, a column or a value specified into configuration and manages them
        if (fieldName.equalsIgnoreCase(pivotRow)){
          if (rowValue.equals("")) rowValue = fieldValue;
          if (!(rowValue.trim()).equalsIgnoreCase(fieldValue.trim())){
            rowValue = fieldValue;
            newRecords.add(newRecord);
            newRecord = new Record();
          }
          if (newRecord.getFieldAt(dataStoreMeta.getFieldIndex(fieldName) ) == null)
            newRecord.appendField(field);
        }
        else if (fieldName.equalsIgnoreCase(pivotColumn)){
          newFName = fieldValue;
          IField fv = record.getFieldAt(dataStoreMeta.getFieldIndex(pivotValue));
          if (fv == null){
            logger.error("Pivot value column '"+ pivotValue +"' not found into dataset. Pivot not applicated!");
            return null;
          }
          SourceBeanAttribute newFObject =(SourceBeanAttribute) fv.getValue();
          newFValue = newFObject.getValue().toString();
         
          FieldMetadata fieldMeta = new FieldMetadata();
          fieldMeta.setName(newFName);
          fieldMeta.setType(newFValue.getClass());
          dataStoreMeta.addFiedMeta(fieldMeta);
          IField newf = new Field(newFValue);
          newRecord.appendField(newf);
        }
        else if (fieldName.equalsIgnoreCase(pivotValue)){
          //skip field
        }
        else {
          //if the field isn't into record comes added
          if (newRecord.getFieldAt(dataStoreMeta.getFieldIndex(fieldName)) == null)
            newRecord.appendField(field);
        }
      }       
    }
      //Adds the last record
View Full Code Here

  public IDataStore getDataStore() {
    return dataStore;
  }

  private DataStoreMetaData getDataStoreMeta(Query query) {
    DataStoreMetaData dataStoreMeta;
    ISelectField queryFiled;
    FieldMetadata dataStoreFieldMeta;
   
    dataStoreMeta = new DataStoreMetaData();
   
    Iterator fieldsIterator = query.getSelectFields(true).iterator();
    while(fieldsIterator.hasNext()) {
      queryFiled = (ISelectField)fieldsIterator.next();
     
      dataStoreFieldMeta = new FieldMetadata();
      dataStoreFieldMeta.setAlias( queryFiled.getAlias() );
      if(queryFiled.isDataMartField()) {
        DataMartSelectField dataMartSelectField = (DataMartSelectField) queryFiled;
        dataStoreFieldMeta.setName( ((DataMartSelectField)queryFiled).getUniqueName() );
        dataStoreFieldMeta.setProperty("calculated", new Boolean(false));
        dataStoreFieldMeta.setProperty("uniqueName", dataMartSelectField.getUniqueName());
        dataStoreFieldMeta.setType(Object.class);
        String format = dataMartSelectField.getPattern();
        if (format != null && !format.trim().equals("")) {
          dataStoreFieldMeta.setProperty("format", format);
        }
      } else if(queryFiled.isCalculatedField()){
        CalculatedSelectField claculatedQueryField = (CalculatedSelectField)queryFiled;
        dataStoreFieldMeta.setName(claculatedQueryField.getAlias());
        dataStoreFieldMeta.setProperty("calculated", new Boolean(true))
        // FIXME also calculated field must have uniquename for uniformity
        dataStoreFieldMeta.setProperty("uniqueName", claculatedQueryField.getAlias());
        DataSetVariable variable = new DataSetVariable(claculatedQueryField.getAlias(), claculatedQueryField.getType(), claculatedQueryField.getExpression());
        dataStoreFieldMeta.setProperty("variable", variable)
        dataStoreFieldMeta.setType( variable.getTypeClass() )
       
      } else if(queryFiled.isInLineCalculatedField()){
        InLineCalculatedSelectField claculatedQueryField = (InLineCalculatedSelectField)queryFiled;
        dataStoreFieldMeta.setName(claculatedQueryField.getAlias());
        dataStoreFieldMeta.setProperty("calculated", new Boolean(false))
        // FIXME also calculated field must have uniquename for uniformity
        dataStoreFieldMeta.setProperty("uniqueName", claculatedQueryField.getAlias());
        DataSetVariable variable = new DataSetVariable(claculatedQueryField.getAlias(), claculatedQueryField.getType(), claculatedQueryField.getExpression());
        dataStoreFieldMeta.setProperty("variable", variable)
        dataStoreFieldMeta.setType( variable.getTypeClass() )
       
      }
      dataStoreFieldMeta.setProperty("visible", new Boolean(queryFiled.isVisible()))
     
      dataStoreMeta.addFiedMeta(dataStoreFieldMeta);
    }
   
    return dataStoreMeta;
  }
View Full Code Here

 
 
 
  protected DataStore toDataStore(List result) {
    DataStore dataStore;
    DataStoreMetaData dataStoreMeta;
    Object[] row;
 
    dataStore = new DataStore();
    dataStoreMeta = getDataStoreMeta( statement.getQuery() );
    dataStore.setMetaData(dataStoreMeta);
   
    Iterator it = result.iterator();
    while(it.hasNext()) {
      Object o = it.next();
     
        if (!(o instanceof Object[])){
          row = new Object[1];
          row[0] = o == null? "": o;
        }else{
          row = (Object[])o;
        }
       
       
        IRecord record = new Record(dataStore);
        for(int i = 0,  j = 0; i < dataStoreMeta.getFieldCount(); i++) {
        IFieldMetaData fieldMeta = dataStoreMeta.getFieldMeta(i);
        Boolean calculated = (Boolean)fieldMeta.getProperty("calculated");
        if(calculated.booleanValue() == false) {
          Assert.assertTrue(j < row.length, "Impossible to read field [" + fieldMeta.getName() + "] from resultset");
          record.appendField( new Field( row[j] ) );
          if(row[j] != null) fieldMeta.setType(row[j].getClass());
View Full Code Here

TOP

Related Classes of it.eng.spagobi.tools.dataset.common.datastore.DataStoreMetaData

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.