FMPResource

Представляет ресурс на сервере.

Since

21.04.01

Samples

import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример создания ресурса.
 */
val resource: FMPResource = fmp.resource.name("resource") // Указать название ресурса на сервере.
	.params("{\"delete_ids\":null,\"upsert_rows\":null}") // Указать параметры ресурса.
	.build() // Получить FMPResource. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример создания ресурса с дополнительными параметрами.
 */
val resource: FMPResource = fmp.resource.name("...") // Указать название ресурса на сервере.
	.params("...")       // Указать параметры ресурса.
	.cacheByParams(true) // Использовать кэширование по параметрам.
	.delta(true)         // Использовать дельту.
	.filter(true)        // Использовать фильтрацию FMPQuery.
	.build()             // Получить FMPResource. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример обращения к базе данных ресурса.
 */
resource.database.query("CREATE INDEX ...") 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример получения активных транзакций ресурса.
 */
val transactions: List<FMPTransaction> = resource.getTransactions().result
transactions.forEach { it.delete() } // Удалить все существующие транзакции ресурса. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример получения метаданных ресурса.
 */
val meta: FMPResource.Meta = resource.getMeta().result
val lifetime: String? = meta.lifetime // Получить время жизни кэша ресурса. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример получения списка таблиц ресурса.
 */
val tables: List<FMPTable> = resource.getTables().result
tables.forEach { it.name } // Получить список названий всех таблиц. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример ручной загрузки ресурса.
 */
val transaction: FMPTransaction = fmp.transaction.resource(resource).build()

val download: FMPResult<Boolean> = resource.download(transaction = transaction, // Указать транзакцию для запроса.
	filters = listOf(FMPResource.FilterTable("output_table")) // Указать фильтр для загрузки только таблицы с названием output_table.
) { progress ->
	println("progress: $progress") // Вывести прогресс загрузки в консоль.
} 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример отправки RPC запроса без загрузки данных.
 */
val rpc: Boolean = resource.rpc().result // true если параметры отправлены на источник, при этом ответ не записан в кэш. 
   //sampleEnd
}
import ru.fsight.fmp.*
fun main() { 
   //sampleStart 
   /*
 * Пример удаления всех данных ресурса.
 */
val drop: Boolean = resource.dropCache().result // true если локальный кэш ресурса был очищен. 
   //sampleEnd
}

Types

Link copied to clipboard

Требуемые параметры: name.

Link copied to clipboard
fun interface Filter

Общий интерфейс для фильтрации ресурса.

Link copied to clipboard
class FilterColumn(val name: String, val value: String) : FMPResource.Filter

Фильтрация по колонке. Будут загружены только те строки, значения колонок которых совпадают с указанными.

Link copied to clipboard
class FilterLimit(val count: Int) : FMPResource.Filter

Ограничить получаемое число строк.

Link copied to clipboard
class FilterOrder(val columns: String) : FMPResource.Filter

Сортировка по колонкам.

Link copied to clipboard
class FilterSkip(val count: Int) : FMPResource.Filter

Пропустить указанное число строк.

Link copied to clipboard

Фильтрация по таблице. Будет загружена только требуемая таблица из всего ресурса.

Link copied to clipboard
data class Meta(val id: Int = -1, val name: String = "", val type: String = "", val input: FMPResource.Meta.Input? = null, val output: List<FMPResource.Meta.Argument>? = listOf(), val lifetime: String? = null)

Метаданные ресурса.

Properties

Link copied to clipboard
abstract val database: FMPDatabase

База данных для кэша ресурса.

Link copied to clipboard
abstract val isCacheByParams: Boolean

Флаг использования кэша по параметрам. Включение данного флага переименовывает ресурс и его таблицы в формат "$resource_$paramsHash_$table", где paramsHash - sha1 хэш от параметров.

Link copied to clipboard
abstract val isDelta: Boolean

Флаг поддержки ресурсом технологии Delta. Позволяет при последующих запросах загружать лишь изменения вместо полных данных.

Link copied to clipboard
abstract val isFilter: Boolean

Флаг поддержки ресурсом технологии фильтрации. Позволяет загружать только требуемые по фильтру данные. Автоматически используется в FMPQuery если включено.

Link copied to clipboard
abstract val name: String

Название ресурса на сервере.

Link copied to clipboard
abstract val params: String

Данные запроса. Содержит данные для вызова процедуры на сервере.

Functions

Link copied to clipboard
abstract fun download(transaction: FMPTransaction? = null, filters: List<FMPResource.Filter> = listOf(), onProgress: (Double) -> Unit = {}): FMPResult<Boolean>

Загрузить и закэшировать ресурс.

Link copied to clipboard
abstract fun dropCache(): FMPResult<Boolean>

Удалить локальный кэш ресурса.

Link copied to clipboard
abstract operator override fun equals(other: Any?): Boolean

Сравнить объекты между собой.

Link copied to clipboard

Метаданные ресурса на сервере.

Link copied to clipboard
abstract fun getTables(): FMPResult<List<FMPTable>>

Получить список таблиц ресурса в соответствии с его метаданными.

Link copied to clipboard

Получить список существующих транзакций.

Link copied to clipboard
abstract override fun hashCode(): Int

Хэш-код объектов. В отличие от equals он будет одинаков для объектов с одинаковыми ключевыми параметрами, но созданными от разных объектов FMP.

Link copied to clipboard
abstract override fun rebuild(): FMPResource.Builder
Link copied to clipboard
abstract fun rpc(): FMPResult<Boolean>

Отправить RPC запрос, игнорируя при этом данные ответа.

Link copied to clipboard
abstract override fun toString(): String

Получить ключевые параметры объекта в виде строки.