Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 6788fa7
Author: Stephen Davies <steve9164@gmail.com>
Date:   Fri Feb 23 14:06:29 2024 +1100

    Untested strategy to recover from sparse MagdaReference share data ending up in models
  • Loading branch information
steve9164 committed Feb 27, 2024
1 parent 646d445 commit 191135b
Showing 1 changed file with 28 additions and 30 deletions.
58 changes: 28 additions & 30 deletions lib/Models/Catalog/CatalogReferences/MagdaReference.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ export default class MagdaReference extends AccessControlMixin(
) as JsonObject | undefined;
}

const model = MagdaReference.createMemberFromRecord(
let model = MagdaReference.createMemberFromRecord(
terria,
undefined,
distributionFormats,
Expand All @@ -442,25 +442,35 @@ export default class MagdaReference extends AccessControlMixin(
shareKeys = member.aspects.terria.shareKeys.filter(isJsonString);
}

model = terria.getModelById(BaseModel, member.id)

if (!model) {
// Can't create an item or group yet, so create a reference.
const ref = new MagdaReference(member.id, terria, undefined);

model = new MagdaReference(member.id, terria, undefined);
terria.addModel(model, shareKeys);
}
if (
model instanceof MagdaReference &&
!(isDefined(model.url) && isDefined(model.recordId)) &&
!isDefined(model.magdaRecord)
) {
// MagdaReference has just been created, or comes from share data with
// not enough information to load itself
if (magdaUri) {
ref.setTrait(CommonStrata.definition, "url", magdaUri.toString());
model.setTrait(CommonStrata.definition, "url", magdaUri.toString());
}
ref.setTrait(CommonStrata.definition, "recordId", memberId);
model.setTrait(CommonStrata.definition, "recordId", memberId);

if (
isJsonObject(member.aspects, false) &&
isJsonObject(member.aspects.group, false)
) {
// This is most likely a group.
ref.setTrait(CommonStrata.definition, "isGroup", true);
model.setTrait(CommonStrata.definition, "isGroup", true);
} else {
// This is most likely a mappable or chartable item.
ref.setTrait(CommonStrata.definition, "isMappable", true);
ref.setTrait(CommonStrata.definition, "isChartable", true);
model.setTrait(CommonStrata.definition, "isMappable", true);
model.setTrait(CommonStrata.definition, "isChartable", true);
}

// Use the name from the terria aspect if there is one.
Expand All @@ -470,37 +480,25 @@ export default class MagdaReference extends AccessControlMixin(
isJsonObject(member.aspects.terria.definition, false) &&
isJsonString(member.aspects.terria.definition.name)
) {
ref.setTrait(
model.setTrait(
CommonStrata.definition,
"name",
member.aspects.terria.definition.name
);
} else if (isJsonString(member.name)) {
ref.setTrait(CommonStrata.definition, "name", member.name);
}

if (overriddenMember) {
ref.setTrait(CommonStrata.definition, "override", overriddenMember);
}

if (terria.getModelById(BaseModel, member.id) === undefined) {
terria.addModel(ref, shareKeys);
model.setTrait(CommonStrata.definition, "name", member.name);
}
}

if (AccessControlMixin.isMixedInto(ref)) {
ref.setAccessType(getAccessTypeFromMagdaRecord(member));
}
if (overriddenMember) {
model.setTrait(CommonStrata.definition, "override", overriddenMember);
}

return ref.uniqueId;
} else {
if (terria.getModelById(BaseModel, member.id) === undefined) {
terria.addModel(model, shareKeys);
}
if (AccessControlMixin.isMixedInto(model)) {
model.setAccessType(getAccessTypeFromMagdaRecord(member));
}
return model.uniqueId;
if (AccessControlMixin.isMixedInto(model)) {
model.setAccessType(getAccessTypeFromMagdaRecord(member));
}

return model.uniqueId;
});

if (isJsonString(record.name)) {
Expand Down

0 comments on commit 191135b

Please sign in to comment.