package won.protocol.util; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Statement; import org.apache.jena.vocabulary.RDF; import won.protocol.model.Connection; import won.protocol.model.ConnectionState; import won.protocol.vocabulary.WON; import java.net.URI; /** * User: gabriel * Date: 09.04.13 * T ime: 15:38 */ public class ConnectionModelMapper implements ModelMapper<Connection> { @Override public Model toModel(Connection connection) { Model model = ModelFactory.createDefaultModel(); Resource connectionMember = model.createResource(connection.getConnectionURI().toString()) .addProperty(WON.HAS_CONNECTION_STATE, WON.toResource(connection.getState())) .addProperty(WON.BELONGS_TO_NEED, model.createResource(connection.getNeedURI().toString())); connectionMember.addProperty(RDF.type, WON.CONNECTION); if (connection.getRemoteConnectionURI() != null) { Resource remoteConnection = model.createResource(connection.getRemoteConnectionURI().toString()); connectionMember.addProperty(WON.HAS_REMOTE_CONNECTION, remoteConnection); } if (connection.getRemoteNeedURI() != null) { Resource remoteNeed = model.createResource(connection.getRemoteNeedURI().toString()); connectionMember.addProperty(WON.HAS_REMOTE_NEED, remoteNeed); } connectionMember.addProperty(WON.HAS_FACET, model.createResource(connection.getTypeURI().toString())); return model; } @Override public Connection fromModel(Model model) { Connection connection = new Connection(); Resource connectionRes = RdfUtils.getBaseResource(model); connection.setConnectionURI(URI.create(connectionRes.getURI())); URI connectionStateURI = URI.create(connectionRes.getProperty(WON.HAS_CONNECTION_STATE).getResource().getURI()); connection.setState(ConnectionState.parseString(connectionStateURI.getFragment())); Statement remoteConnectionStmt = connectionRes.getProperty(WON.HAS_REMOTE_CONNECTION); if (remoteConnectionStmt != null) { connection.setRemoteConnectionURI(URI.create(connectionRes.getProperty(WON.HAS_REMOTE_CONNECTION).getResource() .getURI())); } connection.setNeedURI(URI.create(connectionRes.getProperty(WON.BELONGS_TO_NEED).getResource().getURI())); connection.setRemoteNeedURI(URI.create(connectionRes.getProperty(WON.HAS_REMOTE_NEED).getResource().getURI())); connection.setTypeURI(URI.create(connectionRes.getProperty(WON.HAS_FACET).getResource().getURI())); return connection; } }