inlineEvent [sv]

Andre språk: inlineEvent (svensk)

Script

Datasett
Sist lagret
07.06.2018 14:56:29
Kode
inlineEvent
Navn
inlineEvent
Svensk

Kildekode
var result = false; var IndexService = Java.type("se.altrusoft.entitymachine.index.IndexService"); var Schema = Java.type("se.altrusoft.entitymachine.schema.Schema"); var PropertyType = Java.type("se.altrusoft.entitymachine.schema.PropertyType"); var PropertyValue = Java.type("se.altrusoft.entitymachine.entity.PropertyValue"); var PropertyStatus = Java.type("se.altrusoft.entitymachine.entity.PropertyStatus"); var KulturNavPropertyStatus = Java.type("models.KulturNavPropertyStatus"); var SecurityUtils = Java.type("security.SecurityUtils") var ServiceUtils = Java.type("util.ServiceUtils") var Constants = Java.type("util.Constants") var EntityUtils = Java.type("util.EntityUtils") var UserEnv = Java.type("util.UserEnv") var UUID = Java.type("java.util.UUID"); var conf = { Person: [ { refProperty: "person.birth", backRefProperty: "person.birth.child" }, { refProperty: "person.death", backRefProperty: "person.death.person" }, { refProperty: "person.liferole", backRefProperty: "person.liferole.person" }, { refProperty: "person.occupation", backRefProperty: "person.occupation.person" }, { // Just in case, but haven't seen any instances refProperty: "person.education", backRefProperty: "person.education.person" }, { refProperty: "person.residence", backRefProperty: "person.residence.person" }, { refProperty: "person.hasworksat", backRefProperty: "person.hasworksat.person" }, { // Just in case, but haven't seen any instances refProperty: "person.membership", backRefProperty: "person.membership.person" }, { refProperty: "person.marriage", backRefProperty: "person.marriage.person1" }, { refProperty: "agent.participatedIn", backRefProperty: "agent.participation.participant" }, { refProperty: "agent.relatedTo", backRefProperty: "agent.related.agent" }, { refProperty: "agent.activity", backRefProperty: "agent.activity.agent" } ], Animal: [ { refProperty: "animal.birth", backRefProperty: "animal.birth.animal" }, { refProperty: "animal.death", backRefProperty: "animal.death.animal" }, ], Organization: [ { refProperty: "association.establishment", backRefProperty: "association.establishment.association" }, { refProperty: "association.termination", backRefProperty: "association.termination.association" }, { refProperty: "organization.actor", backRefProperty: "organization.actor.organization" }, { refProperty: "agent.participatedIn", backRefProperty: "agent.participation.participant" }, { refProperty: "agent.relatedTo", backRefProperty: "agent.related.agent" }, { refProperty: "agent.activity", backRefProperty: "agent.activity.agent" }, { refProperty: "agent.ownedBy", backRefProperty: "agent.ownership.owned" } ], Group: [ { refProperty: "agent.relatedTo", backRefProperty: "agent.related.agent" }, ], NavalVessel: [ { refProperty: "navalVessel.ordered", backRefProperty: "navalVessel.ordered.navalVessel" }, { refProperty: "navalVessel.constructed", backRefProperty: "navalVessel.constructed.navalVessel" }, { refProperty: "navalVessel.built", backRefProperty: "navalVessel.built.navalVessel" }, { refProperty: "navalVessel.laidDown", backRefProperty: "navalVessel.laidDown.navalVessel" }, { refProperty: "navalVessel.launched", backRefProperty: "navalVessel.launched.navalVessel" }, { refProperty: "navalVessel.completed", backRefProperty: "navalVessel.completed.navalVessel" }, { refProperty: "navalVessel.delivered", backRefProperty: "navalVessel.delivered.navalVessel" }, { refProperty: "navalVessel.rebuilt", backRefProperty: "navalVessel.rebuilt.navalVessel" }, { refProperty: "navalVessel.takenOutOfService", backRefProperty: "navalVessel.takenOutOfService.navalVessel" }, { refProperty: "navalVessel.decommissioned", backRefProperty: "navalVessel.decommissioned.navalVessel" }, { refProperty: "navalVessel.wrecked", backRefProperty: "navalVessel.wrecked.navalVessel" }, { refProperty: "navalVessel.scrapped", backRefProperty: "navalVessel.scrapped.navalVessel" }, { refProperty: "navalVessel.wasPresentAt", backRefProperty: "navalVessel.presence.navalVessel" }, { refProperty: "navalVessel.homePort", backRefProperty: "navalVessel.homePort.navalVessel" }, { refProperty: "agent.ownedBy", backRefProperty: "agent.ownership.owned" } ], NavalVesselDesign: [ { refProperty: "navalVesselDesign.decision", backRefProperty: "navalVesselDesign.decision.navalVesselDesign" }, { refProperty: "navalVessel.ordered", backRefProperty: "navalVessel.ordered.navalVessel" }, { refProperty: "navalVessel.constructed", backRefProperty: "navalVessel.constructed.navalVessel" }, { refProperty: "navalVesselDesign.manufacture", backRefProperty: "navalVesselDesign.manufacture.navalVesselDesign" }, { refProperty: "navalVesselDesign.modification", backRefProperty: "navalVesselDesign.modification.navalVesselDesign" } ], ObjectDesign: [ { refProperty: "objectDesign.design", backRefProperty: "objectDesign.design.objectDesign" }, { refProperty: "objectDesign.production", backRefProperty: "objectDesign.production.objectDesign" } ], Structure: [ { refProperty: "construction.isPartOfAtTime", backRefProperty: "construction.partAtTime.hasPart" } ], Place: [ { refProperty: "place.isPartOfAtTime", backRefProperty: "place.partAtTime.hasPart" } ] } logger.debug("inlineEvent, uuid=" + entity.getUuid().toString()); var schema = Schema.getInstance(); var reflexiveStoreHandler = ServiceUtils.reflexiveStoreHandler(); var storageService = ServiceUtils.storageService() var uuid = entity.getUuid().toString(); var entityTypeConf = conf[entity.getEntityType()]; if (typeof entityTypeConf !== "undefined") { for (var ii = 0; ii < entityTypeConf.length; ii++) { var refProperty = entityTypeConf[ii].refProperty; var backRefProperty = entityTypeConf[ii].backRefProperty logger.debug("inlineEvent, uuid=" + uuid + ", refProperty=" + refProperty); var refPropertyValues = entity.getProperty(refProperty).iterator(); var valuesToProcess = []; while(refPropertyValues.hasNext()) { var refPropertyValue = refPropertyValues.next(); valuesToProcess.push(refPropertyValue); } for (var jj = 0; jj < valuesToProcess.length; jj++) { processEvent(valuesToProcess[jj], backRefProperty); } } if (result) { entity.addProperty(Constants.PROPERTY_ENTITY_STATUS_MESSAGE, new PropertyValue(null, PropertyType.ValueType.STRING, "inlineEvent")); } } function processEvent(refPropValue, backRefProperty) { if (refPropValue !== null && refPropValue.getValueType() == PropertyType.ValueType.ENTITY_REFERENCE) { var refEntity = storageService.get(UUID.fromString(refPropValue.getValue())); if (refEntity !== null) { var backRefUuid = refEntity.getPrimaryPropertyAsString(backRefProperty); if (uuid.equals(backRefUuid)) { // Run updates only if back reference is to the processed entity to handle // dual referenced events like Person.Marriage correctly (ie only for one // of the persons) refPropValue.setValueType(PropertyType.ValueType.ENTITY); var copy = refEntity.copy(); copy.setAcl(null); copy.setCreatedAt(null); copy.setCreatedBy(null); copy.setUpdatedAt(null); copy.setUpdatedBy(null); copy.setInline(true); copy.setCurrentVersion(true); refPropValue.setValue(copy); var backRefPropValue = copy.getPrimaryProperty(backRefProperty); if (backRefPropValue !== null) { backRefPropValue.setStatus(KulturNavPropertyStatus.Obsolete); } refEntity.setAcl(SecurityUtils.ACL_INTERNAL); refEntity.addProperty(Constants.PROPERTY_SUPERCONCEPT_STATUS, new PropertyValue(null, PropertyType.ValueType.ENTITY_REFERENCE, Constants.UUID_STATUS_DELETED)); if (storageService.put(refEntity, null, null, reflexiveStoreHandler, UserEnv.getUser(), schema, false)) { logger.debug("Stored event " + refEntity.getUuid().toString() + " with internal acl and status Deleted") indexService.index(refEntity, IndexService.CommitMode.None); } else { logger.error("Failed to store event " + refEntity.getUuid().toString()); } result = true; } else { // Second occurence for dual referenced events, mark as obsolete refPropValue.setStatus(KulturNavPropertyStatus.Obsolete); result = true; } } } } result;
Uuid
cf641faa-cef5-44e5-9114-8dde39065339
ACL (rettigheter)
SYSTEM
Opprettet av
root
Opprettet
04.06.2018 10:30:24
Sist lagret av
root
Sist lagret
07.06.2018 14:56:29
Tidligere lagret
Erstatt Lagret Lagret av
04.06.2018 10:30:24 04.06.2018 10:30:24 root