*******************************************************************************/
package org.simantics.db.layer0.migration;
+import java.io.DataInputStream;
import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.simantics.databoard.Bindings;
+import org.simantics.databoard.adapter.AdaptException;
import org.simantics.databoard.binding.mutable.Variant;
import org.simantics.databoard.container.DataContainer;
+import org.simantics.databoard.container.DataContainers;
import org.simantics.db.ReadGraph;
import org.simantics.db.Resource;
import org.simantics.db.Session;
import org.simantics.db.WriteGraph;
import org.simantics.db.WriteOnlyGraph;
import org.simantics.db.common.CommentMetadata;
+import org.simantics.db.common.primitiverequest.PossibleResource;
import org.simantics.db.common.request.BinaryRead;
import org.simantics.db.common.request.FreshEscapedName;
import org.simantics.db.common.request.UnaryRead;
import org.simantics.db.layer0.adapter.impl.SharedOntologyImportAdvisor;
import org.simantics.db.layer0.adapter.impl.TrashBinRemover;
import org.simantics.db.layer0.internal.SimanticsInternal;
+import org.simantics.db.layer0.util.ExternalDownloadBean;
import org.simantics.db.layer0.util.Layer0Utils;
import org.simantics.db.layer0.util.TGTransferableGraphSource;
import org.simantics.db.service.XSupport;
if(monitor == null) monitor = new NullProgressMonitor();
+ Variant edbVariant = tg.extensions.get(ExternalDownloadBean.EXTENSION_KEY);
+ if(edbVariant != null) {
+ try {
+ ExternalDownloadBean edb = (ExternalDownloadBean)edbVariant.getValue(ExternalDownloadBean.BINDING);
+ for(Map.Entry<String, String> entry : edb.downloads.entrySet()) {
+ String uri = entry.getKey();
+ Resource existing = session.syncRequest(new PossibleResource(uri));
+ if(existing == null) {
+ String download = entry.getValue();
+ URL url = new URL(download);
+ DataContainer container = DataContainers.readFile(new DataInputStream(url.openStream()));
+ TransferableGraph1 dependencyTg = (TransferableGraph1) container.content.getValue(TransferableGraph1.BINDING);
+ importSharedOntology(monitor, session, dependencyTg, true);
+ }
+ }
+ } catch (AdaptException e) {
+ throw new DatabaseException(e);
+ } catch (MalformedURLException e) {
+ throw new DatabaseException(e);
+ } catch (IOException e) {
+ throw new DatabaseException(e);
+ }
+
+ }
+
Collection<Identity> roots = TransferableGraphUtils.getRoots(tg);
if(roots.size() == 1) {
-// Identity id = roots.iterator().next();
-// final Root root = (Root)id.definition;
-// Resource rootResource = session.syncRequest(new WriteResultRequest<Resource>() {
-// @Override
-// public Resource perform(WriteGraph graph) throws DatabaseException {
-// Resource type = graph.getResource(root.type);
-// Resource existing = graph.getPossibleResource(root.name);
-// if(existing != null) throw new DatabaseException("Shared library " + root.name + " exists already.");
-// return Layer0Utils.applySCL("Simantics/SharedOntologies", "createSharedOntology", graph, root.name, type);
-// }
-// });
try {
TGTransferableGraphSource tgSource = new TGTransferableGraphSource(tg);
SharedOntologyImportAdvisor advisor = new SharedOntologyImportAdvisor(published);
-// TransferableGraphs.importGraph1(session, tgSource, advisor);
-
-// if (advisor.getRoots().size() == 1) {
-// return advisor.getRoots().iterator().next();
-// }
- //TransferableGraphs.importGraph1(session, tg, new SharedOntologyImportAdvisor(), null);
MigrationState state = newState();
- //state.setProperty(MigrationStateKeys.BASE_URI, AprosBuiltins.URIs.Migration);
state.setProperty(MigrationStateKeys.UPDATE_DEPENDENCIES, false);
state.setProperty(MigrationStateKeys.CURRENT_TGS, tgSource);
state.setProperty(MigrationStateKeys.SESSION, session);
public final Resource NamespaceMigrationStep_Prefix_to;
public final Resource NamespaceMigrationStep_Prefix_to_Inverse;
public final Resource Ontology;
+ public final Resource Ontology_download;
+ public final Resource Ontology_download_Inverse;
public final Resource Ontology_global;
public final Resource Ontology_global_Inverse;
public final Resource OrderedSet;
public static final String NamespaceMigrationStep_Prefix_to = "http://www.simantics.org/Layer0-1.1/NamespaceMigrationStep/Prefix/to";
public static final String NamespaceMigrationStep_Prefix_to_Inverse = "http://www.simantics.org/Layer0-1.1/NamespaceMigrationStep/Prefix/to/Inverse";
public static final String Ontology = "http://www.simantics.org/Layer0-1.1/Ontology";
+ public static final String Ontology_download = "http://www.simantics.org/Layer0-1.1/Ontology/download";
+ public static final String Ontology_download_Inverse = "http://www.simantics.org/Layer0-1.1/Ontology/download/Inverse";
public static final String Ontology_global = "http://www.simantics.org/Layer0-1.1/Ontology/global";
public static final String Ontology_global_Inverse = "http://www.simantics.org/Layer0-1.1/Ontology/global/Inverse";
public static final String OrderedSet = "http://www.simantics.org/Layer0-1.1/OrderedSet";
NamespaceMigrationStep_Prefix_to = getResourceOrNull(graph, URIs.NamespaceMigrationStep_Prefix_to);
NamespaceMigrationStep_Prefix_to_Inverse = getResourceOrNull(graph, URIs.NamespaceMigrationStep_Prefix_to_Inverse);
Ontology = getResourceOrNull(graph, URIs.Ontology);
+ Ontology_download = getResourceOrNull(graph, URIs.Ontology_download);
+ Ontology_download_Inverse = getResourceOrNull(graph, URIs.Ontology_download_Inverse);
Ontology_global = getResourceOrNull(graph, URIs.Ontology_global);
Ontology_global_Inverse = getResourceOrNull(graph, URIs.Ontology_global_Inverse);
OrderedSet = getResourceOrNull(graph, URIs.OrderedSet);