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

1.8 KiB


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();
}