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