@Override
    public DAbstractMetricIO getIO( String rollupType, Granularity granularity ) {

        // find out the rollupType for this locator
        RollupType rType = RollupType.fromString( rollupType );

        // get the right PreaggregatedIO class that can process
        // this rollupType
        DAbstractMetricIO io = rollupTypeToIO.get( rType );

        if (io == null) {
            throw new InvalidDataException( String.format("getIO: unsupported rollupType=%s", rollupType));
        }

        return io;
    }
@Override
    public DAbstractMetricIO getIO( String rollupType, Granularity granularity ) {

        
        RollupType rType = RollupType.fromString( rollupType );

        
        
        DAbstractMetricIO io = rollupTypeToIO.get( rType );

        if (io == null) {
            throw new InvalidDataException( String.format("getIO: unsupported rollupType=%s", rollupType));
        }

        return io;
    }
@ Override public DAbstractMetricIO getIO ( String rollupType , Granularity granularity ) { // find out the rollupType for this locator RollupType rType = RollupType . fromString ( rollupType ) ; // get the right PreaggregatedIO class that can process // this rollupType DAbstractMetricIO io = rollupTypeToIO . get ( rType ) ; if ( io == null ) { throw new InvalidDataException ( String . format ( "getIO: unsupported rollupType=%s" , rollupType ) ) ; } return io ; }
Return the appropriate IO object which interacts with the Cassandra database.

For Preaggregated Metrics, only rollup type is required.
For Basic Numeric Metrics, the granularity is required as metrics_full is handled differently
than the other granularities.

@param rollupType
@param granularity
@return
Return the appropriate IO object which interacts with the Cassandra database .