@groovy.transform.CompileDynamic @groovy.util.logging.Slf4j class ImportEngineService extends java.lang.Object
Modifiers | Name | Description |
---|---|---|
static java.lang.String |
RootOrganizationPlaceHolderInCsv |
Constructor and description |
---|
ImportEngineService
() |
Type Params | Return Type | Name and description |
---|---|---|
|
void |
create(java.lang.Object obj, java.util.List<DynamicFieldValue> dynamicValues, org.springframework.transaction.TransactionStatus transactionStatus, org.apache.commons.csv.CSVRecord csvRecord, ImportRecorder recorder) |
|
void |
delete(java.lang.Object obj, org.springframework.transaction.TransactionStatus transactionStatus, org.apache.commons.csv.CSVRecord csvRecord, ImportRecorder recorder) |
|
java.lang.Object |
getDefaultValueFromHook(grails.plugin.springsecurity.userdetails.GrailsUser userContext, java.lang.Class<?> domainClazz, java.lang.String columnName) |
|
ImportRecord |
importDomain(DomainClass domainClass, java.lang.String md5, java.lang.String filePath, java.io.InputStream inputStream, java.util.Collection<java.util.Map<java.lang.String, java.lang.Object>> objectMeta, OwnerInfo ownerInfo, DynamicLogicExecuteContext executeContext) |
|
ImportRecord |
importDomainFromBytes(DomainClass domainClazz, java.lang.String fileName, byte[] bytes, java.util.Collection<java.util.Map<java.lang.String, java.lang.Object>> objectMeta, OwnerInfo ownerInfo, DynamicLogicExecuteContext executeContext) |
|
ImportRecord |
importDomainFromCsv(DomainClass domainClass, java.lang.String filePath, java.util.Collection<java.util.Map<java.lang.String, java.lang.Object>> objectMeta, DynamicLogicExecuteContext context) 从 CSV 文件导入 Domain 数据 |
|
static boolean |
objectChanged(java.lang.Object object, java.util.Map<java.lang.String, java.lang.Object> stringObjectMap) |
|
java.lang.Object |
parseRow(java.util.List<java.lang.String> headerNames, org.apache.commons.csv.CSVRecord csvRecord, DomainClass domainClass, java.util.Collection<java.util.Map<java.lang.String, java.lang.Object>> objectMeta, OwnerInfo ownerInfo, java.lang.String rawLineContent, java.lang.String fileFieldFolder, long lineNo) 解析 CSV 文件中的一行 |
|
java.lang.Object |
saveRow(java.lang.Class<? extends GormEntity<?>> domainClazz, org.apache.commons.csv.CSVRecord csvRecord, ImportRecorder recorder, java.util.Map<java.lang.String, java.lang.Object> values, java.util.List<DynamicFieldValue> dynamicValues, LineImportStatus lineStatus, java.lang.String lineLog, java.lang.Long lineNo, java.lang.String filePath, java.util.List<java.lang.String> queryFields, grails.plugin.springsecurity.userdetails.GrailsUser userContext) |
|
boolean |
shouldSkipFile(DomainClass domainClass, java.lang.String newFileMd5) 是否应该跳过某个 CSV 文件的导入 备注:当前(2020-07-30)的实现中,在如下的情况均满足时会跳过 1. |
|
static java.util.List<java.lang.String> |
sort() Sort a list of files based on it's domain dependencies For example, if there are Three files, Group, User and UserGroup, Then the return value should be [Group, User, UserGroup] or [User, Group, UserGroup] UserGroup should comes later than it's dependencies Group and User |
|
void |
update(java.lang.Object objBeforeUpdate, java.lang.Object objAfterUpdate, java.util.List<DynamicFieldValue> dynamicValues, org.springframework.transaction.TransactionStatus transactionStatus, org.apache.commons.csv.CSVRecord csvRecord, ImportRecorder recorder) |
Methods inherited from class | Name |
---|---|
class java.lang.Object |
java.lang.Object#getClass(), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#hashCode(), java.lang.Object#equals(java.lang.Object), java.lang.Object#notifyAll(), java.lang.Object#toString(), java.lang.Object#notify() |
从 CSV 文件导入 Domain 数据
domainClass
- 要导入的 Domain 定义filePath
- 文件路径objectMeta
- 该 Domain 的 Domain 定义元数据context
- 导入上下文解析 CSV 文件中的一行
headerNames
- CSV 文件的列标题csvRecord
- 包含该行的信息的 CSVRecord 对象domainClass
- 该行待导入到的 DomainClass 对象objectMeta
- 待导入的的各列的元数据ownerInfo
- 如果导入某个对象的关联对象,则该参数为该关联信息rawLineContent
- CSV 文件中的该行的原始字符信息fileFieldFolder
- 针对文件类型的列,这是待导入文件的基础路径lineNo
- 该行的行号是否应该跳过某个 CSV 文件的导入 备注:当前(2020-07-30)的实现中,在如下的情况均满足时会跳过 1. 新文件和最近一次导入记录中记录的文件 md5 相同 2. 上一次的导入的状态是 FileImportStatus.SUCCESS
domainClass
- 导入的对象类型newFileMd5
- 文件的 md5 编码Sort a list of files based on it's domain dependencies For example, if there are Three files, Group, User and UserGroup, Then the return value should be [Group, User, UserGroup] or [User, Group, UserGroup] UserGroup should comes later than it's dependencies Group and User
Groovy Documentation