diff --git a/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java index 7d5e63c127..59ee6d8ba5 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/itemexport/ItemExportServiceImpl.java @@ -16,6 +16,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -129,7 +130,7 @@ public class ItemExportServiceImpl implements ItemExportService { while (i.hasNext()) { if (SUBDIR_LIMIT > 0 && ++counter == SUBDIR_LIMIT) { - subdir = Integer.valueOf(subDirSuffix++).toString(); + subdir = Integer.toString(subDirSuffix++); fullPath = destDirName + File.separatorChar + subdir; counter = 0; @@ -191,7 +192,7 @@ public class ItemExportServiceImpl implements ItemExportService { */ protected void writeMetadata(Context c, Item i, File destDir, boolean migrate) throws Exception { - Set schemas = new HashSet(); + Set schemas = new HashSet<>(); List dcValues = itemService.getMetadata(i, Item.ANY, Item.ANY, Item.ANY, Item.ANY); for (MetadataValue metadataValue : dcValues) { schemas.add(metadataValue.getMetadataField().getMetadataSchema().getName()); @@ -267,7 +268,7 @@ public class ItemExportServiceImpl implements ItemExportService { + Utils.addEntities(dcv.getValue()) + "\n") .getBytes("UTF-8"); - if ((!migrate) || + if (!migrate || (migrate && !( ("date".equals(metadataField.getElement()) && "issued".equals(qualifier)) || ("date".equals(metadataField.getElement()) && "accessioned".equals(qualifier)) || @@ -292,10 +293,10 @@ public class ItemExportServiceImpl implements ItemExportService { } // When migrating, only keep date.issued if it is different to date.accessioned - if ((migrate) && + if (migrate && (dateIssued != null) && (dateAccessioned != null) && - (!dateIssued.equals(dateAccessioned))) { + !dateIssued.equals(dateAccessioned)) { utf8 = (" " + Utils.addEntities(dateIssued) + "\n") @@ -330,7 +331,7 @@ public class ItemExportServiceImpl implements ItemExportService { File outFile = new File(destDir, filename); if (outFile.createNewFile()) { - PrintWriter out = new PrintWriter(new FileWriter(outFile)); + PrintWriter out = new PrintWriter(new FileWriter(outFile, StandardCharsets.UTF_8)); out.println(i.getHandle()); @@ -360,7 +361,7 @@ public class ItemExportServiceImpl implements ItemExportService { File outFile = new File(destDir, "contents"); if (outFile.createNewFile()) { - PrintWriter out = new PrintWriter(new FileWriter(outFile)); + PrintWriter out = new PrintWriter(new FileWriter(outFile, StandardCharsets.UTF_8)); List bundles = i.getBundles(); @@ -474,7 +475,7 @@ public class ItemExportServiceImpl implements ItemExportService { public void createDownloadableExport(DSpaceObject dso, Context context, boolean migrate) throws Exception { EPerson eperson = context.getCurrentUser(); - ArrayList list = new ArrayList(1); + ArrayList list = new ArrayList<>(1); list.add(dso); processDownloadableExport(list, context, eperson == null ? null : eperson.getEmail(), migrate); @@ -491,7 +492,7 @@ public class ItemExportServiceImpl implements ItemExportService { @Override public void createDownloadableExport(DSpaceObject dso, Context context, String additionalEmail, boolean migrate) throws Exception { - ArrayList list = new ArrayList(1); + ArrayList list = new ArrayList<>(1); list.add(dso); processDownloadableExport(list, context, additionalEmail, migrate); } @@ -652,7 +653,7 @@ public class ItemExportServiceImpl implements ItemExportService { while (iter.hasNext()) { String keyName = iter.next(); List uuids = itemsMap.get(keyName); - List items = new ArrayList(); + List items = new ArrayList<>(); for (UUID uuid : uuids) { items.add(itemService.find(context, uuid)); } @@ -876,7 +877,7 @@ public class ItemExportServiceImpl implements ItemExportService { .getIntProperty("org.dspace.app.itemexport.life.span.hours"); Calendar now = Calendar.getInstance(); now.setTime(new Date()); - now.add(Calendar.HOUR, (-hours)); + now.add(Calendar.HOUR, -hours); File downloadDir = new File(getExportDownloadDirectory(eperson)); if (downloadDir.exists()) { File[] files = downloadDir.listFiles(); @@ -896,7 +897,7 @@ public class ItemExportServiceImpl implements ItemExportService { int hours = configurationService.getIntProperty("org.dspace.app.itemexport.life.span.hours"); Calendar now = Calendar.getInstance(); now.setTime(new Date()); - now.add(Calendar.HOUR, (-hours)); + now.add(Calendar.HOUR, -hours); File downloadDir = new File(configurationService.getProperty("org.dspace.app.itemexport.download.dir")); if (downloadDir.exists()) { // Get a list of all the sub-directories, potentially one for each ePerson. diff --git a/dspace-api/src/main/java/org/dspace/app/itemmarking/ItemMarkingAvailabilityBitstreamStrategy.java b/dspace-api/src/main/java/org/dspace/app/itemmarking/ItemMarkingAvailabilityBitstreamStrategy.java index cd08ad032c..31166add72 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemmarking/ItemMarkingAvailabilityBitstreamStrategy.java +++ b/dspace-api/src/main/java/org/dspace/app/itemmarking/ItemMarkingAvailabilityBitstreamStrategy.java @@ -11,6 +11,8 @@ import java.io.UnsupportedEncodingException; import java.sql.SQLException; import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.dspace.app.util.Util; import org.dspace.content.Bitstream; import org.dspace.content.Bundle; @@ -34,8 +36,9 @@ public class ItemMarkingAvailabilityBitstreamStrategy implements ItemMarkingExtr @Autowired(required = true) protected ItemService itemService; - public ItemMarkingAvailabilityBitstreamStrategy() { + private static final Logger LOG = LogManager.getLogger(); + public ItemMarkingAvailabilityBitstreamStrategy() { } @Override @@ -43,14 +46,14 @@ public class ItemMarkingAvailabilityBitstreamStrategy implements ItemMarkingExtr throws SQLException { List bundles = itemService.getBundles(item, "ORIGINAL"); - if (bundles.size() == 0) { + if (bundles.isEmpty()) { ItemMarkingInfo markInfo = new ItemMarkingInfo(); markInfo.setImageName(nonAvailableImageName); return markInfo; } else { Bundle originalBundle = bundles.iterator().next(); - if (originalBundle.getBitstreams().size() == 0) { + if (originalBundle.getBitstreams().isEmpty()) { ItemMarkingInfo markInfo = new ItemMarkingInfo(); markInfo.setImageName(nonAvailableImageName); @@ -72,8 +75,7 @@ public class ItemMarkingAvailabilityBitstreamStrategy implements ItemMarkingExtr try { bsLink = bsLink + Util.encodeBitstreamName(bitstream.getName(), Constants.DEFAULT_ENCODING); } catch (UnsupportedEncodingException e) { - - e.printStackTrace(); + LOG.warn("DSpace uses an unsupported encoding", e); } signInfo.setLink(bsLink); diff --git a/dspace-api/src/main/java/org/dspace/app/itemupdate/ContentsEntry.java b/dspace-api/src/main/java/org/dspace/app/itemupdate/ContentsEntry.java index e192b92b89..7bbe4a19e9 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemupdate/ContentsEntry.java +++ b/dspace-api/src/main/java/org/dspace/app/itemupdate/ContentsEntry.java @@ -105,6 +105,7 @@ public class ContentsEntry { return new ContentsEntry(arp[0], arp[1], actionId, groupName, arp[3]); } + @Override public String toString() { StringBuilder sb = new StringBuilder(filename); if (bundlename != null) { diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/HTMLFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/HTMLFilter.java index 1b982cb277..5e10f2841d 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/HTMLFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/HTMLFilter.java @@ -9,6 +9,7 @@ package org.dspace.app.mediafilter; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import javax.swing.text.Document; import javax.swing.text.html.HTMLEditorKit; @@ -36,7 +37,7 @@ public class HTMLFilter extends MediaFilter { } /** - * @return String bitstreamformat + * @return String bitstream format */ @Override public String getFormatString() { @@ -73,9 +74,9 @@ public class HTMLFilter extends MediaFilter { String extractedText = doc.getText(0, doc.getLength()); // generate an input stream with the extracted text - byte[] textBytes = extractedText.getBytes(); + byte[] textBytes = extractedText.getBytes(StandardCharsets.UTF_8); ByteArrayInputStream bais = new ByteArrayInputStream(textBytes); - return bais; // will this work? or will the byte array be out of scope? + return bais; } } diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/PoiWordFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/PoiWordFilter.java index 158f52f1f9..8c198c4477 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/PoiWordFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/PoiWordFilter.java @@ -10,6 +10,7 @@ package org.dspace.app.mediafilter; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; @@ -66,6 +67,6 @@ public class PoiWordFilter } // return the extracted text as a stream. - return new ByteArrayInputStream(text.getBytes()); + return new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)); } } diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java index 596bd63643..87198fe172 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/SHERPAService.java @@ -73,6 +73,7 @@ public class SHERPAService { /** * Complete initialization of the Bean. */ + @SuppressWarnings("unused") @PostConstruct private void init() { // Get endoint and API key from configuration diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPermittedVersion.java b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPermittedVersion.java index ec45a29ce7..3a810c8e9e 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPermittedVersion.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPermittedVersion.java @@ -13,15 +13,18 @@ import java.util.List; * Plain java representation of a SHERPA Permitted Version object, based on SHERPA API v2 responses. * * In a SHERPA search for journal deposit policies, this data is contained within a publisher policy. - * Each permitted version is for a particular article version (eg. submitted, accepted, published) and contains + * Each permitted version is for a particular article version (e.g. submitted, accepted, published) and contains: * - * A list of general conditions / terms for deposit of this version of work - * A list of allowed locations (eg. institutional repository, personal homepage, non-commercial repository) - * A list of prerequisite conditions for deposit (eg. attribution, linking to published version) - * A list of required licences for the deposited work (eg. CC-BY-NC) - * Embargo requirements, if any + *
    + *
  • A list of general conditions / terms for deposit of this version of work
  • + *
  • A list of allowed locations (e.g. institutional repository, personal homepage, non-commercial repository)
  • + *
  • A list of prerequisite conditions for deposit (e.g. attribution, linking to published version)
  • + *
  • A list of required licenses for the deposited work (e.g. CC-BY-NC)
  • + *
  • Embargo requirements, if any
  • + *
* - * This class also has some helper data for labels, which can be used with i18n when displaying policy information + * This class also has some helper data for labels, which can be used with i18n + * when displaying policy information. * * @see SHERPAPublisherPolicy */ @@ -44,7 +47,7 @@ public class SHERPAPermittedVersion { // Embargo private SHERPAEmbargo embargo; - protected class SHERPAEmbargo { + protected static class SHERPAEmbargo { String units; int amount; } diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPublisherResponse.java b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPublisherResponse.java index f109b2e677..ac71c6e844 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPublisherResponse.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAPublisherResponse.java @@ -10,7 +10,8 @@ package org.dspace.app.sherpa.v2; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.LinkedList; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import org.apache.logging.log4j.LogManager; @@ -74,7 +75,7 @@ public class SHERPAPublisherResponse { * @param jsonData - the JSON input stream from the API result response body */ private void parseJSON(InputStream jsonData) throws IOException { - InputStreamReader streamReader = new InputStreamReader(jsonData); + InputStreamReader streamReader = new InputStreamReader(jsonData, StandardCharsets.UTF_8); JSONTokener jsonTokener = new JSONTokener(streamReader); JSONObject httpResponse; try { @@ -86,7 +87,7 @@ public class SHERPAPublisherResponse { // parsing the full journal / policy responses if (items.length() > 0) { metadata = new SHERPASystemMetadata(); - this.publishers = new LinkedList<>(); + this.publishers = new ArrayList<>(); // Iterate search result items for (int itemIndex = 0; itemIndex < items.length(); itemIndex++) { SHERPAPublisher sherpaPublisher = new SHERPAPublisher(); diff --git a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAResponse.java b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAResponse.java index 3134ad013c..a40814bafe 100644 --- a/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAResponse.java +++ b/dspace-api/src/main/java/org/dspace/app/sherpa/v2/SHERPAResponse.java @@ -10,8 +10,8 @@ package org.dspace.app.sherpa.v2; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -78,7 +78,7 @@ public class SHERPAResponse { * @param jsonData - the JSON input stream from the API result response body */ private void parseJSON(InputStream jsonData) throws IOException { - InputStreamReader streamReader = new InputStreamReader(jsonData); + InputStreamReader streamReader = new InputStreamReader(jsonData, StandardCharsets.UTF_8); JSONTokener jsonTokener = new JSONTokener(streamReader); JSONObject httpResponse; try { @@ -90,10 +90,10 @@ public class SHERPAResponse { // - however, we only ever want one result since we're passing an "equals ISSN" query if (items.length() > 0) { metadata = new SHERPASystemMetadata(); - this.journals = new LinkedList<>(); + this.journals = new ArrayList<>(); // Iterate search result items for (int itemIndex = 0; itemIndex < items.length(); itemIndex++) { - List sherpaPublishers = new LinkedList<>(); + List sherpaPublishers = new ArrayList<>(); List policies = new ArrayList<>(); SHERPAPublisher sherpaPublisher = new SHERPAPublisher(); SHERPAJournal sherpaJournal = new SHERPAJournal(); @@ -289,7 +289,7 @@ public class SHERPAResponse { // Is the item in DOAJ? if (item.has("listed_in_doaj")) { - sherpaJournal.setInDOAJ(("yes".equals(item.getString("listed_in_doaj")))); + sherpaJournal.setInDOAJ("yes".equals(item.getString("listed_in_doaj"))); } return sherpaJournal; @@ -403,7 +403,6 @@ public class SHERPAResponse { // published = pdfversion // These strings can be used to construct i18n messages. String articleVersion = "unknown"; - String versionLabel = "Unknown"; // Each 'permitted OA' can actually refer to multiple versions if (permitted.has("article_version")) { diff --git a/dspace-api/src/main/java/org/dspace/app/sitemap/SitemapsOrgGenerator.java b/dspace-api/src/main/java/org/dspace/app/sitemap/SitemapsOrgGenerator.java index 3ec4ca8239..53f402d331 100644 --- a/dspace-api/src/main/java/org/dspace/app/sitemap/SitemapsOrgGenerator.java +++ b/dspace-api/src/main/java/org/dspace/app/sitemap/SitemapsOrgGenerator.java @@ -86,7 +86,7 @@ public class SitemapsOrgGenerator extends AbstractGenerator { @Override public String getURLText(String url, Date lastMod) { - StringBuffer urlText = new StringBuffer(); + StringBuilder urlText = new StringBuilder(); urlText.append("").append(url).append(""); if (lastMod != null) { diff --git a/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java b/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java index 5b2413642c..0a072a9819 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java +++ b/dspace-api/src/main/java/org/dspace/app/util/InitializeEntities.java @@ -10,8 +10,6 @@ package org.dspace.app.util; import java.io.File; import java.io.IOException; import java.sql.SQLException; -import java.util.LinkedList; -import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -30,7 +28,6 @@ import org.dspace.content.EntityType; import org.dspace.content.RelationshipType; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.EntityTypeService; -import org.dspace.content.service.RelationshipService; import org.dspace.content.service.RelationshipTypeService; import org.dspace.core.Context; import org.w3c.dom.Document; @@ -40,22 +37,20 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** - * This script is used to initialize the database with a set of relationshiptypes that are written + * This script is used to initialize the database with a set of relationship types that are written * in an xml file that is given to this script. - * This XML file needs to have a proper XML structure and needs to define the variables of the RelationshipType object + * This XML file needs to have a proper XML structure and needs to define the variables of the RelationshipType object. */ public class InitializeEntities { private final static Logger log = LogManager.getLogger(); private final RelationshipTypeService relationshipTypeService; - private final RelationshipService relationshipService; private final EntityTypeService entityTypeService; private InitializeEntities() { relationshipTypeService = ContentServiceFactory.getInstance().getRelationshipTypeService(); - relationshipService = ContentServiceFactory.getInstance().getRelationshipService(); entityTypeService = ContentServiceFactory.getInstance().getEntityTypeService(); } @@ -111,14 +106,12 @@ public class InitializeEntities { try { File fXmlFile = new File(fileLocation); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = null; - dBuilder = dbFactory.newDocumentBuilder(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); NodeList nList = doc.getElementsByTagName("type"); - List relationshipTypes = new LinkedList<>(); for (int i = 0; i < nList.getLength(); i++) { Node nNode = nList.item(i); diff --git a/dspace-api/src/main/java/org/dspace/app/util/Util.java b/dspace-api/src/main/java/org/dspace/app/util/Util.java index aa04c13be7..f8ef3b1731 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/Util.java +++ b/dspace-api/src/main/java/org/dspace/app/util/Util.java @@ -38,13 +38,12 @@ import org.dspace.core.Utils; * * @author Robert Tansley * @author Mark Diggory - * @version $Revision$ */ public class Util { // cache for source version result private static String sourceVersion = null; - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Util.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(); /** * Default constructor. Must be protected as org.dspace.xmlworkflow.WorkflowUtils extends it @@ -60,7 +59,7 @@ public class Util { * spaces */ public static String nonBreakSpace(String s) { - StringBuffer newString = new StringBuffer(); + StringBuilder newString = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); @@ -99,7 +98,7 @@ public class Util { return ""; } - StringBuffer out = new StringBuffer(); + StringBuilder out = new StringBuilder(); final String[] pctEncoding = {"%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", "%0a", "%0b", "%0c", "%0d", @@ -263,7 +262,7 @@ public class Util { return null; } - List return_values = new ArrayList(request_values.length); + List return_values = new ArrayList<>(request_values.length); for (String s : request_values) { try { @@ -402,7 +401,7 @@ public class Util { Item item, List values, String schema, String element, String qualifier, Locale locale) throws SQLException, DCInputsReaderException { - List toReturn = new ArrayList(); + List toReturn = new ArrayList<>(); DCInput myInputs = null; boolean myInputsFound = false; String formFileName = I18nUtil.getInputFormsFileName(locale); @@ -478,8 +477,9 @@ public class Util { } /** - * Split a list in an array of i sub-lists uniformly sized + * Split a list in an array of i sub-lists uniformly sized. * + * @param type of objects in the list. * @param idsList the list to split * @param i the number of sublists to return * diff --git a/dspace-api/src/main/java/org/dspace/checker/SimpleReporterServiceImpl.java b/dspace-api/src/main/java/org/dspace/checker/SimpleReporterServiceImpl.java index 849cddfb61..26c102e1e7 100644 --- a/dspace-api/src/main/java/org/dspace/checker/SimpleReporterServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/checker/SimpleReporterServiceImpl.java @@ -77,7 +77,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { osw.write(applyDateFormatShort(endDate)); osw.write("\n\n\n"); - if (recentChecksums.size() == 0) { + if (recentChecksums.isEmpty()) { osw.write("\n\n"); osw.write(msg("no-bitstreams-to-delete")); osw.write("\n"); @@ -119,7 +119,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { osw.write(applyDateFormatShort(endDate)); osw.write("\n\n\n"); - if (history.size() == 0) { + if (history.isEmpty()) { osw.write("\n\n"); osw.write(msg("no-changed-bitstreams")); osw.write("\n"); @@ -159,7 +159,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { osw.write(applyDateFormatShort(endDate)); osw.write("\n\n\n"); - if (history.size() == 0) { + if (history.isEmpty()) { osw.write("\n\n"); osw.write(msg("no-bitstreams-changed")); osw.write("\n"); @@ -201,7 +201,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { osw.write(applyDateFormatShort(endDate)); osw.write("\n\n\n"); - if (mostRecentChecksums.size() == 0) { + if (mostRecentChecksums.isEmpty()) { osw.write("\n\n"); osw.write(msg("no-bitstreams-to-no-longer-be-processed")); osw.write("\n"); @@ -233,7 +233,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { osw.write(applyDateFormatShort(new Date())); osw.write("\n\n\n"); - if (bitstreams.size() == 0) { + if (bitstreams.isEmpty()) { osw.write("\n\n"); osw.write(msg("no-unchecked-bitstreams")); osw.write("\n"); @@ -257,7 +257,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { protected void printHistoryRecords(List mostRecentChecksums, OutputStreamWriter osw) throws IOException { for (MostRecentChecksum mostRecentChecksum : mostRecentChecksums) { - StringBuffer buf = new StringBuffer(1000); + StringBuilder buf = new StringBuilder(1000); buf.append("------------------------------------------------ \n"); buf.append(msg("bitstream-id")).append(" = ").append( mostRecentChecksum.getBitstream().getID()).append("\n"); @@ -292,7 +292,7 @@ public class SimpleReporterServiceImpl implements SimpleReporterService { throws IOException, SQLException { for (Bitstream info : bitstreams) { - StringBuffer buf = new StringBuffer(1000); + StringBuilder buf = new StringBuilder(1000); buf.append("------------------------------------------------ \n"); buf.append(msg("format-id")).append(" = ").append( info.getFormat(context).getID()).append("\n"); diff --git a/dspace-api/src/main/java/org/dspace/content/DCPersonName.java b/dspace-api/src/main/java/org/dspace/content/DCPersonName.java index cdcff55c37..cb9b5346ff 100644 --- a/dspace-api/src/main/java/org/dspace/content/DCPersonName.java +++ b/dspace-api/src/main/java/org/dspace/content/DCPersonName.java @@ -18,7 +18,6 @@ package org.dspace.content; * FIXME: No policy for dealing with "van"/"van der" and "Jr." * * @author Robert Tansley - * @version $Revision$ */ public class DCPersonName { /** @@ -89,8 +88,9 @@ public class DCPersonName { * * @return the name, suitable for putting in the database */ + @Override public String toString() { - StringBuffer out = new StringBuffer(); + StringBuilder out = new StringBuilder(); if (lastName != null) { out.append(lastName); diff --git a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java index 1b419da816..958b51ff7e 100644 --- a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java @@ -8,9 +8,9 @@ package org.dspace.content; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.LinkedList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; @@ -250,7 +250,7 @@ public class RelationshipServiceImpl implements RelationshipService { } List rightRelationships = findByItemAndRelationshipType(context, itemToProcess, relationshipType, isLeft); - if (maxCardinality != null && rightRelationships.size() >= maxCardinality) { + if (rightRelationships.size() >= maxCardinality) { return false; } return true; @@ -266,6 +266,7 @@ public class RelationshipServiceImpl implements RelationshipService { return StringUtils.equals(leftEntityType, entityTypeToProcess.getLabel()); } + @Override public Relationship find(Context context, int id) throws SQLException { Relationship relationship = relationshipDAO.findByID(context, Relationship.class, id); return relationship; @@ -407,7 +408,7 @@ public class RelationshipServiceImpl implements RelationshipService { // Set a limit on the total depth of relationships to traverse during a relationship change int maxDepth = configurationService.getIntProperty("relationship.update.relateditems.maxdepth", 5); // This is the list containing all items which will have changes to their virtual metadata - List itemsToUpdate = new LinkedList<>(); + List itemsToUpdate = new ArrayList<>(); itemsToUpdate.add(relationship.getLeftItem()); itemsToUpdate.add(relationship.getRightItem()); diff --git a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java index 6d7c716189..80c424e782 100644 --- a/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java +++ b/dspace-api/src/main/java/org/dspace/content/crosswalk/OREIngestionCrosswalk.java @@ -44,17 +44,16 @@ import org.jdom.xpath.XPath; /** * ORE ingestion crosswalk *

- * Processes an Atom-encoded ORE resource map and attemps to interpret it as a DSpace item + * Processes an Atom-encoded ORE resource map and attempts to interpret it as a DSpace item. * * @author Alexey Maslov - * @version $Revision: 1 $ */ public class OREIngestionCrosswalk implements IngestionCrosswalk { /** * log4j category */ - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(OREDisseminationCrosswalk.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(); /* Namespaces */ public static final Namespace ATOM_NS = @@ -149,7 +148,7 @@ public class OREIngestionCrosswalk xpathDesc.addNamespace(RDF_NS); desc = (Element) xpathDesc.selectSingleNode(doc); } catch (JDOMException e) { - e.printStackTrace(); + log.warn("Could not find description for {}", href, e); } if (desc != null && desc.getChild("type", RDF_NS).getAttributeValue("resource", RDF_NS) diff --git a/dspace-api/src/main/java/org/dspace/content/dao/impl/CollectionDAOImpl.java b/dspace-api/src/main/java/org/dspace/content/dao/impl/CollectionDAOImpl.java index 87c7c3155d..c0ef6ea42f 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/impl/CollectionDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/impl/CollectionDAOImpl.java @@ -9,7 +9,7 @@ package org.dspace.content.dao.impl; import java.sql.SQLException; import java.util.AbstractMap; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.persistence.Query; @@ -119,7 +119,7 @@ public class CollectionDAOImpl extends AbstractHibernateDSODAO imple CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, Collection.class); Root collectionRoot = criteriaQuery.from(Collection.class); Join join = collectionRoot.join("resourcePolicies"); - List orPredicates = new LinkedList<>(); + List orPredicates = new ArrayList<>(actions.size()); for (Integer action : actions) { orPredicates.add(criteriaBuilder.equal(join.get(ResourcePolicy_.actionId), action)); } @@ -176,7 +176,7 @@ public class CollectionDAOImpl extends AbstractHibernateDSODAO imple Query query = createQuery(context, q); List list = query.getResultList(); - List> returnList = new LinkedList<>(); + List> returnList = new ArrayList<>(list.size()); for (Object[] o : list) { returnList.add(new AbstractMap.SimpleEntry<>((Collection) o[0], (Long) o[1])); } diff --git a/dspace-api/src/main/java/org/dspace/content/logic/Filter.java b/dspace-api/src/main/java/org/dspace/content/logic/Filter.java index bfacca837b..84e9d6bc08 100644 --- a/dspace-api/src/main/java/org/dspace/content/logic/Filter.java +++ b/dspace-api/src/main/java/org/dspace/content/logic/Filter.java @@ -20,7 +20,6 @@ import org.dspace.core.Context; * logical statement that shouldn't be use as root element. A filter may contain only one substatement. * * @author Kim Shepherd - * @version $Revision$ * @see org.dspace.content.logic.DefaultFilter */ public interface Filter extends LogicalStatement { @@ -31,5 +30,6 @@ public interface Filter extends LogicalStatement { * @return boolean * @throws LogicalStatementException */ + @Override boolean getResult(Context context, Item item) throws LogicalStatementException; } diff --git a/dspace-api/src/main/java/org/dspace/content/logic/condition/Condition.java b/dspace-api/src/main/java/org/dspace/content/logic/condition/Condition.java index 325964efdb..c86509899f 100644 --- a/dspace-api/src/main/java/org/dspace/content/logic/condition/Condition.java +++ b/dspace-api/src/main/java/org/dspace/content/logic/condition/Condition.java @@ -45,9 +45,10 @@ public interface Condition extends LogicalStatement { * Get the result of logical evaluation for an item * @param context DSpace context * @param item Item to evaluate - * @return boolean + * @return result * @throws LogicalStatementException */ + @Override boolean getResult(Context context, Item item) throws LogicalStatementException; public void setItemService(ItemService itemService); diff --git a/dspace-api/src/main/java/org/dspace/content/logic/operator/Nor.java b/dspace-api/src/main/java/org/dspace/content/logic/operator/Nor.java index d28ac7578d..d312734fbf 100644 --- a/dspace-api/src/main/java/org/dspace/content/logic/operator/Nor.java +++ b/dspace-api/src/main/java/org/dspace/content/logic/operator/Nor.java @@ -15,10 +15,9 @@ import org.dspace.content.logic.LogicalStatementException; import org.dspace.core.Context; /** - * An operator that implements NIR by negating an OR operation + * An operator that implements NOR by negating an OR operation. * * @author Kim Shepherd - * @version $Revision$ */ public class Nor extends AbstractOperator { diff --git a/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java b/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java index ffdb304802..8fb8172aeb 100644 --- a/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java +++ b/dspace-api/src/main/java/org/dspace/content/packager/METSManifest.java @@ -11,6 +11,7 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; @@ -656,7 +657,7 @@ public class METSManifest { String mimeType = mdWrap.getAttributeValue("MIMETYPE"); if (mimeType != null && mimeType.equalsIgnoreCase("text/xml")) { - byte value[] = Base64.decodeBase64(bin.getText().getBytes()); + byte value[] = Base64.decodeBase64(bin.getText().getBytes(StandardCharsets.UTF_8)); Document mdd = parser.build(new ByteArrayInputStream(value)); List result = new ArrayList<>(1); result.add(mdd.getRootElement()); @@ -724,13 +725,13 @@ public class METSManifest { throw new MetadataValidationException( "Invalid METS Manifest: mdWrap element with neither xmlData nor binData child."); } else { - byte value[] = Base64.decodeBase64(bin.getText().getBytes()); + byte value[] = Base64.decodeBase64(bin.getText().getBytes(StandardCharsets.UTF_8)); return new ByteArrayInputStream(value); } } else { XMLOutputter outputPretty = new XMLOutputter(Format.getPrettyFormat()); return new ByteArrayInputStream( - outputPretty.outputString(xmlData.getChildren()).getBytes()); + outputPretty.outputString(xmlData.getChildren()).getBytes(StandardCharsets.UTF_8)); } } else { mdRef = mdSec.getChild("mdRef", metsNS); @@ -1176,7 +1177,7 @@ public class METSManifest { "Invalid METS Manifest: mdWrap element for streaming crosswalk without binData " + "child."); } else { - byte value[] = Base64.decodeBase64(bin.getText().getBytes()); + byte value[] = Base64.decodeBase64(bin.getText().getBytes(StandardCharsets.UTF_8)); sxwalk.ingest(context, dso, new ByteArrayInputStream(value), mdWrap.getAttributeValue("MIMETYPE")); @@ -1302,6 +1303,6 @@ public class METSManifest { XMLOutputter outputPretty = new XMLOutputter(Format.getPrettyFormat()); return new ByteArrayInputStream( - outputPretty.outputString(mets).getBytes()); + outputPretty.outputString(mets).getBytes(StandardCharsets.UTF_8)); } } diff --git a/dspace-api/src/main/java/org/dspace/core/Email.java b/dspace-api/src/main/java/org/dspace/core/Email.java index 803497b650..2e9b058c06 100644 --- a/dspace-api/src/main/java/org/dspace/core/Email.java +++ b/dspace-api/src/main/java/org/dspace/core/Email.java @@ -571,7 +571,7 @@ public class Email { /** * @author arnaldo */ - public class InputStreamDataSource implements DataSource { + public static class InputStreamDataSource implements DataSource { private final String name; private final String contentType; private final ByteArrayOutputStream baos; @@ -612,7 +612,7 @@ public class Email { * Wrap ConfigurationService to prevent templates from modifying * the configuration. */ - public class UnmodifiableConfigurationService { + public static class UnmodifiableConfigurationService { private final ConfigurationService configurationService; /** diff --git a/dspace-api/src/main/java/org/dspace/discovery/indexobject/AbstractIndexableObject.java b/dspace-api/src/main/java/org/dspace/discovery/indexobject/AbstractIndexableObject.java index cf3f22ccdf..0fb01f2e5b 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/indexobject/AbstractIndexableObject.java +++ b/dspace-api/src/main/java/org/dspace/discovery/indexobject/AbstractIndexableObject.java @@ -33,7 +33,7 @@ public abstract class AbstractIndexableObject, PK if (!(obj instanceof IndexableObject)) { return false; } - AbstractIndexableObject other = (AbstractIndexableObject) obj; + IndexableObject other = (IndexableObject) obj; return other.getIndexedObject().equals(getIndexedObject()); } diff --git a/dspace-api/src/main/java/org/dspace/eperson/LoadLastLogin.java b/dspace-api/src/main/java/org/dspace/eperson/LoadLastLogin.java index b6bb99c442..390340affd 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/LoadLastLogin.java +++ b/dspace-api/src/main/java/org/dspace/eperson/LoadLastLogin.java @@ -11,6 +11,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -108,7 +109,7 @@ public class LoadLastLogin { final SimpleDateFormat dateEncoder = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (String logName : args) { - BufferedReader logReader = new BufferedReader(new FileReader(logName)); + BufferedReader logReader = new BufferedReader(new FileReader(logName, StandardCharsets.UTF_8)); while (true) { String line = logReader.readLine(); // End of file? diff --git a/dspace-api/src/main/java/org/dspace/external/provider/impl/SHERPAv2JournalDataProvider.java b/dspace-api/src/main/java/org/dspace/external/provider/impl/SHERPAv2JournalDataProvider.java index 42d3cab494..210d8a24a8 100644 --- a/dspace-api/src/main/java/org/dspace/external/provider/impl/SHERPAv2JournalDataProvider.java +++ b/dspace-api/src/main/java/org/dspace/external/provider/impl/SHERPAv2JournalDataProvider.java @@ -15,7 +15,6 @@ import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.dspace.app.sherpa.SHERPAService; import org.dspace.app.sherpa.v2.SHERPAJournal; import org.dspace.app.sherpa.v2.SHERPAResponse; @@ -33,8 +32,6 @@ import org.dspace.external.provider.ExternalDataProvider; */ public class SHERPAv2JournalDataProvider implements ExternalDataProvider { - private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SHERPAv2JournalDataProvider.class); - // Source identifier (configured in spring configuration) private String sourceIdentifier; diff --git a/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java b/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java index 4dbfcf0eae..da9c3b718a 100644 --- a/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java +++ b/dspace-api/src/main/java/org/dspace/identifier/DOIIdentifierProvider.java @@ -158,6 +158,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * Spring will use this setter to set the filter from the configured property in identifier-services.xml * @param filterService - an object implementing the org.dspace.content.logic.Filter interface */ + @Override public void setFilterService(Filter filterService) { this.filterService = filterService; } @@ -319,7 +320,6 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * @param skipFilter - boolean indicating whether to skip any filtering of items before performing reservation * @throws IdentifierException * @throws IllegalArgumentException - * @throws SQLException */ @Override public void reserve(Context context, DSpaceObject dso, String identifier, boolean skipFilter) @@ -367,6 +367,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * @param context - DSpace context * @param dso - DSpaceObject identified by this DOI * @param identifier - String containing the DOI to reserve + * @param skipFilter - skip the filters for {@link checkMintable(Context, DSpaceObject)} * @throws IdentifierException * @throws IllegalArgumentException * @throws SQLException @@ -410,6 +411,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * @param context - DSpace context * @param dso - DSpaceObject identified by this DOI * @param identifier - String containing the DOI to register + * @param skipFilter - skip filters for {@link checkMintable(Context, DSpaceObject)} * @throws IdentifierException * @throws IllegalArgumentException * @throws SQLException @@ -785,7 +787,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * Delete a specific DOI in the registration agency records via the DOI Connector * @param context - DSpace context * @param identifier - String containing identifier to delete - * @throws IdentifierException + * @throws DOIIdentifierException */ public void deleteOnline(Context context, String identifier) throws DOIIdentifierException { String doi = doiService.formatIdentifier(identifier); @@ -826,7 +828,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * {@link org.dspace.identifier.service.DOIService#formatIdentifier(String)}. * @return Null if the DOI couldn't be found or the associated DSpaceObject. * @throws SQLException if database error - * @throws IdentifierException If {@code identifier} is null or an empty string. + * @throws DOIIdentifierException If {@code identifier} is null or an empty string. * @throws IllegalArgumentException If the identifier couldn't be recognized as DOI. */ public DSpaceObject getObjectByDOI(Context context, String identifier) @@ -876,10 +878,10 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { } /** - * Load a DOI from the database or creates it if it does not exist. This - * method can be used to ensure that a DOI exists in the database and to - * load the appropriate TableRow. As protected method we don't check if the - * DOI is in a decent format, use DOI.formatIdentifier(String) if necessary. + * Load a DOI from the database or creates it if it does not exist. + * This method can be used to ensure that a DOI exists in the database and + * to load the appropriate TableRow. As protected method we don't check if + * the DOI is in a decent format, use DOI.formatIdentifier(String) if necessary. * * @param context The relevant DSpace Context. * @param dso The DSpaceObject the DOI should be loaded or created for. @@ -889,6 +891,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * @throws SQLException In case of an error using the database. * @throws DOIIdentifierException If {@code doi} is not part of our prefix or * DOI is registered for another object already. + * @throws IdentifierNotApplicableException passed through. */ protected DOI loadOrCreateDOI(Context context, DSpaceObject dso, String doiIdentifier) throws SQLException, DOIIdentifierException, IdentifierNotApplicableException { @@ -896,11 +899,13 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { } /** - * Load DOI from database, or create one if it doesn't yet exist - * We need to distinguish several cases. LoadOrCreate can be called with a specifid identifier to load or create. - * It can also be used to create a new unspecified identifier. In the latter case doiIdentifier is set null. - * If doiIdentifier is set, we know which doi we should try to load or create, but even in sucha situation - * we might be able to find it in the database or might have to create it. + * Load DOI from database, or create one if it doesn't yet exist. + * We need to distinguish several cases.LoadOrCreate can be called with a + * specified identifier to load or create. It can also be used to create a + * new unspecified identifier. In the latter case doiIdentifier is set null. + * If doiIdentifier is set, we know which doi we should try to load or + * create, but even in such a situation we might be able to find it in the + * database or might have to create it. * * @param context - DSpace context * @param dso - DSpaceObject to identify @@ -909,6 +914,7 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { * @return * @throws SQLException * @throws DOIIdentifierException + * @throws org.dspace.identifier.IdentifierNotApplicableException passed through. */ protected DOI loadOrCreateDOI(Context context, DSpaceObject dso, String doiIdentifier, boolean skipFilter) throws SQLException, DOIIdentifierException, IdentifierNotApplicableException { @@ -929,11 +935,11 @@ public class DOIIdentifierProvider extends FilteredIdentifierProvider { && doi.getResourceTypeId() != dso.getType()) { // doi was assigned to another resource type. Don't // reactivate it - throw new DOIIdentifierException("Cannot reassing " - + "previously deleted DOI " + doiIdentifier - + " as the resource types of the object it was " - + "previously assigned to and the object it " - + "shall be assigned to now divert (was: " + throw new DOIIdentifierException("Cannot reassign" + + " previously deleted DOI " + doiIdentifier + + " as the resource types of the object it was" + + " previously assigned to and the object it" + + " shall be assigned to now differ (was: " + Constants.typeText[doi.getResourceTypeId()] + ", trying to assign to " + Constants.typeText[dso.getType()] + ").", diff --git a/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java b/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java index 55eeb8d314..0eac224bcd 100644 --- a/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java +++ b/dspace-api/src/main/java/org/dspace/license/LicenseCleanup.java @@ -15,6 +15,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.Iterator; import java.util.List; @@ -38,7 +39,8 @@ import org.dspace.content.service.ItemService; import org.dspace.core.Context; /** - * Cleanup class for CC Licenses, corrects XML formating errors by replacing the license_rdf bitstream. + * Cleanup class for CC Licenses, corrects XML formatting errors by replacing + * the license_rdf bitstream. * * @author mdiggory */ @@ -130,7 +132,7 @@ public class LicenseCleanup { AuthorizeException, IOException { List bundles = itemService.getBundles(item, "CC-LICENSE"); - if (bundles == null || bundles.size() == 0) { + if (bundles == null || bundles.isEmpty()) { return; } @@ -138,7 +140,7 @@ public class LicenseCleanup { Bitstream bitstream = bundleService.getBitstreamByName(bundle, "license_rdf"); - String license_rdf = new String(copy(context, bitstream)); + String license_rdf = new String(copy(context, bitstream), StandardCharsets.UTF_8); /* quickly fix xml by ripping out offensive parts */ license_rdf = license_rdf.replaceFirst(" + + + + + DEBUG + + + INFO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +