Obsidian/Recognition/Tools/eXerd/도메인 리스트 일괄 적용.md

98 lines
1.8 KiB
Markdown
Raw Normal View History

2023-08-14 16:19:25 +00:00
```xscript
var useDataTypeAsName = false;
var useExistDomains = true;
var showReport = true;
var encoding = "EUC_KR";
var updateCnt = 0;
var domainMap = newMap();
var newDomains = newSet();
plugins.addGetter("cname", function(it){
return it.get("name")
});
var logFile = newFile("domain-reverse.log", encoding);
console.setLogFile(logFile, true);
log(newDate());
if(useExistDomains){
select(function(it){
//log("type" + it.get("type"));
return it.get("type") == "domain";
}).each(function(it){
//log("data-type" + it.get("data-type"));
domainMap.put(it.get("cname"), it);
});
}
//log(domainMap);
var allColumns = select(function(it){
return it.get("type") == "column";
});
updateCnt = allColumns.size();
monitor.beginTask("컬럼 처리중", updateCnt);
logf("%-20s | %-20s | %-20s\n", "테이블", "컬럼", "지정된 도메인(* : 새로 생성)");
logf("==========================================================================\n")
allColumns.each(function(it){
var domain = domainMap.get(it.get("cname"));
var dataType = domainMap.get(it.get("data-type"));
var domainName;
//log("domain" + domain);
try{
it.set("domain", domain);
if(domain == null ){
updateCnt --;
it.set("data-type", it.get("data-type"));
domainName = "도메인List에 없음";
}else{
it.set("data-type", dataType);
domainName = domain.get("name")
}
}
catch(e){
log("e" + e);
}
logf(
"%-20s | %-20s | %-20s\n", it.get("table").get("name"),
it.get("name"),
domainName
);
monitor.worked(1);
if(monitor.isCanceled()){
exit();
}
});
logf("==========================================================================\n")
logf("%d 개의 도메인이 업데이트 되었습니다.\n", updateCnt);
monitor.done();
views.showDomainView();
if(showReport){
logFile.openInEditor();
}
```