KiWiUriResource uri = new KiWiUriResource(Namespaces.NS_XSD + "dateTime");
Date value = new Date();
// add a new URI to the triple store and check if it exists afterwards, before and after commit
KiWiDateLiteral literal = new KiWiDateLiteral(value, uri);
connection.storeNode(literal, false);
// 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.assertEquals(uri,((KiWiLiteral)testLiteral1).getType());
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.assertEquals(uri,((KiWiLiteral)testLiteral2).getType());
Assert.assertTrue(literal == testLiteral2);
KiWiNode testLiteral3 = connection.loadLiteral(literal.stringValue(),null,uri);
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral3);
Assert.assertEquals(uri,((KiWiLiteral)testLiteral3).getType());
Assert.assertTrue(literal == testLiteral3);
// load by integer value
KiWiNode testLiteral6 = connection.loadLiteral(value);
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral6);
Assert.assertEquals(uri,((KiWiLiteral)testLiteral6).getType());
Assert.assertTrue(literal == testLiteral6);
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.assertEquals(uri,((KiWiLiteral)testLiteral4).getType());
Assert.assertTrue(literal != testLiteral4);
KiWiNode testLiteral5 = connection.loadLiteral(literal.stringValue(),null,uri);
// needs to be equal, but now it should not be the same object!
Assert.assertEquals(literal,testLiteral5);
Assert.assertEquals(uri,((KiWiLiteral)testLiteral5).getType());
Assert.assertTrue(literal != testLiteral5);
// load by integer value
KiWiNode testLiteral7 = connection.loadLiteral(value);
// needs to be equal, and should also be the identical object!
Assert.assertEquals(literal,testLiteral7);
Assert.assertEquals(uri,((KiWiLiteral)testLiteral7).getType());
Assert.assertTrue(literal != testLiteral7);
connection.commit();
// finally do a test on the nodes table, it should contain exactly one entry
PreparedStatement checkNodeStmt = connection.getJDBCConnection().prepareStatement("SELECT * FROM nodes WHERE ntype='date'");
ResultSet result = checkNodeStmt.executeQuery();
Assert.assertTrue(result.next());
Assert.assertEquals((long) literal.getId(), result.getLong("id"));
Assert.assertEquals(literal.stringValue(),result.getString("svalue"));
Assert.assertEquals(DateUtils.getDateWithoutFraction(value).getTime(),result.getTimestamp("tvalue").getTime());
Assert.assertEquals("date",result.getString("ntype"));
Assert.assertNull(result.getString("lang"));
Assert.assertEquals((long) uri.getId(), result.getLong("ltype"));