Need to clear values from Value[] valArrAME
Dear All,
I am setting some metadata value from Sitecore to AEM using below code.
But here issue is that same assignedEditor Value is setting in the both metadata fields mc:assignedEditor and dcterms:creator , because I am not able to clear the value from Value[] valArrAME
Can anyone please help me here ?
package com.amemayoclinic.migration.scripts.utils
import org.slf4j.LoggerFactory
import org.apache.commons.lang.StringUtils
import javax.jcr.Session
import javax.jcr.Value
import javax.jcr.ValueFactory
import java.text.ParseException
import java.text.SimpleDateFormat
import javax.jcr.PropertyType
import java.util.Calendar
import java.util.TimeZone
class MetadataOperationsUtil {
def LOG = LoggerFactory.getLogger(MetadataOperationsUtil.class)
def globalConfigurations
def globalConstants
def session
def logUtil
Value[] valArrAME
def updateDitaMetaDataForAME(newTopicPath, conceptDetails){
try {
def metadataNode = session.getNode(newTopicPath + "/jcr:content/metadata")
if (metadataNode == null) {
LOG.debug("Metadata node missing for the asset ${newTopicPath}")
return
}
else {
ValueFactory valueFactory = session.getValueFactory()
SimpleDateFormat reviewDateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'")
if (conceptDetails.assignedEditor != null && conceptDetails.assignedEditor != "") {
def sitecoreAssignEditorValue = conceptDetails.assignedEditor
multiStringDataTypeAME(sitecoreAssignEditorValue)
LOG.debug("updateDitaMetaDataForAME sitecoreAssignEditorValue == ${valArrAME}")
if (valArrAME != null){
metadataNode.setProperty("mc:assignedEditor", valArrAME)
}
}
if (conceptDetails.creator != null && conceptDetails.creator != "") {
def sitecoreCreatorValue = conceptDetails.creator
multiStringDataTypeAME(sitecoreCreatorValue)
LOG.debug("updateDitaMetaDataForAME creatorValue == ${valArrAME}")
if (valArrAME != null){
metadataNode.setProperty("dcterms:creator", valArrAME)
}
}
}
session.save()
}
catch (Exception metax) {
LOG.debug("[ERROR]: updateDitaMetaDataForAME Metadata ${metax.getMessage()}")
}
}
def multiStringDataTypeAME(sitecoreproperty) {
ValueFactory valueFactory = session.getValueFactory()
if (sitecoreproperty.contains('|')) {
def multiValueProps = sitecoreproperty.split('\\|')
valArrAME = new Value[multiValueProps.size()]
for (int i = 0; i < multiValueProps.size(); i++) {
valArrAME[i] = valueFactory.createValue(multiValueProps[i])
}
LOG.debug("multiStringDataTypeAME sitecoreproperty IF == ${valArrAME}")
valArrAME.clear()
//valArrAME.removeAll(valArrAME)
//lst.removeAll(lst);
}
else {
if (sitecoreproperty != null && sitecoreproperty != "") {
valArrAME = new Value[1]
valArrAME[0] = valueFactory.createValue(sitecoreproperty)
LOG.debug("multiStringDataTypeAME sitecoreproperty ELSE == ${valArrAME}")
}
}
session.save()
}
MetadataOperationsUtil() {
/*Empty Constructor. */
}
}
