/**
* PODD is an OWL ontology database used for scientific project management
*
* Copyright (C) 2009-2013 The University Of Queensland
*
* This program is free software: you can redistribute it and/or modify it under the terms of the
* GNU Affero General Public License as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along with this program.
* If not, see <http://www.gnu.org/licenses/>.
*/
package com.github.podd.impl.data.test;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.openrdf.model.BNode;
import org.openrdf.model.Model;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.LinkedHashModel;
import org.openrdf.model.vocabulary.RDF;
import com.github.podd.api.data.PoddDataRepository;
import com.github.podd.api.data.SPARQLDataReference;
import com.github.podd.api.data.test.AbstractPoddDataRepositoryTest;
import com.github.podd.impl.data.SPARQLDataReferenceImpl;
import com.github.podd.impl.data.SPARQLDataRepositoryImpl;
import com.github.podd.utils.PODD;
/**
* @author kutila
*
*/
public class SPARQLDataRepositoryImplTest extends AbstractPoddDataRepositoryTest<SPARQLDataReference>
{
@Rule
public final TemporaryFolder tempDirectory = new TemporaryFolder();
private Path sshDir = null;
@Override
protected Collection<URI> getExpectedTypes() throws Exception
{
final Collection<URI> types = new ArrayList<URI>();
types.add(PODD.PODD_DATA_REPOSITORY);
types.add(PODD.PODD_SPARQL_DATA_REPOSITORY);
return types;
}
@Override
protected Map<Resource, Model> getIncompleteModels()
{
final ValueFactory vf = PODD.VF;
final Map<Resource, Model> incompleteModels = new HashMap<Resource, Model>();
// - no "protocol"
final Model model1 = new LinkedHashModel();
final BNode resource1 = vf.createBNode("incompleteModel:1");
model1.add(resource1, PODD.PODD_DATA_REPOSITORY_ALIAS, vf.createLiteral(this.getAliasGood()));
model1.add(resource1, RDF.TYPE, PODD.PODD_DATA_REPOSITORY);
model1.add(resource1, RDF.TYPE, PODD.PODD_SPARQL_DATA_REPOSITORY);
model1.add(resource1, PODD.PODD_DATA_REPOSITORY_HOST, vf.createLiteral("localhost"));
model1.add(resource1, PODD.PODD_DATA_REPOSITORY_PORT, vf.createLiteral(12345));
incompleteModels.put(resource1, model1);
// - no "host"
final Model model2 = new LinkedHashModel();
final BNode resource2 = vf.createBNode("incompleteModel:2");
model2.add(resource2, PODD.PODD_DATA_REPOSITORY_ALIAS, vf.createLiteral(this.getAliasGood()));
model2.add(resource2, RDF.TYPE, PODD.PODD_DATA_REPOSITORY);
model2.add(resource2, RDF.TYPE, PODD.PODD_SPARQL_DATA_REPOSITORY);
model2.add(resource2, PODD.PODD_DATA_REPOSITORY_PROTOCOL, vf.createLiteral(PoddDataRepository.PROTOCOL_HTTP));
model2.add(resource2, PODD.PODD_DATA_REPOSITORY_PORT, vf.createLiteral(12345));
incompleteModels.put(resource2, model2);
// - no "port"
final Model model3 = new LinkedHashModel();
final BNode resource3 = vf.createBNode("incompleteModel:3");
model3.add(resource3, PODD.PODD_DATA_REPOSITORY_ALIAS, vf.createLiteral(this.getAliasGood()));
model3.add(resource3, RDF.TYPE, PODD.PODD_DATA_REPOSITORY);
model3.add(resource3, RDF.TYPE, PODD.PODD_SPARQL_DATA_REPOSITORY);
model3.add(resource3, PODD.PODD_DATA_REPOSITORY_PROTOCOL, vf.createLiteral(PoddDataRepository.PROTOCOL_HTTP));
model3.add(resource3, PODD.PODD_DATA_REPOSITORY_HOST, vf.createLiteral("localhost"));
incompleteModels.put(resource3, model3);
// - no protocol, host, port
final Model model4 = new LinkedHashModel();
final BNode resource4 = vf.createBNode("incompleteModel:4");
model4.add(resource4, PODD.PODD_DATA_REPOSITORY_ALIAS, vf.createLiteral(this.getAliasGood()));
model4.add(resource4, RDF.TYPE, PODD.PODD_DATA_REPOSITORY);
model4.add(resource4, RDF.TYPE, PODD.PODD_SPARQL_DATA_REPOSITORY);
incompleteModels.put(resource4, model4);
return incompleteModels;
}
@Override
protected SPARQLDataReference getNewNonValidatingDataReference()
{
return new SPARQLDataReferenceImpl();
}
@Override
protected PoddDataRepository<SPARQLDataReference> getNewPoddDataRepository(final Resource nextDataRepository,
final Model model) throws Exception
{
final PoddDataRepository<SPARQLDataReference> result = new SPARQLDataRepositoryImpl(nextDataRepository, model);
return result;
}
/*
* Create a {@link Model} containing configuration details for an SSH File Repository.
*
* (non-Javadoc)
*
* @see com.github.podd.api.data.test.AbstractPoddDataRepositoryTest# getNewPoddFileRepository()
*/
@Override
protected PoddDataRepository<SPARQLDataReference> getNewPoddDataRepository() throws Exception
{
final ValueFactory vf = PODD.VF;
final Model model = new LinkedHashModel();
final BNode bNode = vf.createBNode();
model.add(bNode, PODD.PODD_DATA_REPOSITORY_ALIAS, vf.createLiteral(this.getAliasGood()));
model.add(bNode, RDF.TYPE, PODD.PODD_DATA_REPOSITORY);
model.add(bNode, RDF.TYPE, PODD.PODD_SPARQL_DATA_REPOSITORY);
// ssh specific attributes
model.add(bNode, PODD.PODD_DATA_REPOSITORY_PROTOCOL, vf.createLiteral(PoddDataRepository.PROTOCOL_HTTP));
model.add(bNode, PODD.PODD_DATA_REPOSITORY_HOST, vf.createLiteral(SSHService.TEST_SSH_HOST));
model.add(bNode, PODD.PODD_DATA_REPOSITORY_PORT, vf.createLiteral(12345));
model.add(bNode, PODD.PODD_DATA_REPOSITORY_PATH, vf.createLiteral("/path/to/sparql/endpoint"));
return this.getNewPoddDataRepository(bNode, model);
}
@Override
protected SPARQLDataReference getNewValidatingDataReference()
{
return new SPARQLDataReferenceImpl();
}
@Before
@Override
public void setUp() throws Exception
{
super.setUp();
}
@Override
protected void startRepositorySource() throws Exception
{
}
@Override
protected void stopRepositorySource() throws Exception
{
}
@Ignore("TODO: Implement validation")
@Test
@Override
public void testValidateWithNonExistentFile() throws Exception
{
}
}