diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index c8b3ad63..00000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/WebContent/about.jsp b/WebContent/about.jsp
index 115fcaec..1be45ec8 100755
--- a/WebContent/about.jsp
+++ b/WebContent/about.jsp
@@ -53,7 +53,7 @@
The ePADD software client is browser-based and compatible with Chrome and Firefox. It is optimized for Windows 10,
- OS X 10.13, and Ubuntu 16.04 machines, using Java 8.
+ OS X 10.13, and Ubuntu 16.04 machines, using Java 12.
<%--[note on link to user manual]--%>
diff --git a/WebContent/collection-detail.jsp b/WebContent/collection-detail.jsp
index bae89477..68ed3509 100755
--- a/WebContent/collection-detail.jsp
+++ b/WebContent/collection-detail.jsp
@@ -112,6 +112,7 @@
if(fetchStats!=null) {
for (FetchStats fs : fetchStats) {
fm = new Archive.FileMetadata();
+ //Only one entry per pst and format = PST
fm.fileID = "Collection/File/" + StringUtils.leftPad(""+count, 4, "0");
fm.fileFormat = "MBOX";
fm.notes="";
diff --git a/pom-common.xml b/pom-common.xml
index c4f769d9..a2659ad8 100755
--- a/pom-common.xml
+++ b/pom-common.xml
@@ -39,10 +39,23 @@
libsvm
3.17
+
+
+
+
+
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ 3.0.0
+
+
+
com.sun.xml.bind
jaxb-impl
- 2.2.5-b10
+ 3.0.0
+ runtime
javax.servlet
@@ -336,11 +349,11 @@
groovy
3.0.8
-
- javax.xml.bind
- jaxb-api
- 2.3.1
-
+
+
+
+
+
junit
junit
diff --git a/pom.xml b/pom.xml
index a7fb6a44..45bc06fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -156,10 +156,15 @@
2.0.0
- com.sun.xml.bind
- jaxb-impl
- 2.2.5-b10
-
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ 3.0.0
+
+
+
+
+
+
org.codehaus.groovy
groovy
diff --git a/src/java/edu/stanford/epadd/Version.java b/src/java/edu/stanford/epadd/Version.java
index be284b14..b362523c 100644
--- a/src/java/edu/stanford/epadd/Version.java
+++ b/src/java/edu/stanford/epadd/Version.java
@@ -1,5 +1,5 @@
package edu.stanford.epadd;
-public class Version { public static final String version = "Release 9.0";
+public class Version { public static final String version = "Release 10-alpha";
//public static final String buildInfo = "Built by tech at Jun 25, 2021 10:28 PM on Mac OS X 10.16 x86_64 ";
public static final String buildInfo = "";
diff --git a/src/java/edu/stanford/epadd/util/EmailConvert.java b/src/java/edu/stanford/epadd/util/EmailConvert.java
index 73272fc0..16de040f 100644
--- a/src/java/edu/stanford/epadd/util/EmailConvert.java
+++ b/src/java/edu/stanford/epadd/util/EmailConvert.java
@@ -95,7 +95,7 @@ public static String getLicenseStatus() {
//
// return "License active";
// }
-
+//return "License active";
if (licenseStatus.endsWith("."))
{
licenseStatus = licenseStatus.substring(0, licenseStatus.length() -1);
@@ -189,7 +189,9 @@ public void onCancel() {
// //operationinfo object
// Consumer setStatusProvider = statusProvider -> this.setStatusProvider(statusProvider);
// cancelSetOwnerAddress(setStatusProvider);
- converter.interrupt();
+ if (converter != null) {
+ converter.interrupt();
+ }
}
};
JSPHelper.setOperationInfo(request.getSession(), opID, opinfo);
diff --git a/src/java/edu/stanford/muse/email/EmailFetcherThread.java b/src/java/edu/stanford/muse/email/EmailFetcherThread.java
index 4eda048b..bcd29c3f 100755
--- a/src/java/edu/stanford/muse/email/EmailFetcherThread.java
+++ b/src/java/edu/stanford/muse/email/EmailFetcherThread.java
@@ -1636,7 +1636,7 @@ public void run() {
fileName = nonMboxFileName;
pathOnDisk = emailStore.displayName;
if (new File(emailStore.displayName).isDirectory()) {
- pathOnDisk = pathOnDisk + fileName;
+ pathOnDisk = pathOnDisk + File.separatorChar + fileName;
}
} else {
eventType = EpaddEvent.EventType.MBOX_INGEST;
diff --git a/src/java/edu/stanford/muse/email/FolderInfo.java b/src/java/edu/stanford/muse/email/FolderInfo.java
index 21d871c7..0a014bac 100755
--- a/src/java/edu/stanford/muse/email/FolderInfo.java
+++ b/src/java/edu/stanford/muse/email/FolderInfo.java
@@ -149,7 +149,11 @@ public static String removeTmpPartOfPath(String pathOfTmpMboxFile) {
return s;
}
- public String toString()
+ public static boolean includesTmpPath(String string) {
+ return string.contains(EmailConvert.getTmpDir());
+ }
+
+ public String toString()
{
return accountKey + ":" + shortName + " messages:" + messageCount; // + " lastUID:" + lastSeenUID;
}
diff --git a/src/java/edu/stanford/muse/epaddpremis/Agent.java b/src/java/edu/stanford/muse/epaddpremis/Agent.java
index 516f922e..e26228af 100644
--- a/src/java/edu/stanford/muse/epaddpremis/Agent.java
+++ b/src/java/edu/stanford/muse/epaddpremis/Agent.java
@@ -1,6 +1,6 @@
package edu.stanford.muse.epaddpremis;
-import javax.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElement;
import java.io.Serializable;
public class Agent implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/EpaddEvent.java b/src/java/edu/stanford/muse/epaddpremis/EpaddEvent.java
index 52e0fa24..c2b068a8 100644
--- a/src/java/edu/stanford/muse/epaddpremis/EpaddEvent.java
+++ b/src/java/edu/stanford/muse/epaddpremis/EpaddEvent.java
@@ -8,9 +8,9 @@
import edu.stanford.epadd.Version;
import org.json.JSONObject;
-import javax.xml.bind.annotation.*;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.*;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
diff --git a/src/java/edu/stanford/muse/epaddpremis/EpaddPremis.java b/src/java/edu/stanford/muse/epaddpremis/EpaddPremis.java
index fde6656b..59ec1dd3 100644
--- a/src/java/edu/stanford/muse/epaddpremis/EpaddPremis.java
+++ b/src/java/edu/stanford/muse/epaddpremis/EpaddPremis.java
@@ -23,32 +23,29 @@
import edu.stanford.muse.util.Util;
import edu.stanford.muse.webapp.ModeConfig;
import gov.loc.repository.bagit.domain.Bag;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.JAXBException;
+import jakarta.xml.bind.Marshaller;
+import jakarta.xml.bind.Unmarshaller;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.json.JSONObject;
-// 2022-10-19
import org.json.JSONException;
+import org.json.JSONObject;
import org.json.XML;
import javax.xml.XMLConstants;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import java.io.*;
-
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
-// 2022-11-03
-import java.time.ZonedDateTime;
@XmlRootElement(name = "premis")
public class EpaddPremis implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/IntellectualEntity.java b/src/java/edu/stanford/muse/epaddpremis/IntellectualEntity.java
index 53136ebe..00a23005 100644
--- a/src/java/edu/stanford/muse/epaddpremis/IntellectualEntity.java
+++ b/src/java/edu/stanford/muse/epaddpremis/IntellectualEntity.java
@@ -3,8 +3,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
import java.io.Serializable;
import java.util.*;
diff --git a/src/java/edu/stanford/muse/epaddpremis/PremisRights.java b/src/java/edu/stanford/muse/epaddpremis/PremisRights.java
index 475c0d03..a281819c 100644
--- a/src/java/edu/stanford/muse/epaddpremis/PremisRights.java
+++ b/src/java/edu/stanford/muse/epaddpremis/PremisRights.java
@@ -1,7 +1,7 @@
package edu.stanford.muse.epaddpremis;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
import java.io.Serializable;
public class PremisRights implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/PreservationLevel.java b/src/java/edu/stanford/muse/epaddpremis/PreservationLevel.java
index e12efe57..7e125417 100644
--- a/src/java/edu/stanford/muse/epaddpremis/PreservationLevel.java
+++ b/src/java/edu/stanford/muse/epaddpremis/PreservationLevel.java
@@ -3,12 +3,12 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlValue;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
diff --git a/src/java/edu/stanford/muse/epaddpremis/Relationship.java b/src/java/edu/stanford/muse/epaddpremis/Relationship.java
index c9f1d1b5..c4b65f86 100644
--- a/src/java/edu/stanford/muse/epaddpremis/Relationship.java
+++ b/src/java/edu/stanford/muse/epaddpremis/Relationship.java
@@ -2,11 +2,11 @@
import edu.stanford.muse.epaddpremis.premisfile.File;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlValue;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
public class Relationship implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/SignificantProperties.java b/src/java/edu/stanford/muse/epaddpremis/SignificantProperties.java
index a1183abf..e7f867e4 100644
--- a/src/java/edu/stanford/muse/epaddpremis/SignificantProperties.java
+++ b/src/java/edu/stanford/muse/epaddpremis/SignificantProperties.java
@@ -3,8 +3,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
diff --git a/src/java/edu/stanford/muse/epaddpremis/package-info.java b/src/java/edu/stanford/muse/epaddpremis/package-info.java
index c501f651..45007d58 100644
--- a/src/java/edu/stanford/muse/epaddpremis/package-info.java
+++ b/src/java/edu/stanford/muse/epaddpremis/package-info.java
@@ -11,6 +11,6 @@
package edu.stanford.muse.epaddpremis;
-import javax.xml.bind.annotation.XmlNs;
-import javax.xml.bind.annotation.XmlNsForm;
-import javax.xml.bind.annotation.XmlSchema;
\ No newline at end of file
+import jakarta.xml.bind.annotation.XmlNs;
+import jakarta.xml.bind.annotation.XmlNsForm;
+import jakarta.xml.bind.annotation.XmlSchema;
\ No newline at end of file
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/File.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/File.java
index b0239652..ef5a8b2c 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/File.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/File.java
@@ -7,10 +7,10 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlValue;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/Fixity.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/Fixity.java
index cb9ac433..96662bda 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/Fixity.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/Fixity.java
@@ -2,9 +2,9 @@
import edu.stanford.epadd.Version;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlValue;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlValue;
import java.io.Serializable;
public class Fixity implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/Format.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/Format.java
index 952c717e..73be9e38 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/Format.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/Format.java
@@ -1,6 +1,6 @@
package edu.stanford.muse.epaddpremis.premisfile;
-import javax.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElement;
import java.io.Serializable;
public class Format implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/ObjectCharacteristics.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/ObjectCharacteristics.java
index f763c474..c35b3845 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/ObjectCharacteristics.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/ObjectCharacteristics.java
@@ -4,10 +4,10 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/RelationshipFile.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/RelationshipFile.java
index 57d941ef..f6dc25d4 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/RelationshipFile.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/RelationshipFile.java
@@ -1,10 +1,10 @@
package edu.stanford.muse.epaddpremis.premisfile;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlAttribute;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlValue;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
public class RelationshipFile implements Serializable {
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/SignificantPropertiesFile.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/SignificantPropertiesFile.java
index 319b16e0..c9772fa2 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/SignificantPropertiesFile.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/SignificantPropertiesFile.java
@@ -3,10 +3,10 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
diff --git a/src/java/edu/stanford/muse/epaddpremis/premisfile/package-info.java b/src/java/edu/stanford/muse/epaddpremis/premisfile/package-info.java
index 8c9e9aa4..fe6d47d2 100644
--- a/src/java/edu/stanford/muse/epaddpremis/premisfile/package-info.java
+++ b/src/java/edu/stanford/muse/epaddpremis/premisfile/package-info.java
@@ -9,6 +9,6 @@
package edu.stanford.muse.epaddpremis.premisfile;
-import javax.xml.bind.annotation.XmlNs;
-import javax.xml.bind.annotation.XmlNsForm;
-import javax.xml.bind.annotation.XmlSchema;
\ No newline at end of file
+import jakarta.xml.bind.annotation.XmlNs;
+import jakarta.xml.bind.annotation.XmlNsForm;
+import jakarta.xml.bind.annotation.XmlSchema;
\ No newline at end of file
diff --git a/src/java/edu/stanford/muse/index/Archive.java b/src/java/edu/stanford/muse/index/Archive.java
index 5c21f9a0..8c357585 100755
--- a/src/java/edu/stanford/muse/index/Archive.java
+++ b/src/java/edu/stanford/muse/index/Archive.java
@@ -77,7 +77,7 @@
import org.json.JSONArray;
import javax.mail.Header;
-import javax.xml.bind.JAXBException;
+import jakarta.xml.bind.JAXBException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -154,10 +154,28 @@ public class Archive implements Serializable, StatusProvider {
static final String ASSETS_APPRAISAL_NORMALIZED_ACQUISITIONED_SUBDIR = "AppraisalNormalizedAcquisitioned";
public transient static ResultCache cacheManager = new ResultCache();//making igeneratedt static so that it becomes visible for all archives.
- // We read and write the serialized Premis object in EpaddPremis.readPremisObject() and
+ private static Set alreadyReadMetadataForNonMboxFiles = new HashSet<>();
+
+ // We read and write the serialized Premis object in EpaddPremis.readPremisObject() and
// EpaddPremis.savePremisObject()
public transient EpaddPremis epaddPremis;
+ public static void clearAlreadyReadMetadataForNonMboxFiles() {
+ alreadyReadMetadataForNonMboxFiles.clear();
+ }
+
+ private static boolean isNonMboxFileAlreadyInFileMetadata(String pathOnDisk) {
+ boolean nonMboxFileAlreadyFileMetadata = false;//There might be a number of folders in a non mbox file. We want to add the event of importing
+ //the non mbox file only once and we also want to add the file only once.
+ for (String nonMboxFileName : alreadyReadMetadataForNonMboxFiles) {
+ if (pathOnDisk.equals(nonMboxFileName)) {
+ nonMboxFileAlreadyFileMetadata = true;
+ break;
+ }
+ }
+ return nonMboxFileAlreadyFileMetadata;
+ }
+
public int getNImageAttachments() {
int nImages = 0;
for (Blob b : blobStore.uniqueBlobs) {
@@ -675,7 +693,7 @@ public void setIngestionLocaleTag(String toLanguageTag) {
}
public void setFileMetadatas(Archive archive, String[] importedFiles) {
-
+ //JFX refactor this method, split into smaller methods
EpaddPremis epaddPremis = archive.getEpaddPremis();
final String STORE_FOLDER_SEPARATOR = "^-^";
@@ -694,7 +712,8 @@ public void setFileMetadatas(Archive archive, String[] importedFiles) {
if (importedFiles != null) {
for (String fs : importedFiles) {
-
+ boolean isNonMboxFile = false;
+ boolean alreadyReadNonMboxFile = false;
int idx = fs.indexOf(STORE_FOLDER_SEPARATOR);
if (idx == -1) {
// Bad folder name received. Content not parsed
@@ -702,16 +721,63 @@ public void setFileMetadatas(Archive archive, String[] importedFiles) {
}
//String accountName = fs.substring (0, idx); // example: GMail
String folderName = fs.substring(idx + STORE_FOLDER_SEPARATOR.length()); // example: MyFolder
- folderName = FolderInfo.removeTmpPartOfPath(folderName);
+ String pathOnDisk;
+ if (fs.indexOf(STORE_FOLDER_SEPARATOR) != 0) {
+ isNonMboxFile = true;
+ //This is a non mbox file. We have folderName which is something like
+ //myemails.pst/private/inbox and path on disc which is something like
+ //D://myPsts/myEMails.pst. One non mbox file can contain several folders
+ //(each converted into one Mbox file internally), so we have one pathOnDisk and
+ //one or more folderNames.
+ pathOnDisk = fs.substring(0, idx);
+ if (new File(pathOnDisk).isDirectory())
+ {
+ //The user pointed to a folder rather than a specific file.
+ //Get the fileName from folderName and add it to pathOnDisk.
+ String fileName = FolderInfo.getNonMboxFileNameFromTmpPath(folderName);
+ pathOnDisk = pathOnDisk + File.separatorChar + fileName;
+ }
+ }
+ else
+ {
+ //This is an Mbox file. There is one folder per Mbox file and folder name and path
+ //on disk are identical.
+ pathOnDisk = folderName;
+ }
+ if (isNonMboxFile) {
+ if (isNonMboxFileAlreadyInFileMetadata(pathOnDisk)) {
+ alreadyReadNonMboxFile = true;
+ } else {
+ alreadyReadMetadataForNonMboxFiles.add(pathOnDisk);
+ }
+ }
+ if (alreadyReadNonMboxFile)
+ {
+ //Only one entry file metadata per non mbox file, not one entry for each Mbox file
+ //generated from the non mbox file.
+ continue;
+ }
+ folderName = FolderInfo.removeTmpPartOfPath(folderName);
fm = new Archive.FileMetadata();
fm.fileID = "Collection/File/" + StringUtils.leftPad("" + count, 4, "0");
- fm.filename = folderName;
+
+ if (isNonMboxFile)
+ {
+ fm.filename = pathOnDisk;
+
+ //JFX include the format for non mbox
+ fm.fileFormat = "MBOX";
+ }
+ else
+ {
+ fm.filename = folderName;
+ fm.fileFormat = "MBOX";
+ }
if (epaddPremis != null)
{
- epaddPremis.setFileID(fm.fileID, folderName);
+ epaddPremis.setFileID(fm.fileID, pathOnDisk);
}
- fm.fileFormat = "MBOX";
fm.notes = "";
count++;
@@ -721,11 +787,12 @@ public void setFileMetadatas(Archive archive, String[] importedFiles) {
cm.fileMetadatas = fms;
archive.collectionMetadata = cm;
+ clearAlreadyReadMetadataForNonMboxFiles();
}
// 2022-09-05 Added for handling IMAP
- // IMAP is currently not supported
+ // IMAP is currently not supported 16/1/2023
public void setFileMetadatasIMAP(Archive archive, String[] importedFiles) {
EpaddPremis epaddPremis = archive.getEpaddPremis();
final String STORE_FOLDER_SEPARATOR = "^-^";
diff --git a/src/java/edu/stanford/muse/webapp/Accounts.java b/src/java/edu/stanford/muse/webapp/Accounts.java
index 9d315a2f..59fb6ea1 100755
--- a/src/java/edu/stanford/muse/webapp/Accounts.java
+++ b/src/java/edu/stanford/muse/webapp/Accounts.java
@@ -18,8 +18,6 @@
import edu.stanford.muse.email.MuseEmailFetcher;
import edu.stanford.muse.util.Util;
-//import org.apache.commons.logging.Log;
-//import org.apache.commons.logging.LogFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONException;
@@ -36,7 +34,6 @@
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.lang.reflect.Field;
import java.net.URL;
import java.net.URLConnection;
import java.util.LinkedHashSet;
diff --git a/src/java/edu/stanford/muse/wpmine/WPReader.java b/src/java/edu/stanford/muse/wpmine/WPReader.java
index 536a00dd..e81eead7 100755
--- a/src/java/edu/stanford/muse/wpmine/WPReader.java
+++ b/src/java/edu/stanford/muse/wpmine/WPReader.java
@@ -1,7 +1,6 @@
package edu.stanford.muse.wpmine;
import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
diff --git a/version b/version
index 83ba41dc..e833ad1a 100755
--- a/version
+++ b/version
@@ -1 +1 @@
-Release 9.0
+Release 10-alpha