Skip to content

Commit

Permalink
[BP] Update XslProcessApi to process the draft copies for the metadat…
Browse files Browse the repository at this point in the history
…a in a workflow (#5811)

* Update XslProcessApi to process the draft copies for the metadata in a workflow

* mend
  • Loading branch information
josegar74 committed Nov 9, 2021
1 parent eef54d4 commit 12460b8
Showing 1 changed file with 26 additions and 12 deletions.
Expand Up @@ -28,6 +28,7 @@

import java.io.StringWriter;
import java.nio.file.Path;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
Expand All @@ -44,6 +45,8 @@
import org.fao.geonet.kernel.DataManager;
import org.fao.geonet.kernel.MetadataIndexerProcessor;
import org.fao.geonet.kernel.SchemaManager;
import org.fao.geonet.kernel.datamanager.IMetadataUtils;
import org.fao.geonet.repository.specification.MetadataSpecs;
import org.fao.geonet.utils.Log;
import org.fao.geonet.utils.Xml;
import org.jdom.Element;
Expand Down Expand Up @@ -364,24 +367,35 @@ public BatchXslMetadataReindexer(ServiceContext context,
@Override
public void process() throws Exception {
DataManager dataMan = context.getBean(DataManager.class);
IMetadataUtils metadataUtils = context.getBean(IMetadataUtils.class);

ApplicationContext appContext = ApplicationContextHolder.get();
for (String uuid : this.records) {
String id = getDataManager().getMetadataId(uuid);
Log.info("org.fao.geonet.services.metadata",
"Processing metadata with id:" + id);
List<Integer> idList = metadataUtils.findAllIdsBy(MetadataSpecs.hasMetadataUuid(uuid));

// Increase the total records counter when processing a metadata with approved and working copies
// as the initial counter doesn't take in account this case
if (idList.size() > 1) {
xslProcessingReport.setTotalRecords(xslProcessingReport.getNumberOfRecords() + 1);
}

for (Integer id : idList) {
Log.info("org.fao.geonet.services.metadata",
"Processing metadata with id:" + id);

Element beforeMetadata = dataMan.getMetadata(context, id, false, false, false);
Element beforeMetadata = dataMan.getMetadata(context, String.valueOf(id), false, false, false);

XslProcessUtils.process(context, id, process,
true, index, updateDateStamp, xslProcessingReport,
siteURL, request.getParameterMap());
XslProcessUtils.process(context, String.valueOf(id), process,
true, index, updateDateStamp, xslProcessingReport,
siteURL, request.getParameterMap());

Element afterMetadata = dataMan.getMetadata(context, id, false, false, false);
Element afterMetadata = dataMan.getMetadata(context, String.valueOf(id), false, false, false);

XMLOutputter outp = new XMLOutputter();
String xmlAfter = outp.outputString(afterMetadata);
String xmlBefore = outp.outputString(beforeMetadata);
new RecordProcessingChangeEvent(Long.parseLong(id), this.userId, xmlBefore, xmlAfter, process).publish(appContext);
XMLOutputter outp = new XMLOutputter();
String xmlAfter = outp.outputString(afterMetadata);
String xmlBefore = outp.outputString(beforeMetadata);
new RecordProcessingChangeEvent(id, this.userId, xmlBefore, xmlAfter, process).publish(appContext);
}
}
}
}
Expand Down

0 comments on commit 12460b8

Please sign in to comment.