Updates to CDA generation
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
index 288d478..bb572f3 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
@@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.mdht.cda.xml.ui.handlers;
+import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -22,6 +23,7 @@
import java.lang.management.MemoryUsage;
import java.lang.reflect.InvocationTargetException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
@@ -888,6 +890,13 @@
}
}
+ public static String formatSize(long v) {
+ if (v < 1024)
+ return v + " B";
+ int z = (63 - Long.numberOfLeadingZeros(v)) / 10;
+ return String.format("%.1f %sB", (double) v / (1L << (z * 10)), " KMGTPE".charAt(z));
+ }
+
void processFolder(IFolder folder, IProgressMonitor monitor, String splitOption, HashSet<EClass> sectionFilter,
HashMap<EClass, HashSet<EClass>> theSectionCache) throws Exception {
@@ -962,6 +971,13 @@
Collections.sort(documents, c);
+ String fileLocation2 = folder.getParent().getLocation().toOSString() + System.getProperty("file.separator") +
+ CDAValueUtil.DATE_FORMAT3.format(new Date()) + "_" + folder.getName().toUpperCase() + "performance.log";
+
+ Path path = Paths.get(fileLocation2);
+
+ BufferedWriter performance = Files.newBufferedWriter(path);
+
int totalFiles = folder.members().length;
for (IFile file : documents) {
stopwatch.reset();
@@ -982,17 +998,20 @@
if (estimatedTimeLeft > 60) {
monitor.setTaskName(
- "Generate Spreadsheet, Estimated Time to finish : " + ((int) estimatedTimeLeft / 60) +
- " Minutes ");
+ "Processing " + file.getName() + ", " + StringUtils.leftPad(String.valueOf(filectr++), 5) +
+ " of " + StringUtils.leftPad(String.valueOf(totalFiles), 5) +
+ ", Estimated Time to finish : " + ((int) estimatedTimeLeft / 60) + " Minutes ");
} else {
monitor.setTaskName(
- "Generate Spreadsheet, Estimated Time to finish : " + ((int) estimatedTimeLeft) + " Seconds ");
+ "Processing " + file.getName() + ", " + StringUtils.leftPad(String.valueOf(filectr++), 5) +
+ " of " + StringUtils.leftPad(String.valueOf(totalFiles), 5) +
+ ", Estimated Time to finish : " + ((int) estimatedTimeLeft) + " Seconds ");
}
- monitor.subTask(
- "Processing File " + StringUtils.leftPad(String.valueOf(filectr++), 5) + " of " +
- StringUtils.leftPad(String.valueOf(totalFiles), 5) + " Average Time per File " +
- (currentProcessingTime / filectr) / 1000.0 + " Seconds ");
+ // monitor.subTask(
+ // "Processing File " + StringUtils.leftPad(String.valueOf(filectr++), 5) + " of " +
+ // StringUtils.leftPad(String.valueOf(totalFiles), 5) + " General Performance" +
+ // fileSize / (currentProcessingTime / 1000.0) + " Bytes per Second ");
try {
console.println(getMemoryUssage());
@@ -1093,6 +1112,17 @@
// }
}
+
+ long t = stopwatch.elapsed(TimeUnit.MILLISECONDS);
+ String s = file.getName() + " : " + formatSize(fileSize) + " took " + t / 1000.0 +
+ " Second(s) at " +
+ String.format("%.2f MB/S", (fileSize / (1024 * 1024)) / (t / 1000.0));
+ monitor.subTask(s);
+
+ performance.write(s);
+ performance.newLine();
+ performance.flush();
+
console.println("End Processing " + stopwatch.elapsed(TimeUnit.MILLISECONDS));
} else {
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/StripCDANarrativeHandler.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/StripCDANarrativeHandler.java
index 65fd36c..0545a5a 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/StripCDANarrativeHandler.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/StripCDANarrativeHandler.java
@@ -39,9 +39,7 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.resource.Resource.IOWrappedException;
-import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -52,6 +50,7 @@
import org.eclipse.mdht.uml.cda.Section;
import org.eclipse.mdht.uml.cda.StrucDocText;
import org.eclipse.mdht.uml.cda.util.CDAUtil;
+import org.eclipse.mdht.uml.cda.util.CDAUtil.ValidationHandler;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.dnd.Clipboard;
@@ -179,17 +178,15 @@
}
- public void stripNarratives(ResourceSet rs, final IFile file) throws Exception {
+ public void stripNarratives(final IFile file) throws Exception {
URI cdaURI = URI.createFileURI(file.getLocation().toOSString());
ClinicalDocument clinicalDocument = null;
try (InputStream is = Files.newInputStream(Paths.get(cdaURI.toFileString()))) {
- //
- ;
- // clinicalDocument = CDAUtil.load(is, ((ValidationHandler) null));
- clinicalDocument = CDAUtil.load(rs, CDAUtil.generateURI(), is, null);
+
+ clinicalDocument = CDAUtil.load(is, ((ValidationHandler) null));
is.close();
} catch (IOWrappedException iowe) {
System.out.println("error processing " + cdaURI.toFileString());
@@ -224,16 +221,14 @@
}
- // clinicalDocument.eResource().unload();
-
- rs.getResources().remove(clinicalDocument.eResource());
+ clinicalDocument.eResource().unload();
}
ArrayList<IFile> documents = new ArrayList<IFile>();
protected static DecimalFormat format2Places = new DecimalFormat(".##");
- protected void processFolder(ResourceSet rs, IFolder folder, IProgressMonitor monitor) throws CoreException {
+ protected void processFolder(IFolder folder, IProgressMonitor monitor) throws CoreException {
int filectr = 1;
long currentProcessingTime = 1;
@@ -251,7 +246,7 @@
}
if (resource instanceof IFolder && !resource.getName().equals("NarrativeRemoved")) {
- processFolder(rs, (IFolder) resource, monitor);
+ processFolder((IFolder) resource, monitor);
}
if (resource instanceof IFile) {
@@ -291,7 +286,6 @@
currentProcessingTime = 0;
long estimatedTimeLeft = 0;
-
for (IFile document : documents) {
monitor.worked(1);
@@ -318,14 +312,11 @@
try {
stopwatch.reset();
stopwatch.start();
- stripNarratives(rs, document);
+ stripNarratives(document);
stopwatch.stop();
currentProcessingTime = stopwatch.elapsed(TimeUnit.MILLISECONDS);
- long denominator = stopwatch.elapsed(TimeUnit.MILLISECONDS);
- long ratePerSecond = fileSize / (denominator > 0
- ? denominator
- : 1);
+ long ratePerSecond = fileSize / stopwatch.elapsed(TimeUnit.MILLISECONDS);
totalBytes -= fileSize;
@@ -352,8 +343,6 @@
try {
- ResourceSet rs = CDAUtil.createResourceSet((EClass) null);
-
ProgressMonitorDialog pd = new ProgressMonitorDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
@@ -376,10 +365,10 @@
if (o instanceof IFolder) {
IFolder folder = (IFolder) o;
monitor.beginTask("DeIdentify CDA Documents", folder.members().length);
- processFolder(rs, folder, monitor);
+ processFolder(folder, monitor);
}
if (o instanceof IFile) {
- stripNarratives(rs, (IFile) o);
+ stripNarratives((IFile) o);
}
}
} catch (PartInitException e) {