001package de.deepamehta.storage.neo4j; 002 003import de.deepamehta.core.model.RoleModel; 004import de.deepamehta.core.service.ModelFactory; 005 006import org.neo4j.graphdb.Node; 007 008 009 010enum NodeType { 011 012 TOPIC { 013 @Override 014 RoleModel createRoleModel(Node node, String roleTypeUri, ModelFactory mf) { 015 return mf.newTopicRoleModel(node.getId(), roleTypeUri); 016 } 017 018 @Override 019 String error(Node node) { 020 return "ID " + node.getId() + " refers to an Association when the caller expects a Topic"; 021 } 022 }, 023 ASSOC { 024 @Override 025 RoleModel createRoleModel(Node node, String roleTypeUri, ModelFactory mf) { 026 return mf.newAssociationRoleModel(node.getId(), roleTypeUri); 027 } 028 029 @Override 030 String error(Node node) { 031 return "ID " + node.getId() + " refers to a Topic when the caller expects an Association"; 032 } 033 }; 034 035 // --- 036 037 abstract RoleModel createRoleModel(Node node, String roleTypeUri, ModelFactory mf); 038 039 abstract String error(Node node); 040 041 // --- 042 043 static NodeType of(Node node) { 044 String type = (String) node.getProperty("node_type"); 045 return valueOf(type.toUpperCase()); 046 } 047 048 boolean isTypeOf(Node node) { 049 return node.getProperty("node_type").equals(stringify()); 050 } 051 052 String stringify() { 053 return name().toLowerCase(); 054 } 055}