/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.object; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.HashMap; import org.joda.time.LocalDate; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mysema.rdfbean.TEST; import com.mysema.rdfbean.domains.PropertiesDomain; import com.mysema.rdfbean.model.LIT; import com.mysema.rdfbean.model.MiniRepository; import com.mysema.rdfbean.model.RDF; import com.mysema.rdfbean.model.STMT; import com.mysema.rdfbean.model.UID; import com.mysema.rdfbean.model.XSD; /** * @author mala * */ public class DynamicPropertiesTest implements PropertiesDomain { private static final String CREATOR_COMMENT = "Created under stress"; private static final String DESCRIPTION1 = "Some description 1"; private static final String DESCRIPTION2 = "Some description 2"; private static final LocalDate CREATED = new LocalDate(); private static final LocalDate DEADLINE = CREATED.plusDays(1); private DefaultConfiguration configuration; private MiniRepository repository; private Session session; private SessionFactoryImpl sessionFactory; @Before public void setUp() { repository = new MiniRepository(); configuration = new DefaultConfiguration(TEST.NS, Project.class, Person.class); sessionFactory = new SessionFactoryImpl(); sessionFactory.setRepository(repository); sessionFactory.setConfiguration(configuration); sessionFactory.initialize(); repository.add( new STMT(_project, RDF.type, new UID(TEST.NS, "Project")), new STMT(_project, _name, new LIT("TestProject")), new STMT(_project, _created, new LIT(CREATED.toString(), XSD.date)), new STMT(_person, RDF.type, new UID(TEST.NS, "Person")), new STMT(_person, _name, new LIT("Foo Bar")) ); session = sessionFactory.openSession(); } @After public void tearDown() throws IOException { session.close(); } @Test public void Read() throws IOException { // Checking preconditions Project project = session.get(Project.class, _project); assertEquals("TestProject", project.name); assertEquals(0, project.infos.size()); assertEquals(1, project.dates.size()); assertTrue(project.dates.containsKey(_created)); assertEquals(0, project.participants.size()); session.close(); // Adding dynamic data repository.add( new STMT(_project, _owner, _person), new STMT(_project, _deadline, new LIT(DEADLINE.toString(), XSD.date)), new STMT(_project, _description, new LIT(DESCRIPTION1)), new STMT(_project, _description, new LIT(DESCRIPTION2)), new STMT(_project, _creatorComment, new LIT(CREATOR_COMMENT)) ); // Checking dynamic data session = sessionFactory.openSession(); project = session.get(Project.class, _project); Person person = session.get(Person.class, _person); assertEquals("Foo Bar", person.name); assertEquals(2, project.infos.size()); assertEquals(2, project.dates.size()); assertTrue(project.infos.containsKey(_description)); assertTrue(project.infos.containsKey(_creatorComment)); assertTrue(project.dates.containsKey(_created)); assertTrue(project.dates.containsKey(_deadline)); assertTrue(project.participants.containsKey(_owner)); assertFalse(project.infos.containsKey(_name)); assertEquals(person, project.participants.get(_owner)); assertTrue(project.infos.get(_description).contains(DESCRIPTION1)); assertTrue(project.infos.get(_description).contains(DESCRIPTION2)); assertTrue(project.infos.get(_creatorComment).contains(CREATOR_COMMENT)); assertEquals(CREATED, project.dates.get(_created)); assertEquals(DEADLINE, project.dates.get(_deadline)); } @Test public void Write() { Project project = new Project(); project.dates = new HashMap<UID, LocalDate>(); project.dates.put(_created, CREATED); project.dates.put(_deadline, DEADLINE); session.save(project); session.clear(); Project project2 = session.getById(project.id, Project.class); assertEquals(project.dates, project2.dates); } }