Andre språk: extractDrafts (svensk)
04.06.2018 10:30:24
extractDrafts
extractDrafts
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 Entity = Java.type("se.altrusoft.entitymachine.entity.Entity");
var PropertyValue = Java.type("se.altrusoft.entitymachine.entity.PropertyValue");
var PropertyStatus = Java.type("se.altrusoft.entitymachine.entity.PropertyStatus");
var PrecisionDate = Java.type("se.altrusoft.entitymachine.entity.PrecisionDate");
var KulturNavPropertyStatus = Java.type("models.KulturNavPropertyStatus");
var SecurityUtils = Java.type("security.SecurityUtils")
var User = Java.type("security.User")
var ServiceUtils = Java.type("util.ServiceUtils")
var Constants = Java.type("util.Constants")
var EntityUtils = Java.type("util.EntityUtils")
var ExtDataUtils = Java.type("util.ExtDataUtils")
var UserEnv = Java.type("util.UserEnv")
function findRefProperty(entity, propertyTypeName, refId) {
var propValIter = entity.getProperty(propertyTypeName).iterator();
while (propValIter.hasNext()) {
var propVal = propValIter.next();
var sourceInfo = propVal.getSourceInfo();
if (sourceInfo != null && KulturNavPropertyStatus.HasDraft.equals(propVal.getStatus())
&& refId.equals(sourceInfo.getRefId())) {
return propVal;
}
}
return null;
}
var propEntriesIter = entity.getProperties().entrySet().iterator();
while (propEntriesIter.hasNext()) {
var propEntry = propEntriesIter.next();
var propValIter = propEntry.getValue().iterator();
while (propValIter.hasNext()) {
var propVal = propValIter.next();
var status = propVal.getStatus();
if (status != null) {
switch (status) {
case KulturNavPropertyStatus.Draft:
case KulturNavPropertyStatus.DraftDelete:
case KulturNavPropertyStatus.Approved:
case KulturNavPropertyStatus.DraftRejected:
case KulturNavPropertyStatus.DeleteRejected:
var propertyTypeName = propEntry.getKey();
var sourceInfo = propVal.getSourceInfo();
var source;
var authorId = null;
var author;
var savedAt;
var refId;
if (sourceInfo != null) {
source = sourceInfo.getSource();
authorId = sourceInfo.getAuthor();
savedAt = sourceInfo.getSavedAt();
refId = sourceInfo.getRefId();
}
var userEntity = SecurityUtils.findUser(authorId);
author = (userEntity == null) ? null : User.user(userEntity);
if (author == null) {
author = UserEnv.getUser();
}
logger.info("extractDrafts: " + entity.getUuid() + " " + propertyTypeName + " "
+ status);
var draftEntity = new Entity();
draftEntity.setAcl(entity.getAcl());
draftEntity.setEntityType(Constants.ENTITY_DRAFT);
draftEntity.setSavedSource("Draft migration");
var refProp;
switch (status) {
case KulturNavPropertyStatus.Approved:
refProp = Constants.PROPERTY_DRAFT_APPROVED_FOR;
break;
case KulturNavPropertyStatus.DraftRejected:
case KulturNavPropertyStatus.DeleteRejected:
refProp = Constants.PROPERTY_DRAFT_REJECTED_FOR;
break;
default:
refProp = Constants.PROPERTY_EXTDATA_APPLIES_TO;
break;
}
draftEntity.addProperty(refProp, new PropertyValue(
null, PropertyType.ValueType.ENTITY_REFERENCE, entity.getUuid().toString()));
var draftPropertyValue =
new PropertyValue(null, status, propVal.getValueType(), propVal.getValue());
if (KulturNavPropertyStatus.Draft.equals(status)
|| KulturNavPropertyStatus.DraftDelete.equals(status)) {
var hasDraft = findRefProperty(entity, propertyTypeName, refId);
if (hasDraft != null) {
hasDraft.setUuid(draftProperyValue.getUuid());
}
}
draftEntity.addProperty(propertyTypeName, draftPropertyValue);
propVal.setStatus(PropertyStatus.Remove);
if (savedAt != null) {
draftEntity.addProperty(Constants.PROPERTY_DRAFT_ORIGINAL_TIMESTAMP,
new PropertyValue(null, PropertyType.ValueType.DATE, new PrecisionDate(
savedAt)));
}
if (storageService.put(draftEntity, author)) {
indexService.index(draftEntity, IndexService.CommitMode.Soft);
result = true;
}
break;
case KulturNavPropertyStatus.HasDraft:
propVal.setStatus(null);
result = true;
break;
}
}
}
}
result;
842dc6e4-15c7-4158-b7a6-c409f28336d8
SYSTEM
root
04.06.2018 10:30:24
Erstatt | Lagret | Lagret av |
---|