*
* @throws SQLException
*/
@Test
public void testStoreStringLiteralNoType() throws SQLException {
KiWiConnection connection = persistence.getConnection();
try {
KiWiUriResource stype = new KiWiUriResource(Namespaces.NS_XSD+"string");
connection.storeNode(stype);
// add a new URI to the triple store and check if it exists afterwards, before and after commit
KiWiStringLiteral literal = new KiWiStringLiteral(RandomStringUtils.randomAlphanumeric(8),null,stype);
connection.storeNode(literal);
// check if it then has a database ID
Assert.assertNotNull(literal.getId());
KiWiNode testLiteral1 = connection.loadNodeById(literal.getId());
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral1);
Assert.assertTrue(literal == testLiteral1);
connection.commit();
KiWiNode testLiteral2 = connection.loadNodeById(literal.getId());
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral2);
Assert.assertTrue(literal == testLiteral2);
KiWiNode testLiteral3 = connection.loadLiteral(literal.stringValue(), null, stype);
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral3);
Assert.assertTrue(literal == testLiteral3);
connection.commit();
// clear cache and test again
persistence.clearCache();
KiWiNode testLiteral4 = connection.loadNodeById(literal.getId());
// needs to be equal, but now it should not be the same object!
Assert.assertEquals(literal,testLiteral4);
Assert.assertTrue(literal != testLiteral4);
KiWiNode testLiteral5 = connection.loadLiteral(literal.stringValue(),null,stype);
// needs to be equal, but now it should not be the same object!
Assert.assertEquals(literal,testLiteral5);
Assert.assertTrue(literal != testLiteral5);
connection.commit();
// finally do a test on the nodes table, it should contain exactly one entry
PreparedStatement checkNodeStmt = connection.getJDBCConnection().prepareStatement("SELECT * FROM nodes");
ResultSet result = checkNodeStmt.executeQuery();
Assert.assertTrue(result.next());
Assert.assertTrue(result.next());
Assert.assertEquals((long) literal.getId(), result.getLong("id"));
Assert.assertEquals(literal.stringValue(), result.getString("svalue"));
Assert.assertEquals("string",result.getString("ntype"));
Assert.assertNull(result.getString("lang"));
Assert.assertNotNull(result.getObject("ltype"));
result.close();
connection.commit();
} finally {
connection.close();
}
}