当前位置: 首页 > news >正文

做公司的网站付的钱怎么入账做网站什么好

做公司的网站付的钱怎么入账,做网站什么好,网络宣传渠道,非法期货做网站DataCap 支持自定义 File 转换器#xff0c;使用者可以编写自己的文件转换器集成到 DataCap 中。该文档主要讲解如何快速集成一个文件转换器到 DataCap 系统中。 该模块我们主要使用到的是 file 模块内的代码#xff0c;我们本文使用 json 来做示例。 模块基本配置 新建项目…DataCap 支持自定义 File 转换器使用者可以编写自己的文件转换器集成到 DataCap 中。该文档主要讲解如何快速集成一个文件转换器到 DataCap 系统中。 该模块我们主要使用到的是 file 模块内的代码我们本文使用 json 来做示例。 模块基本配置 新建项目后在 pom.xml 文件中增加以下内容 dependenciesdependencygroupIdorg.jetbrains.kotlin/groupIdartifactIdkotlin-reflect/artifactId/dependencydependencygroupIdcom.google.inject/groupIdartifactIdguice/artifactId/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactId/dependencydependencygroupIdio.edurt.datacap/groupIdartifactIddatacap-file-spi/artifactId/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactId/dependency /dependenciesbuildpluginsplugingroupIdorg.jetbrains.dokka/groupIdartifactIddokka-maven-plugin/artifactId/plugin/plugins /build我们添加 datacap-file-spi 依赖这样我们就可以实现集成文件转换器。 Json Module 加载器 package io.edurt.datacap.file.jsonimport com.google.inject.multibindings.Multibinder import io.edurt.datacap.file.File import io.edurt.datacap.file.FileModuleclass JsonModule : FileModule() {override fun configure(){Multibinder.newSetBinder(this.binder(), File::class.java).addBinding().to(JsonFile::class.java)} }Json File 转换器 package io.edurt.datacap.file.jsonimport com.fasterxml.jackson.core.JsonEncoding import com.fasterxml.jackson.core.JsonFactory import com.fasterxml.jackson.core.JsonGenerationException import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.node.ObjectNode import io.edurt.datacap.common.utils.DateUtils import io.edurt.datacap.file.File import io.edurt.datacap.file.FileConvert.formatFile import io.edurt.datacap.file.model.FileRequest import io.edurt.datacap.file.model.FileResponse import org.slf4j.LoggerFactory.getLogger import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader import java.util.Objects.requireNonNullclass JsonFile : File {private val log getLogger(this::class.java)override fun format(request: FileRequest): FileResponse{val response FileResponse()try{log.info(${name()} format start time [ ${DateUtils.now()} ])log.info(${name()} format headers start)response.headers request.headerslog.info(${name()} format headers end)log.info(${name()} format columns start)val mapper ObjectMapper()val columns mutableListOfAny()request.columns.forEach { column -val jsonNode mapper.createObjectNode()for (headerIndex in request.headers.indices){val header request.headers[headerIndex] as Stringwhen (column){is List* - jsonNode.putPOJO(header, column[headerIndex])else - jsonNode.putPOJO(header, column)}}columns.add(jsonNode)}response.columns columnslog.info(${name()} format columns end)log.info(${name()} format end time [ ${DateUtils.now()} ])response.successful true}catch (e: IOException){response.successful falseresponse.message e.message}return response}override fun formatStream(request: FileRequest): FileResponse{val response FileResponse()try{requireNonNull(Stream must not be null)log.info(${name()} format stream start time [ ${DateUtils.now()} ])val mapper ObjectMapper()request.stream?.let {BufferedReader(InputStreamReader(it, Charsets.UTF_8)).use { reader -val jsonNode: JsonNode mapper.readTree(reader)log.info(${name()} format stream json node count [ ${jsonNode.size()} ])val headers mutableListOfAny()if (jsonNode.isArray jsonNode.size() 0){jsonNode[0].fieldNames().forEachRemaining { headers.add(it) }}response.headers headersval columns mutableListOfAny()if (jsonNode.isArray){jsonNode.elements().forEachRemaining { node -val column mutableMapOfString, Any?()node.fields().forEachRemaining { field -column[field.key] field.value}columns.add(column)}}response.columns columnsit.close()}}log.info(${name()} format stream end time [ ${DateUtils.now()} ])response.successful true}catch (e: IOException){response.successful falseresponse.message e.message}return response}override fun writer(request: FileRequest): FileResponse{val response FileResponse()try{log.info(${name()} writer origin path [ ${request.path} ])log.info(${name()} writer start time [ ${DateUtils.now()} ])val file formatFile(request, name())log.info(${name()} writer file absolute path [ ${file.absolutePath} ])val factory JsonFactory()factory.createGenerator(file, JsonEncoding.UTF8).use { generator -generator.writeStartArray()request.columns.forEach { column -generator.writeStartObject()for (headerIndex in request.headers.indices){when (column){is List* - generator.writeObjectField(request.headers[headerIndex] as String, column[headerIndex])is ObjectNode -{generator.codec ObjectMapper()val header request.headers[headerIndex] as Stringgenerator.writeObjectField(header, column.get(header))}else - generator.writeObjectField(request.headers[headerIndex] as String, column)}}generator.writeEndObject()}generator.writeEndArray()}log.info(${name()} writer end time [ ${DateUtils.now()} ])response.path file.absolutePathresponse.successful true}catch (e: IOException){response.successful falseresponse.message e.message}catch (e: JsonGenerationException){response.successful falseresponse.message e.message}return response}override fun reader(request: FileRequest): FileResponse{val response FileResponse()try{log.info(${name()} reader origin path [ ${request.path} ])log.info(${name()} reader start time [ ${DateUtils.now()} ])val file formatFile(request, name())log.info(${name()} reader file absolute path [ ${file.absolutePath} ])val mapper ObjectMapper()val jsonNode: JsonNode mapper.readTree(file)log.info(${name()} reader file json node count [ ${jsonNode.size()} ])log.info(${name()} reader file headers start)val headers mutableListOfAny()if (jsonNode.isArray jsonNode.size() 0){jsonNode[0].fieldNames().forEachRemaining { headers.add(it) }}response.headers headerslog.info(${name()} reader file headers end)log.info(${name()} reader file columns start)val columns mutableListOfAny()if (jsonNode.isArray){jsonNode.elements().forEachRemaining { node -val column mutableMapOfString, Any?()node.fields().forEachRemaining { field -column[field.key] field.value}columns.add(column)}}response.columns columnslog.info(${name()} reader file columns end)response.successful true}catch (e: Exception){response.successful falseresponse.message e.message}return response} }File SPI 加载器 在 resources 源目录下添加 META-INF 和 services 目录格式为 resources/META-INF/services创建 io.edurt.datacap.file.FileModule 文件内容如下 io.edurt.datacap.file.json.JsonModule通过以上内容我们实现了 Json 文件转换器的支持。我们只需要在要使用 Json 文件转换器的地方引用该模块即可。比如我们在 server 模块中使用到该模块则在 server/pom.xml 文件中增加以下内容 dependencygroupIdio.edurt.datacap/groupIdartifactIddatacap-file-json/artifactIdversion${project.version}/version /dependencyJson Module 测试 package io.edurt.datacap.file.jsonimport com.google.inject.Guice.createInjector import com.google.inject.Injector import com.google.inject.Key import com.google.inject.TypeLiteral import io.edurt.datacap.file.File import io.edurt.datacap.file.FileManager import org.junit.Assert.assertEquals import org.junit.Testclass JsonModuleTest {private val injector: Injector createInjector(FileManager())Testfun test(){injector.getInstance(Key.get(object : TypeLiteralSetFile(){})).stream().findFirst().ifPresent {assertEquals(Json, it.name())}} }Json SPI 测试 package io.edurt.datacap.file.jsonimport com.google.inject.Guice.createInjector import com.google.inject.Injector import io.edurt.datacap.file.FileFilter import io.edurt.datacap.file.FileManager import io.edurt.datacap.file.model.FileRequest import org.junit.Before import org.junit.Test import org.slf4j.LoggerFactory.getLogger import java.io.File import java.io.FileInputStream import kotlin.test.assertTrueclass JsonFileTest {private val log getLogger(this::class.java)private val name Jsonprivate var injector: Injector? nullprivate val request: FileRequest FileRequest()Beforefun before(){injector createInjector(FileManager())request.name testrequest.path System.getProperty(user.dir)request.headers listOf(name, age)val l1 listOf(Test, 12)val l2 listOf(Test1, 121)request.columns listOf(l1, l2)}Testfun testFormat(){injector?.let { injector -FileFilter.filter(injector, name).ifPresent { file -val response file.format(request)log.info(headers: [ ${response.headers} ])response.columns.let { columns -columns.forEachIndexed { index, line -log.info(index: [ $index ], line: [ $line ])}}assertTrue {response.successful true}}}}Testfun testFormatStream(){injector?.let { injector -FileFilter.filter(injector, name).ifPresent { file -request.stream FileInputStream(File(${System.getProperty(user.dir)}/${request.name}.json))val response file.formatStream(request)log.info(headers: [ ${response.headers} ])response.columns.let { columns -columns.forEachIndexed { index, line -log.info(index: [ $index ], line: [ $line ])}}assertTrue {response.successful true}}}}Testfun testWriter(){injector?.let { injector -FileFilter.filter(injector, name).ifPresent { file -assertTrue {file.writer(request).successful true}}}}Testfun testReader(){injector?.let { injector -FileFilter.filter(injector, name).ifPresent { file -val response file.reader(request)log.info(headers: ${response.headers})response.columns.forEach {log.info(columns: $it)}assertTrue {response.successful true}}}} }
http://www.laogonggong.com/news/123694.html

相关文章:

  • 具有价值的网站建设合肥网站建设王道下拉強
  • 建设部城市管理监督局网站官网注册企业有哪些基本流程
  • 怎么把百度到自己的网站j建设网站
  • 中英文版网站建设用自己电脑做主机做网站
  • 域联网站建设wordpress 在线购物
  • 163网站建设室内装饰设计的主要内容
  • 贵州企业网站建设公司html家乡网站设计
  • 焦作专业做网站公司哪家好网站做关键词首页
  • 如何评价网站是否做的好做网站作品是静态
  • 钓鱼网站生成器做网站服务器和域名
  • 自己公司的网站怎么编辑python做网站原理
  • 谷歌官方网站注册做网站要学的代码
  • 网站排名掉了怎么办php采集wordpress文章
  • 网站建设如何投放广告北流网站建设制作
  • 福建省建设执业资格注册管理中心网站东莞营销网站建设多少钱
  • 微信公众号小说网站怎么做淮安网站制作多少钱
  • 汉中专业做网站wordpress建站价格
  • 京东优惠券网站建设山东手机在线app
  • 网站素材 图标锡林郭勒盟建设工程管理网站
  • 有口碑的坪山网站建设iis服务器网站301重定向怎么做
  • 营站快车代理平台中山 在门户网站推广
  • 个人备案网站可以做电商吗网站色彩搭配技巧
  • 做品牌特价的网站有哪些郑州网站建设xinsu360
  • 做电影网站需要服务器吗汕头模板自助建站
  • 58网站建设免费网站设计软件
  • 东阳网站建设金山品牌网站建设
  • 可以免费观看电影的网站黄石网站推广排名服务
  • 网站开发前期需要啥阳江网红
  • 商城网站建设要多少钱有什么网站可以做数学题
  • 推广型网站建设公司深夜小网站