class BlobTableInfoFactory {

    private final Path[] dataFiles;
    private final Path globalBlobPath;

    @Inject
    public BlobTableInfoFactory(Settings settings, Environment environment) {
        this.dataFiles = environment.dataFiles();
        this.globalBlobPath = BlobIndicesService.getGlobalBlobPath(settings);
    }

    private IndexMetadata resolveIndexMetadata(String tableName, Metadata metadata) {
        String indexName = BlobIndex.fullIndexName(tableName);
        Index index;
        try {
            index = IndexNameExpressionResolver.concreteIndices(metadata, IndicesOptions.strictExpandOpen(), indexName)[0];
        } catch (IndexNotFoundException ex) {
            throw new RelationUnknown(indexName, ex);
        }
        return metadata.index(index);
    }

    public BlobTableInfo create(RelationName ident, ClusterState clusterState) {<FILL_FUNCTION_BODY>}

    private String blobsPath(Settings indexMetadataSettings) {
        String blobsPath;
        String blobsPathStr = BlobIndicesService.SETTING_INDEX_BLOBS_PATH.get(indexMetadataSettings);
        if (Strings.hasLength(blobsPathStr)) {
            blobsPath = blobsPathStr;
        } else {
            Path path = globalBlobPath;
            if (path != null) {
                blobsPath = path.toString();
            } else {
                // TODO: should we set this to null because there is no special blobPath?
                blobsPath = dataFiles[0].toString();
            }
        }
        return blobsPath;
    }
}

        IndexMetadata indexMetadata = resolveIndexMetadata(ident.name(), clusterState.metadata());
        Settings settings = indexMetadata.getSettings();
        return new BlobTableInfo(
            ident,
            indexMetadata.getIndex().getName(),
            indexMetadata.getNumberOfShards(),
            NumberOfReplicas.fromSettings(settings),
            settings,
            blobsPath(settings),
            IndexMetadata.SETTING_INDEX_VERSION_CREATED.get(settings),
            settings.getAsVersion(IndexMetadata.SETTING_VERSION_UPGRADED, null),
            indexMetadata.getState() == IndexMetadata.State.CLOSE);
    
<no_super_class>