diff --git a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java index b84055b8b0..d0605c31b3 100644 --- a/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java +++ b/dspace-api/src/main/java/org/dspace/authorize/ResourcePolicy.java @@ -169,6 +169,7 @@ public class ResourcePolicy implements ReloadableEntity { * * @return the internal identifier */ + @Override public Integer getID() { return id; } diff --git a/dspace-api/src/main/java/org/dspace/content/Bitstream.java b/dspace-api/src/main/java/org/dspace/content/Bitstream.java index 39d78b0491..451a3b7578 100644 --- a/dspace-api/src/main/java/org/dspace/content/Bitstream.java +++ b/dspace-api/src/main/java/org/dspace/content/Bitstream.java @@ -21,7 +21,6 @@ import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; -import org.apache.log4j.Logger; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.BitstreamService; import org.dspace.core.Constants; @@ -36,17 +35,10 @@ import org.hibernate.proxy.HibernateProxyHelper; * the contents of a bitstream; you need to create a new bitstream. * * @author Robert Tansley - * @version $Revision$ */ @Entity @Table(name = "bitstream") public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport { - - /** - * log4j logger - */ - private static Logger log = Logger.getLogger(Bitstream.class); - @Column(name = "bitstream_id", insertable = false, updatable = false) private Integer legacyId; @@ -411,7 +403,7 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport */ @Override public boolean equals(Object other) { - if (other == null) { + if (!(other instanceof Bitstream)) { return false; } Class objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(other); @@ -419,11 +411,7 @@ public class Bitstream extends DSpaceObject implements DSpaceObjectLegacySupport return false; } final Bitstream otherBitstream = (Bitstream) other; - if (!this.getID().equals(otherBitstream.getID())) { - return false; - } - - return true; + return this.getID().equals(otherBitstream.getID()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/BitstreamFormat.java b/dspace-api/src/main/java/org/dspace/content/BitstreamFormat.java index d543cc7c6e..5cf787ffd5 100644 --- a/dspace-api/src/main/java/org/dspace/content/BitstreamFormat.java +++ b/dspace-api/src/main/java/org/dspace/content/BitstreamFormat.java @@ -40,7 +40,6 @@ import org.hibernate.proxy.HibernateProxyHelper; * when update is called. * * @author Robert Tansley - * @version $Revision$ */ @Entity @Table(name = "bitstreamformatregistry") @@ -120,6 +119,7 @@ public class BitstreamFormat implements Serializable, ReloadableEntity * * @return the internal identifier */ + @Override public final Integer getID() { return id; } @@ -267,7 +267,7 @@ public class BitstreamFormat implements Serializable, ReloadableEntity */ @Override public boolean equals(Object other) { - if (other == null) { + if (!(other instanceof BitstreamFormat)) { return false; } Class objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(other); @@ -275,11 +275,7 @@ public class BitstreamFormat implements Serializable, ReloadableEntity return false; } final BitstreamFormat otherBitstreamFormat = (BitstreamFormat) other; - if (!this.getID().equals(otherBitstreamFormat.getID())) { - return false; - } - - return true; + return this.getID().equals(otherBitstreamFormat.getID()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java index 10bf11c0bc..d180d80ab9 100644 --- a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java @@ -310,7 +310,7 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i * whitespace. */ if (value == null) { - clearMetadata(context, collection, field.SCHEMA, field.ELEMENT, field.QUALIFIER, Item.ANY); + clearMetadata(context, collection, field.schema, field.element, field.qualifier, Item.ANY); collection.setMetadataModified(); } else { super.setMetadataSingleValue(context, collection, field, null, value); diff --git a/dspace-api/src/main/java/org/dspace/content/Community.java b/dspace-api/src/main/java/org/dspace/content/Community.java index 810caaf4fd..088984928f 100644 --- a/dspace-api/src/main/java/org/dspace/content/Community.java +++ b/dspace-api/src/main/java/org/dspace/content/Community.java @@ -24,7 +24,6 @@ import javax.persistence.Table; import javax.persistence.Transient; import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.apache.logging.log4j.Logger; import org.dspace.content.comparator.NameAscendingComparator; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CommunityService; @@ -42,18 +41,12 @@ import org.hibernate.proxy.HibernateProxyHelper; * update is called. * * @author Robert Tansley - * @version $Revision$ */ @Entity @Table(name = "community") @Cacheable @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, include = "non-lazy") public class Community extends DSpaceObject implements DSpaceObjectLegacySupport { - /** - * log4j category - */ - private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Community.class); - @Column(name = "community_id", insertable = false, updatable = false) private Integer legacyId; @@ -215,7 +208,7 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport */ @Override public boolean equals(Object other) { - if (other == null) { + if (!(other instanceof Community)) { return false; } Class objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(other); @@ -223,11 +216,7 @@ public class Community extends DSpaceObject implements DSpaceObjectLegacySupport return false; } final Community otherCommunity = (Community) other; - if (!this.getID().equals(otherCommunity.getID())) { - return false; - } - - return true; + return this.getID().equals(otherCommunity.getID()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java index 4b953820ad..7a497d0e10 100644 --- a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java @@ -192,7 +192,7 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp * whitespace. */ if (value == null) { - clearMetadata(context, community, field.SCHEMA, field.ELEMENT, field.QUALIFIER, Item.ANY); + clearMetadata(context, community, field.schema, field.element, field.qualifier, Item.ANY); community.setMetadataModified(); } else { super.setMetadataSingleValue(context, community, field, null, value); diff --git a/dspace-api/src/main/java/org/dspace/content/DCDate.java b/dspace-api/src/main/java/org/dspace/content/DCDate.java index 4acccb2d84..47ed805d4a 100644 --- a/dspace-api/src/main/java/org/dspace/content/DCDate.java +++ b/dspace-api/src/main/java/org/dspace/content/DCDate.java @@ -39,7 +39,6 @@ import org.apache.logging.log4j.Logger; * * @author Robert Tansley * @author Larry Stone - * @version $Revision$ */ public class DCDate { /** @@ -370,6 +369,7 @@ public class DCDate { * * @return The date as a string. */ + @Override public String toString() { if (calendar == null) { return "null"; diff --git a/dspace-api/src/main/java/org/dspace/content/DSpaceObject.java b/dspace-api/src/main/java/org/dspace/content/DSpaceObject.java index a486fed82a..73ca37f7c1 100644 --- a/dspace-api/src/main/java/org/dspace/content/DSpaceObject.java +++ b/dspace-api/src/main/java/org/dspace/content/DSpaceObject.java @@ -61,7 +61,7 @@ public abstract class DSpaceObject implements Serializable, ReloadableEntity handles = new ArrayList<>(); @OneToMany(fetch = FetchType.LAZY, mappedBy = "dSpaceObject", cascade = CascadeType.ALL) - private List resourcePolicies = new ArrayList<>(); + private final List resourcePolicies = new ArrayList<>(); /** * True if anything else was changed since last update() @@ -122,6 +122,7 @@ public abstract class DSpaceObject implements Serializable, ReloadableEntity implements @Override public String getMetadataFirstValue(T dso, MetadataFieldName field, String language) { List metadataValues - = getMetadata(dso, field.SCHEMA, field.ELEMENT, field.QUALIFIER, language); + = getMetadata(dso, field.schema, field.element, field.qualifier, language); if (CollectionUtils.isNotEmpty(metadataValues)) { return metadataValues.get(0).getValue(); } @@ -447,11 +447,11 @@ public abstract class DSpaceObjectServiceImpl implements String language, String value) throws SQLException { if (value != null) { - clearMetadata(context, dso, field.SCHEMA, field.ELEMENT, field.QUALIFIER, + clearMetadata(context, dso, field.schema, field.element, field.qualifier, language); String newValueLanguage = (Item.ANY.equals(language)) ? null : language; - addMetadata(context, dso, field.SCHEMA, field.ELEMENT, field.QUALIFIER, + addMetadata(context, dso, field.schema, field.element, field.qualifier, newValueLanguage, value); dso.setMetadataModified(); } diff --git a/dspace-api/src/main/java/org/dspace/content/InProgressSubmission.java b/dspace-api/src/main/java/org/dspace/content/InProgressSubmission.java index 5e7a04c4c9..42ef449c7d 100644 --- a/dspace-api/src/main/java/org/dspace/content/InProgressSubmission.java +++ b/dspace-api/src/main/java/org/dspace/content/InProgressSubmission.java @@ -17,7 +17,6 @@ import org.dspace.eperson.EPerson; * which stage of submission they are (in workspace or workflow system) * * @author Robert Tansley - * @version $Revision$ */ public interface InProgressSubmission extends ReloadableEntity { /** @@ -25,6 +24,7 @@ public interface InProgressSubmission extends ReloadableEntity { * * @return the internal identifier */ + @Override Integer getID(); /** diff --git a/dspace-api/src/main/java/org/dspace/content/Item.java b/dspace-api/src/main/java/org/dspace/content/Item.java index 22a9a4de52..b4b4ac2b2d 100644 --- a/dspace-api/src/main/java/org/dspace/content/Item.java +++ b/dspace-api/src/main/java/org/dspace/content/Item.java @@ -27,7 +27,6 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; -import org.apache.log4j.Logger; import org.dspace.content.comparator.NameAscendingComparator; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; @@ -48,17 +47,10 @@ import org.hibernate.proxy.HibernateProxyHelper; * * @author Robert Tansley * @author Martin Hald - * @version $Revision$ */ @Entity @Table(name = "item") public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { - - /** - * log4j logger - */ - private static Logger log = Logger.getLogger(Item.class); - /** * Wild card for Dublin Core metadata qualifiers/languages */ @@ -286,7 +278,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { * @return the bundles in an unordered array */ public List getBundles(String name) { - List matchingBundles = new ArrayList(); + List matchingBundles = new ArrayList<>(); // now only keep bundles with matching names List bunds = getBundles(); for (Bundle bundle : bunds) { @@ -317,7 +309,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { /** * Return true if other is the same Item as - * this object, false otherwise + * this object, false otherwise. * * @param obj object to compare to * @return true if object passed in represents the same item @@ -325,7 +317,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { */ @Override public boolean equals(Object obj) { - if (obj == null) { + if (!(obj instanceof Item)) { return false; } Class objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(obj); @@ -333,10 +325,7 @@ public class Item extends DSpaceObject implements DSpaceObjectLegacySupport { return false; } final Item otherItem = (Item) obj; - if (!this.getID().equals(otherItem.getID())) { - return false; - } - return true; + return this.getID().equals(otherItem.getID()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataField.java b/dspace-api/src/main/java/org/dspace/content/MetadataField.java index 0ea176c751..8b76701199 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataField.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataField.java @@ -32,7 +32,6 @@ import org.hibernate.proxy.HibernateProxyHelper; * metadata element belongs in a field. * * @author Martin Hald - * @version $Revision$ * @see org.dspace.content.MetadataValue * @see org.dspace.content.MetadataSchema */ @@ -77,6 +76,7 @@ public class MetadataField implements ReloadableEntity { * * @return metadata field id */ + @Override public Integer getID() { return id; } @@ -164,7 +164,7 @@ public class MetadataField implements ReloadableEntity { */ @Override public boolean equals(Object obj) { - if (obj == null) { + if (!(obj instanceof MetadataField)) { return false; } Class objClass = HibernateProxyHelper.getClassWithoutInitializingProxy(obj); @@ -175,10 +175,7 @@ public class MetadataField implements ReloadableEntity { if (!this.getID().equals(other.getID())) { return false; } - if (!getMetadataSchema().equals(other.getMetadataSchema())) { - return false; - } - return true; + return getMetadataSchema().equals(other.getMetadataSchema()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataFieldName.java b/dspace-api/src/main/java/org/dspace/content/MetadataFieldName.java index 8c3dfc1bcc..8d7f4b0277 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataFieldName.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataFieldName.java @@ -17,13 +17,13 @@ import javax.annotation.Nonnull; */ public class MetadataFieldName { /** Name of the metadata schema which defines this field. Never null. */ - public final String SCHEMA; + public final String schema; /** Element name of this field. Never null. */ - public final String ELEMENT; + public final String element; /** Qualifier name of this field. May be {@code null}. */ - public final String QUALIFIER; + public final String qualifier; /** * Initialize a tuple of (schema, element, qualifier) to name a metadata field. @@ -40,9 +40,9 @@ public class MetadataFieldName { throw new NullPointerException("Element must not be null."); } - SCHEMA = schema; - ELEMENT = element; - QUALIFIER = qualifier; + this.schema = schema; + this.element = element; + this.qualifier = qualifier; } /** @@ -59,9 +59,9 @@ public class MetadataFieldName { throw new NullPointerException("Element must not be null."); } - SCHEMA = schema; - ELEMENT = element; - QUALIFIER = null; + this.schema = schema; + this.element = element; + qualifier = null; } /** @@ -79,9 +79,9 @@ public class MetadataFieldName { throw new IllegalArgumentException("Element must not be null."); } - SCHEMA = schema.getName(); - ELEMENT = element; - QUALIFIER = qualifier; + this.schema = schema.getName(); + this.element = element; + this.qualifier = qualifier; } /** @@ -98,9 +98,9 @@ public class MetadataFieldName { throw new IllegalArgumentException("Element must not be null."); } - SCHEMA = schema.getName(); - ELEMENT = element; - QUALIFIER = null; + this.schema = schema.getName(); + this.element = element; + qualifier = null; } /** @@ -110,9 +110,9 @@ public class MetadataFieldName { */ public MetadataFieldName(@Nonnull String name) { String[] elements = parse(name); - SCHEMA = elements[0]; - ELEMENT = elements[1]; - QUALIFIER = elements[2]; + schema = elements[0]; + element = elements[1]; + qualifier = elements[2]; } /** @@ -138,17 +138,17 @@ public class MetadataFieldName { /** * Format a dotted-atoms representation of this field name. - * @return SCHEMA.ELEMENT.QUALIFIER + * @return schema.element.qualifier */ @Override public String toString() { StringBuilder buffer = new StringBuilder(32); - buffer.append(SCHEMA) + buffer.append(schema) .append('.') - .append(ELEMENT); - if (null != QUALIFIER) { + .append(element); + if (null != qualifier) { buffer.append('.') - .append(QUALIFIER); + .append(qualifier); } return buffer.toString(); } diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java b/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java index 727181ee9d..f60e5e1604 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataSchema.java @@ -30,7 +30,6 @@ import org.hibernate.proxy.HibernateProxyHelper; *

* * @author Martin Hald - * @version $Revision$ * @see org.dspace.content.MetadataValue * @see org.dspace.content.MetadataField */ @@ -129,6 +128,7 @@ public class MetadataSchema implements ReloadableEntity { * * @return schema record key */ + @Override public Integer getID() { return id; } diff --git a/dspace-api/src/main/java/org/dspace/content/MetadataValue.java b/dspace-api/src/main/java/org/dspace/content/MetadataValue.java index 2d9808ae45..d1b636cdff 100644 --- a/dspace-api/src/main/java/org/dspace/content/MetadataValue.java +++ b/dspace-api/src/main/java/org/dspace/content/MetadataValue.java @@ -46,7 +46,7 @@ public class MetadataValue implements ReloadableEntity { @Column(name = "metadata_value_id") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "metadatavalue_seq") @SequenceGenerator(name = "metadatavalue_seq", sequenceName = "metadatavalue_seq", allocationSize = 1) - private Integer id; + private final Integer id; /** * The primary key for the metadata value @@ -104,6 +104,7 @@ public class MetadataValue implements ReloadableEntity { * * @return metadata value ID */ + @Override public Integer getID() { return id; } @@ -249,10 +250,7 @@ public class MetadataValue implements ReloadableEntity { if (!this.getID().equals(other.getID())) { return false; } - if (!this.getDSpaceObject().getID().equals(other.getDSpaceObject().getID())) { - return false; - } - return true; + return this.getDSpaceObject().getID().equals(other.getDSpaceObject().getID()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/content/service/BitstreamService.java b/dspace-api/src/main/java/org/dspace/content/service/BitstreamService.java index b7fe2dfa16..764f195d1e 100644 --- a/dspace-api/src/main/java/org/dspace/content/service/BitstreamService.java +++ b/dspace-api/src/main/java/org/dspace/content/service/BitstreamService.java @@ -33,6 +33,7 @@ import org.dspace.core.Context; */ public interface BitstreamService extends DSpaceObjectService, DSpaceObjectLegacySupportService { + @Override public Bitstream find(Context context, UUID id) throws SQLException; public List findAll(Context context) throws SQLException; diff --git a/dspace-api/src/main/java/org/dspace/core/Context.java b/dspace-api/src/main/java/org/dspace/core/Context.java index e878367ec4..2181626250 100644 --- a/dspace-api/src/main/java/org/dspace/core/Context.java +++ b/dspace-api/src/main/java/org/dspace/core/Context.java @@ -46,8 +46,6 @@ import org.springframework.util.CollectionUtils; * changes and free up the resources. *

* The context object is also used as a cache for CM API objects. - * - * @version $Revision$ */ public class Context implements AutoCloseable { private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(Context.class); diff --git a/dspace-api/src/main/java/org/dspace/core/I18nUtil.java b/dspace-api/src/main/java/org/dspace/core/I18nUtil.java index cd0609e29f..68db217f1e 100644 --- a/dspace-api/src/main/java/org/dspace/core/I18nUtil.java +++ b/dspace-api/src/main/java/org/dspace/core/I18nUtil.java @@ -217,12 +217,11 @@ public class I18nUtil { */ public static String getInputFormsFileName(Locale locale) { /** Name of the form definition XML file */ - String fileName = ""; final String FORM_DEF_FILE = "submission-forms"; final String FILE_TYPE = ".xml"; String defsFilename = DSpaceServicesFactory.getInstance().getConfigurationService().getProperty("dspace.dir") + File.separator + "config" + File.separator + FORM_DEF_FILE; - fileName = getFilename(locale, defsFilename, FILE_TYPE); + String fileName = getFilename(locale, defsFilename, FILE_TYPE); return fileName; } @@ -286,14 +285,13 @@ public class I18nUtil { */ public static String getDefaultLicense(Context context) { Locale locale = context.getCurrentLocale(); - String fileName = ""; /** Name of the default license */ final String DEF_LIC_FILE = "default"; final String FILE_TYPE = ".license"; String defsFilename = DSpaceServicesFactory.getInstance().getConfigurationService().getProperty("dspace.dir") + File.separator + "config" + File.separator + DEF_LIC_FILE; - fileName = getFilename(locale, defsFilename, FILE_TYPE); + String fileName = getFilename(locale, defsFilename, FILE_TYPE); return fileName; } @@ -316,8 +314,7 @@ public class I18nUtil { // with Language, Country String fileNameLC = null; // with Language - String fileNameL = null; - fileNameL = fileName + "_" + locale.getLanguage(); + String fileNameL = fileName + "_" + locale.getLanguage(); if (fileType == null) { fileType = ""; @@ -372,12 +369,11 @@ public class I18nUtil { * String - localized filename of an email template */ public static String getEmailFilename(Locale locale, String name) { - String templateName = ""; String templateFile = DSpaceServicesFactory.getInstance().getConfigurationService().getProperty("dspace.dir") + File.separator + "config" + File.separator + "emails" + File.separator + name; - templateName = getFilename(locale, templateFile, ""); + String templateName = getFilename(locale, templateFile, ""); return templateName; } @@ -389,7 +385,7 @@ public class I18nUtil { * @return array of locale results, possibly empty */ public static Locale[] parseLocales(String[] locales) { - List resultList = new ArrayList(); + List resultList = new ArrayList<>(); for (String ls : locales) { Locale lc = makeLocale(ls); if (lc != null) { diff --git a/dspace-api/src/main/java/org/dspace/core/Utils.java b/dspace-api/src/main/java/org/dspace/core/Utils.java index 18daa5a69e..8968c8950f 100644 --- a/dspace-api/src/main/java/org/dspace/core/Utils.java +++ b/dspace-api/src/main/java/org/dspace/core/Utils.java @@ -33,8 +33,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import com.coverity.security.Escape; +import java.nio.charset.StandardCharsets; import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.StringSubstitutor; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dspace.services.ConfigurationService; import org.dspace.services.factory.DSpaceServicesFactory; @@ -43,13 +45,12 @@ import org.dspace.services.factory.DSpaceServicesFactory; * Utility functions for DSpace. * * @author Peter Breton - * @version $Revision$ */ public final class Utils { /** * log4j logger */ - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(Utils.class); + private static final Logger log = LogManager.getLogger(Utils.class); private static final Pattern DURATION_PATTERN = Pattern .compile("(\\d+)([smhdwy])"); @@ -68,12 +69,12 @@ public final class Utils { private static int counter = 0; - private static Random random = new Random(); + private static final Random random = new Random(); - private static VMID vmid = new VMID(); + private static final VMID vmid = new VMID(); // for parseISO8601Date - private static SimpleDateFormat parseFmt[] = { + private static final SimpleDateFormat parseFmt[] = { // first try at parsing, has milliseconds (note General time zone) new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSz"), @@ -88,12 +89,14 @@ public final class Utils { // for formatISO8601Date // output canonical format (note RFC22 time zone, easier to hack) - private static SimpleDateFormat outFmtSecond = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"); + private static final SimpleDateFormat outFmtSecond + = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"); // output format with millsecond precision - private static SimpleDateFormat outFmtMillisec = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSZ"); + private static final SimpleDateFormat outFmtMillisec + = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSZ"); - private static Calendar outCal = GregorianCalendar.getInstance(); + private static final Calendar outCal = GregorianCalendar.getInstance(); /** * Private constructor @@ -107,7 +110,7 @@ public final class Utils { * @return MD5 checksum for the data in hex format. */ public static String getMD5(String data) { - return getMD5(data.getBytes()); + return getMD5(data.getBytes(StandardCharsets.UTF_8)); } /** @@ -150,7 +153,7 @@ public final class Utils { return null; } - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); // This is far from the most efficient way to do things... for (int i = 0; i < data.length; i++) { @@ -194,10 +197,14 @@ public final class Utils { random.nextBytes(junk); - String input = new StringBuffer().append(vmid).append( - new java.util.Date()).append(Arrays.toString(junk)).append(counter++).toString(); + String input = new StringBuilder() + .append(vmid) + .append(new java.util.Date()) + .append(Arrays.toString(junk)) + .append(counter++) + .toString(); - return getMD5Bytes(input.getBytes()); + return getMD5Bytes(input.getBytes(StandardCharsets.UTF_8)); } // The following two methods are taken from the Jakarta IOUtil class. diff --git a/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java b/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java index d5ec37d60b..fa16d27369 100644 --- a/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java +++ b/dspace-api/src/main/java/org/dspace/curate/AbstractCurationTask.java @@ -13,7 +13,6 @@ import java.util.Iterator; import java.util.List; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.DSpaceObject; @@ -39,8 +38,6 @@ public abstract class AbstractCurationTask implements CurationTask { protected Curator curator = null; // curator-assigned taskId protected String taskId = null; - // logger - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractCurationTask.class); protected CommunityService communityService; protected ItemService itemService; protected HandleService handleService; diff --git a/dspace-api/src/main/java/org/dspace/curate/CitationPage.java b/dspace-api/src/main/java/org/dspace/curate/CitationPage.java index 386bf0ba92..0f02d5b757 100644 --- a/dspace-api/src/main/java/org/dspace/curate/CitationPage.java +++ b/dspace-api/src/main/java/org/dspace/curate/CitationPage.java @@ -19,7 +19,6 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.content.Bitstream; -import org.dspace.content.BitstreamFormat; import org.dspace.content.Bundle; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; @@ -46,7 +45,7 @@ public class CitationPage extends AbstractCurationTask { /** * Class Logger */ - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(CitationPage.class); + private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(CitationPage.class); protected int status = Curator.CURATE_UNSET; protected String result = null; @@ -97,7 +96,7 @@ public class CitationPage extends AbstractCurationTask { //Determine if the DISPLAY bundle exits. If not, create it. List dBundles = itemService.getBundles(item, CitationPage.DISPLAY_BUNDLE_NAME); Bundle dBundle = null; - if (dBundles == null || dBundles.size() == 0) { + if (dBundles == null || dBundles.isEmpty()) { try { dBundle = bundleService.create(Curator.curationContext(), item, CitationPage.DISPLAY_BUNDLE_NAME); } catch (AuthorizeException e) { @@ -110,7 +109,7 @@ public class CitationPage extends AbstractCurationTask { //Create a map of the bitstreams in the displayBundle. This is used to //check if the bundle being cited is already in the display bundle. - Map displayMap = new HashMap(); + Map displayMap = new HashMap<>(); for (Bitstream bs : dBundle.getBitstreams()) { displayMap.put(bs.getName(), bs); } @@ -143,15 +142,16 @@ public class CitationPage extends AbstractCurationTask { // Loop through each file and generate a cover page for documents // that are PDFs. for (Bitstream bitstream : bitstreams) { - BitstreamFormat format = bitstream.getFormat(Curator.curationContext()); //If bitstream is a PDF document then it is citable. CitationDocumentService citationDocument = DisseminateServiceFactory.getInstance() .getCitationDocumentService(); if (citationDocument.canGenerateCitationVersion(Curator.curationContext(), bitstream)) { - this.resBuilder.append(item.getHandle() + " - " - + bitstream.getName() + " is citable."); + this.resBuilder.append(item.getHandle()) + .append(" - ") + .append(bitstream.getName()) + .append(" is citable."); try { //Create the cited document Pair citedDocument = @@ -168,7 +168,9 @@ public class CitationPage extends AbstractCurationTask { StringBuilder stack = new StringBuilder(); int numLines = Math.min(stackTrace.length, 12); for (int j = 0; j < numLines; j++) { - stack.append("\t" + stackTrace[j].toString() + "\n"); + stack.append("\t") + .append(stackTrace[j].toString()) + .append("\n"); } if (stackTrace.length > numLines) { stack.append("\t. . .\n"); @@ -180,8 +182,10 @@ public class CitationPage extends AbstractCurationTask { } } else { //bitstream is not a document - this.resBuilder.append(item.getHandle() + " - " - + bitstream.getName() + " is not citable.\n"); + this.resBuilder.append(item.getHandle()) + .append(" - ") + .append(bitstream.getName()) + .append(" is not citable.\n"); this.status = Curator.CURATE_SUCCESS; } } @@ -211,11 +215,11 @@ public class CitationPage extends AbstractCurationTask { //If we are modifying a file that is not in the //preservation bundle then we have to move it there. Context context = Curator.curationContext(); - if (bundle.getID() != pBundle.getID()) { + if (!bundle.getID().equals(pBundle.getID())) { bundleService.addBitstream(context, pBundle, bitstream); bundleService.removeBitstream(context, bundle, bitstream); List bitstreams = bundle.getBitstreams(); - if (bitstreams == null || bitstreams.size() == 0) { + if (bitstreams == null || bitstreams.isEmpty()) { itemService.removeBundle(context, item, bundle); } } @@ -235,9 +239,11 @@ public class CitationPage extends AbstractCurationTask { bitstreamService.setFormat(context, citedBitstream, bitstream.getFormat(Curator.curationContext())); citedBitstream.setDescription(context, bitstream.getDescription()); - this.resBuilder.append(" Added " - + citedBitstream.getName() - + " to the " + CitationPage.DISPLAY_BUNDLE_NAME + " bundle.\n"); + this.resBuilder.append(" Added ") + .append(citedBitstream.getName()) + .append(" to the ") + .append(CitationPage.DISPLAY_BUNDLE_NAME) + .append(" bundle.\n"); //Run update to propagate changes to the //database. diff --git a/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java b/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java index a9a8e8906a..2b12745d8f 100644 --- a/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java +++ b/dspace-api/src/main/java/org/dspace/curate/TaskResolver.java @@ -15,11 +15,13 @@ import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.Properties; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dspace.core.factory.CoreServiceFactory; import org.dspace.services.factory.DSpaceServicesFactory; @@ -64,7 +66,7 @@ import org.dspace.services.factory.DSpaceServicesFactory; public class TaskResolver { // logging service - private static Logger log = org.apache.logging.log4j.LogManager.getLogger(TaskResolver.class); + private static final Logger log = LogManager.getLogger(TaskResolver.class); // base directory of task scripts & catalog name protected static final String CATALOG = "task.catalog"; @@ -94,7 +96,7 @@ public class TaskResolver { if (script.exists()) { BufferedReader reader = null; try { - reader = new BufferedReader(new FileReader(script)); + reader = new BufferedReader(new FileReader(script, StandardCharsets.UTF_8)); String line = null; while ((line = reader.readLine()) != null) { if (line.startsWith("#") && line.indexOf("$td=") > 0) { @@ -136,7 +138,7 @@ public class TaskResolver { catalog.put(taskName, descriptor); Writer writer = null; try { - writer = new FileWriter(new File(scriptDir, CATALOG)); + writer = new FileWriter(new File(scriptDir, CATALOG), StandardCharsets.UTF_8); catalog.store(writer, "do not edit"); } catch (IOException ioE) { log.error("Error saving scripted task catalog: " + CATALOG); @@ -179,7 +181,7 @@ public class TaskResolver { File script = new File(scriptDir, tokens[1]); if (script.exists()) { try { - Reader reader = new FileReader(script); + Reader reader = new FileReader(script, StandardCharsets.UTF_8); engine.eval(reader); reader.close(); // third token is the constructor expression for the class @@ -212,7 +214,7 @@ public class TaskResolver { File catalogFile = new File(scriptDir, CATALOG); if (catalogFile.exists()) { try { - Reader reader = new FileReader(catalogFile); + Reader reader = new FileReader(catalogFile, StandardCharsets.UTF_8); catalog.load(reader); reader.close(); } catch (IOException ioE) { diff --git a/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java b/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java index 97187c79ed..b3ee42fca1 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java +++ b/dspace-api/src/main/java/org/dspace/discovery/FullTextContentStreams.java @@ -16,9 +16,9 @@ import java.io.Reader; import java.io.SequenceInputStream; import java.nio.charset.StandardCharsets; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import javax.annotation.Nullable; @@ -55,7 +55,7 @@ public class FullTextContentStreams extends ContentStreamBase { } protected void init(Item parentItem) { - fullTextStreams = new LinkedList<>(); + fullTextStreams = new ArrayList<>(); if (parentItem != null) { sourceInfo = parentItem.getHandle(); @@ -149,8 +149,8 @@ public class FullTextContentStreams extends ContentStreamBase { } private class FullTextBitstream { - private String itemHandle; - private Bitstream bitstream; + private final String itemHandle; + private final Bitstream bitstream; public FullTextBitstream(final String parentHandle, final Bitstream file) { this.itemHandle = parentHandle; @@ -179,18 +179,20 @@ public class FullTextContentStreams extends ContentStreamBase { } } - private class FullTextEnumeration implements Enumeration { + private static class FullTextEnumeration implements Enumeration { private final Iterator fulltextIterator; - public FullTextEnumeration(final Iterator fulltextStreams) { - this.fulltextIterator = fulltextStreams; + public FullTextEnumeration(final Iterator fulltextIterator) { + this.fulltextIterator = fulltextIterator; } + @Override public boolean hasMoreElements() { return fulltextIterator.hasNext(); } + @Override public InputStream nextElement() { InputStream inputStream = null; FullTextBitstream bitstream = null; diff --git a/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java b/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java index c66c331332..d1059f8e2f 100644 --- a/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java +++ b/dspace-api/src/main/java/org/dspace/event/ConsumerProfile.java @@ -104,7 +104,9 @@ public class ConsumerProfile { "No filters configured for consumer named: " + name); } - consumer = (Consumer) Class.forName(className.trim()).getDeclaredConstructor().newInstance(); + consumer = Class.forName(className.trim()) + .asSubclass(Consumer.class) + .getDeclaredConstructor().newInstance(); // Each "filter" is + : ... filters = new ArrayList<>(); diff --git a/dspace-api/src/main/java/org/dspace/event/Event.java b/dspace-api/src/main/java/org/dspace/event/Event.java index 45b6407b28..af8b2d4571 100644 --- a/dspace-api/src/main/java/org/dspace/event/Event.java +++ b/dspace-api/src/main/java/org/dspace/event/Event.java @@ -48,8 +48,6 @@ import org.dspace.event.factory.EventServiceFactory; * significance varies by the combination of action and subject type. *

  • - timestamp -- exact millisecond timestamp at which event was logged.
  • * - * - * @version $Revision$ */ public class Event implements Serializable { private static final long serialVersionUID = 1L; @@ -308,6 +306,7 @@ public class Event implements Serializable { * @param other the event to compare this one to * @return true if events are "equal", false otherwise. */ + @Override public boolean equals(Object other) { if (other instanceof Event) { Event otherEvent = (Event) other; @@ -315,14 +314,15 @@ public class Event implements Serializable { .equals(otherEvent.detail)) && this.eventType == otherEvent.eventType && this.subjectType == otherEvent.subjectType - && this.subjectID == otherEvent.subjectID + && this.subjectID.equals(otherEvent.subjectID) && this.objectType == otherEvent.objectType - && this.objectID == otherEvent.objectID; + && this.objectID.equals(otherEvent.objectID); } return false; } + @Override public int hashCode() { return new HashCodeBuilder().append(this.detail) .append(eventType) @@ -634,6 +634,7 @@ public class Event implements Serializable { * @return Detailed string representation of contents of this event, to * help in logging and debugging. */ + @Override public String toString() { return "org.dspace.event.Event(eventType=" + this.getEventTypeAsString() diff --git a/dspace-api/src/main/java/org/dspace/handle/Handle.java b/dspace-api/src/main/java/org/dspace/handle/Handle.java index 76fed105b9..c35511353a 100644 --- a/dspace-api/src/main/java/org/dspace/handle/Handle.java +++ b/dspace-api/src/main/java/org/dspace/handle/Handle.java @@ -105,7 +105,7 @@ public class Handle implements ReloadableEntity { return true; } - if (o == null || getClass() != o.getClass()) { + if (!(o instanceof Handle)) { return false; } diff --git a/dspace-api/src/main/java/org/dspace/text/filter/InitialArticleWord.java b/dspace-api/src/main/java/org/dspace/text/filter/InitialArticleWord.java index 700b25748e..167b201e0f 100644 --- a/dspace-api/src/main/java/org/dspace/text/filter/InitialArticleWord.java +++ b/dspace-api/src/main/java/org/dspace/text/filter/InitialArticleWord.java @@ -110,7 +110,7 @@ public abstract class InitialArticleWord implements TextFilter { return str.substring(cutPos); } else { // No - move the initial article word to the end - return new StringBuffer(str.substring(cutPos)) + return new StringBuilder(str.substring(cutPos)) .append(wordSeparator) .append(str.substring(initialStart, initialEnd)) .toString(); @@ -124,10 +124,12 @@ public abstract class InitialArticleWord implements TextFilter { } protected InitialArticleWord(boolean stripWord) { + this.wordSeparator = ", "; stripInitialArticle = stripWord; } protected InitialArticleWord() { + this.wordSeparator = ", "; stripInitialArticle = false; } @@ -138,9 +140,8 @@ public abstract class InitialArticleWord implements TextFilter { * @return An array of definite/indefinite article words */ protected abstract String[] getArticleWords(String lang); - // Separator to use when appending article to end - private String wordSeparator = ", "; + private final String wordSeparator; // Flag to signify initial article word should be removed // If false, then the initial article word is appended to the end diff --git a/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/InProgressUser.java b/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/InProgressUser.java index 5cd714345e..efbd26bde5 100644 --- a/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/InProgressUser.java +++ b/dspace-api/src/main/java/org/dspace/xmlworkflow/storedcomponents/InProgressUser.java @@ -59,6 +59,7 @@ public class InProgressUser implements ReloadableEntity { } + @Override public Integer getID() { return id; } diff --git a/dspace-api/src/test/java/org/dspace/content/MetadataFieldNameTest.java b/dspace-api/src/test/java/org/dspace/content/MetadataFieldNameTest.java index f0ca7d25d8..a3a069b35e 100644 --- a/dspace-api/src/test/java/org/dspace/content/MetadataFieldNameTest.java +++ b/dspace-api/src/test/java/org/dspace/content/MetadataFieldNameTest.java @@ -26,17 +26,17 @@ public class MetadataFieldNameTest { @Test public void testConstruct3() { MetadataFieldName instance = new MetadataFieldName("one", "two", "three"); - assertEquals("Incorrect schema", "one", instance.SCHEMA); - assertEquals("Incorrect element", "two", instance.ELEMENT); - assertEquals("Incorrect qualifier", "three", instance.QUALIFIER); + assertEquals("Incorrect schema", "one", instance.schema); + assertEquals("Incorrect element", "two", instance.element); + assertEquals("Incorrect qualifier", "three", instance.qualifier); } @Test public void testConstruct2() { MetadataFieldName instance = new MetadataFieldName("one", "two"); - assertEquals("Incorrect schema", "one", instance.SCHEMA); - assertEquals("Incorrect element", "two", instance.ELEMENT); - assertNull("Incorrect qualifier", instance.QUALIFIER); + assertEquals("Incorrect schema", "one", instance.schema); + assertEquals("Incorrect element", "two", instance.element); + assertNull("Incorrect qualifier", instance.qualifier); } @Test(expected = NullPointerException.class)