class VSensorLoader extends Thread {

    public AbstractWrapper findWrapper(AddressBean addressBean) throws InstantiationException, IllegalAccessException {
        if ( Main.getWrapperClass ( addressBean.getWrapper ( ) ) == null ) {
            logger.error ( "The wrapper >" + addressBean.getWrapper ( ) + "< is not defined in the >" + WrappersUtil.DEFAULT_WRAPPER_PROPERTIES_FILE + "< file." );
            return null;
        }
        AbstractWrapper wrapper = ( AbstractWrapper ) Main.getWrapperClass ( addressBean.getWrapper ( ) ).newInstance ( );
        wrapper.setActiveAddressBean ( addressBean );
        boolean initializationResult = wrapper.initialize (  );
        if ( initializationResult == false )
            return null;
        try {
            logger.debug("Wrapper name: "+wrapper.getWrapperName()+ " -- view name "+ wrapper.getDBAliasInStr());
            if (!Main.getWindowStorage().tableExists(wrapper.getDBAliasInStr(),wrapper.getOutputFormat()))
                Main.getWindowStorage().executeCreateTable ( wrapper.getDBAliasInStr ( ) , wrapper.getOutputFormat ( ),wrapper.isTimeStampUnique() );
        } catch ( SQLException e ) {
            logger.error ( e.getMessage ( ) , e );
            return null;
        }
//			wrapper.start ( ); //moved to the VSensorPool
        activeWrappers.add ( wrapper );

        return wrapper;
    }

    public  VSensorLoader();
    public  VSensorLoader( String pluginsPath );

}