-
Notifications
You must be signed in to change notification settings - Fork 5
Example
Artemy edited this page Dec 13, 2021
·
1 revision
This example will show how to serialize a java object in sc-memory.
First, we need to create a class. This will be a User class with fields to store the name and password.
public record User(String username, String password) {}
Now let's create a user, then save it to the database, and read from the database
public class Main {
public static void main(String[] args) throws Exception {
User user = new User("Test", "1111");
ScMemory memory = new SyncOstisScMemory(new URI("ws://localhost:8090/ws_json"));
DefaultScContext context = new DefaultScContext(memory);
memory.open();
saveAndLoadUser(user, context);
memory.close();
}
public static void saveAndLoadUser(User userEntity, DefaultScContext context) throws ScMemoryException {
// Saving
System.err.println("StartValue = " + userEntity);
ScNode user = context.createNode(NodeType.NODE);
ScLinkString userName = context.createStringLink(LinkType.LINK, userEntity.username());
ScLinkString userPass = context.createStringLink(LinkType.LINK, userEntity.password());
ScEdge fromUserToName = context.createEdge(EdgeType.ACCESS, user, userName);
ScEdge fromUserToPass = context.createEdge(EdgeType.ACCESS, user, userPass);
ScNode usernameRelation = context.createNode(NodeType.NODE);
ScNode userPassRelation = context.createNode(NodeType.NODE);
ScEdge usernameRelationEdge = context.createEdge(EdgeType.ACCESS, usernameRelation, fromUserToName);
ScEdge userPassRelationEdge = context.createEdge(EdgeType.ACCESS, userPassRelation, fromUserToPass);
//--------------------------------------------------
// Loading
var x = context.findAllConstructionsNodeEdgeLinkWithRelation(user, EdgeType.ACCESS, LinkType.LINK, LinkContentType.STRING, usernameRelation, EdgeType.ACCESS);
String resultUsername = ((ScLinkString)x.findFirst().get().getTarget()).getContent();
var y = context.findAllConstructionsNodeEdgeLinkWithRelation(user, EdgeType.ACCESS, LinkType.LINK, LinkContentType.STRING, userPassRelation, EdgeType.ACCESS);
String resultPass = ((ScLinkString)y.findFirst().get().getTarget()).getContent();
User resultUser = new User(resultUsername, resultPass);
System.err.println("EndValue = " + resultUser);
}
}