14 changed files with 233 additions and 258 deletions
@ -1,67 +0,0 @@
@@ -1,67 +0,0 @@
|
||||
import 'dart:io'; |
||||
|
||||
import 'package:win_text_editor/framework/controllers/logger.dart'; |
||||
import 'package:win_text_editor/modules/memory_table/models/memory_table.dart'; |
||||
import 'package:win_text_editor/shared/data/std_fields_cache.dart'; |
||||
import 'package:win_text_editor/shared/models/std_filed.dart'; |
||||
import 'package:xml/xml.dart' as xml; |
||||
|
||||
class FieldDataService { |
||||
static Future<File?> findMetadataFile(String filePath) async { |
||||
Directory currentDir = File(filePath).parent; |
||||
const targetDirName = 'metadata'; |
||||
const targetFileName = 'stdfield.stdfield'; |
||||
|
||||
// 向上查找 metadata 目录 |
||||
while (true) { |
||||
final metadataDir = Directory('${currentDir.path}/$targetDirName'); |
||||
if (await metadataDir.exists()) { |
||||
final stdFieldFile = File('${metadataDir.path}/$targetFileName'); |
||||
if (await stdFieldFile.exists()) { |
||||
return stdFieldFile; |
||||
} else { |
||||
Logger().error("没找到标准字段文件 $targetFileName"); |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
// 到达根目录时停止 |
||||
if (currentDir.path == currentDir.parent.path) { |
||||
Logger().error("没有找到元数据目录 $targetDirName"); |
||||
return null; |
||||
} |
||||
|
||||
currentDir = currentDir.parent; |
||||
} |
||||
} |
||||
|
||||
// 处理标准字段文件并缓存 |
||||
static Future<void> processStdFieldFile(File stdFieldFile) async { |
||||
try { |
||||
final content = await stdFieldFile.readAsString(); |
||||
final document = xml.XmlDocument.parse(content); |
||||
final items = document.findAllElements('items'); |
||||
|
||||
for (final item in items) { |
||||
final name = item.getAttribute('name') ?? ''; |
||||
final chineseName = item.getAttribute('chineseName') ?? ''; |
||||
final dataType = item.getAttribute('dataType') ?? ''; |
||||
|
||||
if (name.isNotEmpty) { |
||||
final stdField = StdField(name: name, chineseName: chineseName, dateType: dataType); |
||||
await StdFieldsCache.setData(name, stdField); |
||||
} |
||||
} |
||||
} catch (e) { |
||||
Logger().error("处理标准字段文件时出错: $e"); |
||||
} |
||||
} |
||||
|
||||
static List<Field> getDefaultFields() { |
||||
return [Field('1', '', '', ''), Field('2', '', '', ''), Field('3', '', '', '')]; |
||||
} |
||||
|
||||
static List<Index> getDefaultIndexes() { |
||||
return [Index('', false, '', ''), Index('', false, '', '')]; |
||||
} |
||||
} |
Loading…
Reference in new issue