package won.node.facet.impl;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.shared.PrefixMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import won.protocol.exception.ConnectionAlreadyExistsException;
import won.protocol.exception.IllegalMessageForNeedStateException;
import won.protocol.exception.NoSuchNeedException;
import won.protocol.message.WonMessage;
import won.protocol.model.Connection;
import won.protocol.model.FacetType;
import won.protocol.model.Need;
import won.protocol.util.RdfUtils;
import won.protocol.vocabulary.SIOC;
/**
* User: gabriel
* Date: 17/01/14
*/
public class CommentUnrestrictedFacet extends AbstractFacet
{
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public FacetType getFacetType() {
return FacetType.CommentUnrestrictedFacet;
}
@Override
public void connectFromNeed(Connection con, Model content, WonMessage wonMessage)
throws NoSuchNeedException, IllegalMessageForNeedStateException, ConnectionAlreadyExistsException {
super.connectFromNeed(con, content, wonMessage);
/* send a connect back */
try {
//TODO: use new system
// needFacingConnectionClient.open(con, content, null);
Need need = needRepository.findOneByNeedURI(con.getNeedURI());
Model needContent = need.getDatatsetHolder().getDataset().getDefaultModel();
PrefixMapping prefixMapping = PrefixMapping.Factory.create();
// prefixMapping.setNsPrefix(SIOC.getURI(),"sioc");
needContent.withDefaultMappings(prefixMapping);
needContent.setNsPrefix("sioc", SIOC.getURI());
Resource post = needContent.createResource(con.getNeedURI().toString(), SIOC.POST);
Resource reply = needContent.createResource(con.getRemoteNeedURI().toString(),SIOC.POST);
needContent.add(needContent.createStatement(needContent.getResource(con.getNeedURI().toString()), SIOC.HAS_REPLY,
needContent.getResource(con.getRemoteNeedURI().toString())));
// add WON node link
logger.debug("linked data:"+ RdfUtils.toString(needContent));
need.getDatatsetHolder().getDataset().setDefaultModel(needContent);
needRepository.save(need);
// } catch (NoSuchConnectionException e) {
// e.printStackTrace();
// } catch (IllegalMessageForConnectionStateException e) {
// e.printStackTrace();
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
/* when connected change linked data*/
}
}