Skip to content

Commit

Permalink
Endpoints are now stored on db
Browse files Browse the repository at this point in the history
  • Loading branch information
hvarg committed Feb 14, 2024
1 parent 0c07cf0 commit 8297e4b
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 20 deletions.
46 changes: 29 additions & 17 deletions server/src/main/java/org/diskproject/server/db/DiskDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import java.util.Date;
import java.util.List;

import org.diskproject.server.managers.MethodAdapterManager;
import org.diskproject.server.repository.DiskRDF;
import org.diskproject.server.util.KBCache;
import org.diskproject.server.util.KBUtils;
Expand Down Expand Up @@ -44,12 +43,10 @@ public class DiskDB {
private DiskRDF rdf;
private KBAPI diskKB, domainKB;
private KBCache DISKOnt;
public MethodAdapterManager methodAdapters;

public DiskDB (String domain, DiskRDF rdf, MethodAdapterManager methodAdapters) {
public DiskDB (String domain, DiskRDF rdf) {
this.domain = domain;
this.rdf = rdf;
this.methodAdapters = methodAdapters;
this.loadKB();
this.domainKB = getOrCreateKB(domain);
if (this.domainKB == null) //TODO: check this.
Expand Down Expand Up @@ -230,19 +227,34 @@ private List<Triple> completeGraphWithDomains (Graph graph, String domain, Strin
return triples;
}

// -- Common
private KBObject findOrWriteEndpoint (Endpoint p) {
// All entities should be unique
int id = p.toString().hashCode();
KBObject KBEndpoint = domainKB.getIndividual(createEndpointURI(id));
//Check if this entity exists
// -- Endpoints
public Endpoint registerEndpoint (Endpoint item) {
int id = (item.getName() + item.getUrl()).hashCode();
item.setId(createEndpointURI(id));

this.rdf.startRead();
KBObject KBEndpoint = domainKB.getIndividual(item.getId());
Endpoint endpoint = loadEndpoint(KBEndpoint);
this.rdf.end();
if (endpoint == null) {
//FIXME: Cannot create the endpoint here, we need to check that the endpoint is valid first
System.out.println("Endpoint does not exist. Creating...");
domainKB.setPropertyValue(KBEndpoint, DISKOnt.getProperty(DISK.HAS_SOURCE_NAME), domainKB.createLiteral(p.getName()));
domainKB.setPropertyValue(KBEndpoint, DISKOnt.getProperty(DISK.HAS_SOURCE_URL), domainKB.createLiteral(p.getUrl()));
System.out.println("Configuration changed! Adding endpoint:");
this.rdf.startWrite();
this.writeEndpoint(item);
this.rdf.save(domainKB);
this.rdf.end();
System.out.println(item);
return item;
}
return endpoint;
}

// -- Common
private KBObject writeEndpoint (Endpoint p) {
KBObject KBEndpoint = domainKB.createObjectOfClass(p.getId(), DISKOnt.getClass(DISK.ENDPOINT));
domainKB.setPropertyValue(KBEndpoint, DISKOnt.getProperty(DISK.HAS_SOURCE_NAME),
domainKB.createLiteral(p.getName()));
domainKB.setPropertyValue(KBEndpoint, DISKOnt.getProperty(DISK.HAS_SOURCE_URL),
domainKB.createLiteral(p.getUrl()));
return KBEndpoint;
}

Expand All @@ -251,7 +263,7 @@ private Endpoint loadEndpoint (KBObject endpoint) {
KBObject url = domainKB.getPropertyValue(endpoint, DISKOnt.getProperty(DISK.HAS_SOURCE_URL));
if (name == null || url == null)
return null;
return new Endpoint(name.getValueAsString(), url.getValueAsString());
return new Endpoint(name.getValueAsString(), url.getValueAsString(), endpoint.getID());
}

private KBObject writeEntity (Entity src) {
Expand Down Expand Up @@ -492,7 +504,7 @@ private KBObject _writeDataQueryTemplate (DataQueryTemplate dataQuery, KBObject
if (dataQuery.getDescription() != null)
domainKB.setComment(dq, dataQuery.getDescription());
if (dataQuery.getEndpoint() != null)
domainKB.setPropertyValue(dq, DISKOnt.getProperty(DISK.HAS_DATA_SOURCE), findOrWriteEndpoint(dataQuery.getEndpoint()));
domainKB.setPropertyValue(dq, DISKOnt.getProperty(DISK.HAS_DATA_SOURCE), domainKB.getIndividual(dataQuery.getEndpoint().getId()));
if (dataQuery.getTemplate() != null)
domainKB.setPropertyValue(dq, DISKOnt.getProperty(DISK.HAS_QUERY_TEMPLATE), domainKB.createLiteral(dataQuery.getTemplate()));
if (dataQuery.getVariablesToShow() != null)
Expand Down Expand Up @@ -696,7 +708,7 @@ private KBObject _writeWorkflowSeed (WorkflowSeed seed, KBObject seedObj, String
if (seed.getDescription() != null)
domainKB.setComment(seedObj, seed.getDescription());
if (seed.getSource() != null)
domainKB.setPropertyValue(seedObj, DISKOnt.getClass(DISK.HAS_WORKFLOW_SOURCE), findOrWriteEndpoint(seed.getSource()));
domainKB.setPropertyValue(seedObj, DISKOnt.getClass(DISK.HAS_WORKFLOW_SOURCE), domainKB.getResource(seed.getSource().getId()));
if (seed.getLink() != null)
domainKB.setPropertyValue(seedObj, DISKOnt.getClass(DISK.HAS_WORKFLOW), domainKB.createLiteral(seed.getLink()) );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;

import org.diskproject.server.adapters.GraphDBAdapter;
import org.diskproject.server.adapters.SparqlAdapter;
import org.diskproject.server.db.DiskDB;
import org.diskproject.server.util.Config;
import org.diskproject.server.util.Config.DataAdapterConfig;
import org.diskproject.server.util.ConfigKeys;
import org.diskproject.shared.classes.adapters.DataAdapter;
import org.diskproject.shared.classes.common.Endpoint;

public class DataAdapterManager {
protected Map<String, DataAdapter> byUrl, byName;
Expand Down Expand Up @@ -84,4 +87,11 @@ public String toString () {
public Collection<DataAdapter> values () {
return this.byUrl.values();
}

public void registerAdapters (DiskDB db) {
for (DataAdapter adp: this.values()) {
Endpoint cur = db.registerEndpoint(new Endpoint(adp.getName(), adp.getEndpointUrl()));
adp.setId(cur.getId());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package org.diskproject.server.managers;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.diskproject.server.adapters.AirFlowAdapter;
import org.diskproject.server.db.DiskDB;
import org.diskproject.server.repository.WingsAdapter;
import org.diskproject.server.util.Config;
import org.diskproject.server.util.Config.MethodAdapterConfig;
import org.diskproject.server.util.ConfigKeys;
import org.diskproject.shared.classes.adapters.MethodAdapter;
import org.diskproject.shared.classes.common.Endpoint;
import org.diskproject.shared.classes.workflow.Workflow;
import org.diskproject.shared.classes.workflow.WorkflowVariable;

Expand Down Expand Up @@ -75,6 +78,10 @@ public List<Workflow> getWorkflowList () {
return list;
}

public Collection<MethodAdapter> values () {
return this.byUrl.values();
}

public List<WorkflowVariable> getWorkflowVariablesByName (String sourceName, String id) {
MethodAdapter cur = this.getMethodAdapterByName(sourceName);
if (cur != null)
Expand All @@ -96,4 +103,11 @@ public String toString () {
}
return txt;
}

public void registerAdapters (DiskDB db) {
for (MethodAdapter adp: this.values()) {
Endpoint cur = db.registerEndpoint(new Endpoint(adp.getName(), adp.getEndpointUrl()));
adp.setId(cur.getId());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,14 @@ public DiskRepository() {
// Threads
this.threadManager = new ThreadManager(methodAdapters, this); // FIXME: instead of this should be the db & adapters.
// These read/write RDF
this.diskDB = new DiskDB(server, this.rdf, this.methodAdapters);
this.diskDB = new DiskDB(server, this.rdf);
this.questionDB = new QuestionDB(this.rdf, this.dataAdapters);
this.vocabularyManager = new VocabularyManager(this.rdf);
this.addInternalVocabularies();

// Register adapters as Endpoints on the RDF store
this.dataAdapters.registerAdapters(diskDB);
this.methodAdapters.registerAdapters(diskDB);
}

public void shutdownExecutors() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
public abstract class DataAdapter {
private String endpointUrl, name, username, password, description;
private String prefix, namespace, prefixResolution;
private String id;

public DataAdapter(String URI, String name) {
this.endpointUrl = URI;
Expand Down Expand Up @@ -70,6 +71,14 @@ public String toString () {
return "[" + this.name + "] " + (this.username != null ? this.username + "@" : "") + this.endpointUrl;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public abstract List<DataResult> query (String queryString) throws Exception;
public abstract byte[] queryCSV(String queryString) throws Exception;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public abstract class MethodAdapter {
private String password;
private String description;
private Float version;
private String id;

public static class FileAndMeta {
public byte[] data;
Expand Down Expand Up @@ -70,6 +71,14 @@ protected String getPassword () {
return this.password;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String toString () {
return "[" + this.name + "] " + (this.username != null ? this.username + "@" : "") + this.endpointUrl;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

public class Endpoint {
private String name, url;
private String id;

public Endpoint() {}

Expand All @@ -10,6 +11,12 @@ public Endpoint(String name, String url) {
this.url = url;
}

public Endpoint(String name, String url, String id) {
this.name = name;
this.url = url;
this.id = id;
}

public String getName() {
return name;
}
Expand All @@ -26,8 +33,16 @@ public void setUrl(String url) {
this.url = url;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

@Override
public String toString() {
return "[" + this.name + "|" + this.url + "]";
return (this.id != null ? "(" + this.id + ")" : "") + "[" + this.name + "|" + this.url + "]";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import org.diskproject.shared.classes.adapters.DataAdapter;

public class DataAdapterResponse {
public String url, name, prefix, namespace, description, prefixResolution;
public String url, name, prefix, namespace, description, prefixResolution, id;

public DataAdapterResponse (DataAdapter dataAdapter) {
this.url = dataAdapter.getEndpointUrl();
Expand All @@ -18,5 +18,7 @@ public DataAdapterResponse (DataAdapter dataAdapter) {
this.description = dataAdapter.getDescription();
if (dataAdapter.getPrefixResolution() != null)
this.prefixResolution = dataAdapter.getPrefixResolution();
if (dataAdapter.getId() != null)
this.id = dataAdapter.getId();
}
}

0 comments on commit 8297e4b

Please sign in to comment.