package net.ion.craken.loaders;
import java.io.FileInputStream;
import java.util.Date;
import net.ion.craken.node.ReadSession;
import net.ion.craken.node.crud.Craken;
import net.ion.craken.node.crud.store.PGWorkspaceConfigBuilder;
import net.ion.craken.node.crud.tree.Fqn;
import net.ion.framework.db.DBController;
import net.ion.framework.db.manager.PostSqlDataSource;
import net.ion.framework.parse.gson.JsonObject;
import net.ion.framework.util.Debug;
import net.ion.framework.util.IOUtil;
import junit.framework.TestCase;
public class TestImport extends TestCase {
public void testReadFile() throws Exception {
FileInputStream fis = new FileInputStream("./resource/export.json") ;
String readed = IOUtil.toStringWithClose(fis) ;
JsonObject json = JsonObject.fromString(readed) ;
int i = 0 ;
for(String fqn : json.keySet()){
i++ ;
JsonObject props = json.asJsonObject(fqn) ;
for(String pid : props.keySet()){
JsonObject pvalue = props.asJsonObject(pid) ;
pvalue.asString("vtype") ;
pvalue.asJsonArray("vals") ;
}
}
Debug.line(i);
}
public void testSaveToPG() throws Exception {
// Craken craken = Craken.inmemoryCreateWithTest() ;
// craken.createWorkspace("pg", new PGWorkspaceConfigBuilder("./resource/store/test")) ;
// ReadSession session = craken.login("pg") ;
DBController dc = new DBController(new PostSqlDataSource("jdbc:postgresql://127.0.0.1:5432/crawl", "bleujin", "bleujin")) ;
dc.initSelf();
FileInputStream fis = new FileInputStream("./resource/export.json") ;
String readed = IOUtil.toStringWithClose(fis) ;
JsonObject allNodes = JsonObject.fromString(readed) ;
for(String fqn : allNodes.keySet()){
if ("/".equals(fqn)) continue ;
JsonObject node = new JsonObject() ;
JsonObject props = allNodes.asJsonObject(fqn) ;
JsonObject propValue = new JsonObject() ;
for(String pid : props.keySet()){
propValue.put(pid, props.asJsonObject(pid)) ;
}
node.put("__value", propValue) ;
node.put("__parent", Fqn.fromString(fqn).getParent().toJson()) ;
node.put("__lastmodified", new Date().getTime() + "") ;
dc.createUserProcedure("node@mergeWith(?,?,?)").addParam(fqn).addParam(Fqn.fromString(fqn).name()).addParam(node.toString()).execUpdate() ;
}
dc.destroySelf();
}
}