* Root are processed first during tg import, which allows Import Advisor
to replace the current name.
gitlab #432
Change-Id: Ia297b4df4c0ad1895a985f592064a178a6c4fb10
(cherry picked from commit
c85fa803ee6833f46532097250ba0c3ac5ace86c)
this.handles = new int[resourceCount];
TIntObjectMap<Identity> identityMap = TransferableGraphUtils.mapIdentities(identities);
this.handles = new int[resourceCount];
TIntObjectMap<Identity> identityMap = TransferableGraphUtils.mapIdentities(identities);
+ // We must process roots first, because internal identifiers depend on them.
+ for(Identity identity : identities) {
+ IdentityDefinition definition = identity.definition;
+ if (definition instanceof Root) {
+ Root root = (Root) definition;
+ if (root.name.equals(""))
+ handles[identity.resource] = builder.handle(RootLibrary);
+ else {
+ Resource existing = advisor.analyzeRoot(graph, root);
+ if (existing != null)
+ handles[identity.resource] = builder.handle(existing);
+ }
+ }
+ }
+
for(Identity identity : identities) {
IdentityDefinition definition = identity.definition;
if(definition instanceof External) {
for(Identity identity : identities) {
IdentityDefinition definition = identity.definition;
if(definition instanceof External) {
existingInternalMap.put(identity.resource, existing);
}
}
existingInternalMap.put(identity.resource, existing);
}
}
- else if(definition instanceof Root) {
- Root root = (Root)definition;
- if(root.name.equals(""))
- handles[identity.resource] = builder.handle(RootLibrary);
- else {
- Resource existing = advisor.analyzeRoot(graph, root);
- if(existing != null)
- handles[identity.resource] = builder.handle(existing);
- }
- }
else if(definition instanceof Optional) {
External def = (External)definition;
Resource parent = builder.resource(handles[def.parent]);
else if(definition instanceof Optional) {
External def = (External)definition;
Resource parent = builder.resource(handles[def.parent]);
}
int[] getClustering() {
}
int[] getClustering() {
+ if (vg != null)
+ return null;
Variant v = extensions.get(Extensions.CLUSTERING);
if(v == null) return null;
try {
Variant v = extensions.get(Extensions.CLUSTERING);
if(v == null) return null;
try {
}
int[] getClusterSets() {
}
int[] getClusterSets() {
+ if (vg != null)
+ return null;
Variant v = extensions.get(Extensions.CLUSTER_SETS);
if(v == null) return null;
try {
Variant v = extensions.get(Extensions.CLUSTER_SETS);
if(v == null) return null;
try {
tg.forValues2(null, new ValueProcedure());
for(Resource r : existingInternalMap.valueCollection()) {
tg.forValues2(null, new ValueProcedure());
for(Resource r : existingInternalMap.valueCollection()) {
- graph.deny(r, InstanceOf, null, ExternalEntity, null);
+ try {
+ graph.deny(r, InstanceOf, null, ExternalEntity, null);
+ } catch (DatabaseException e) {
+ graph.deny(r, InstanceOf, null, ExternalEntity, vg);
+ }
missingExternals.add(external);
}
missingExternals.add(external);
}
- void prepare(ReadGraph graph) throws DatabaseException {
+ public void prepare(ReadGraph graph) throws DatabaseException {
findBuiltins(graph);
Resource[] resources = new Resource[tg.resourceCount];
findBuiltins(graph);
Resource[] resources = new Resource[tg.resourceCount];
- void write(WriteOnlyGraph graph) throws DatabaseException {
+ public void write(WriteOnlyGraph graph) throws DatabaseException {
Resource[] resources = this.resources;
Resource[] resources = this.resources;