diff --git a/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java b/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java index 983038c812..f17a7f6417 100644 --- a/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java +++ b/dspace-api/src/main/java/org/dspace/administer/CreateAdministrator.java @@ -16,7 +16,6 @@ import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; import org.apache.commons.lang3.StringUtils; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.core.I18nUtil; import org.dspace.eperson.EPerson; @@ -24,6 +23,8 @@ import org.dspace.eperson.Group; import org.dspace.eperson.factory.EPersonServiceFactory; import org.dspace.eperson.service.EPersonService; import org.dspace.eperson.service.GroupService; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /** * A command-line tool for creating an initial administrator for setting up a @@ -147,9 +148,10 @@ public final class CreateAdministrator { lastName = lastName.trim(); } - if (ConfigurationManager.getProperty("webui.supported.locales") != null) { - System.out.println("Select one of the following languages: " + ConfigurationManager - .getProperty("webui.supported.locales")); + ConfigurationService cfg = DSpaceServicesFactory.getInstance().getConfigurationService(); + if (cfg.hasProperty("webui.supported.locales")) { + System.out.println("Select one of the following languages: " + + cfg.getProperty("webui.supported.locales")); System.out.print("Language: "); System.out.flush(); diff --git a/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java b/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java index 869c7d13fc..5d7c6e2914 100644 --- a/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java +++ b/dspace-api/src/main/java/org/dspace/app/bulkedit/MetadataImport.java @@ -51,7 +51,6 @@ import org.dspace.content.service.MetadataValueService; import org.dspace.content.service.RelationshipService; import org.dspace.content.service.RelationshipTypeService; import org.dspace.content.service.WorkspaceItemService; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.LogManager; @@ -61,6 +60,8 @@ import org.dspace.handle.factory.HandleServiceFactory; import org.dspace.handle.service.HandleService; import org.dspace.scripts.DSpaceRunnable; import org.dspace.scripts.handler.DSpaceRunnableHandler; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; import org.dspace.utils.DSpace; import org.dspace.workflow.WorkflowException; import org.dspace.workflow.WorkflowItem; @@ -116,7 +117,7 @@ public class MetadataImport extends DSpaceRunnable entityTypeMap = new HashMap<>(); /** - * Map of UUIDs to their relations that are referenced within any import with their referers. + * Map of UUIDs to their relations that are referenced within any import with their referrers. * * @see #populateEntityRelationMap(String, String, String) */ @@ -129,7 +130,7 @@ public class MetadataImport extends DSpaceRunnable relationValidationErrors = new ArrayList<>(); /** - * Counter of rows proccssed in a CSV. + * Counter of rows processed in a CSV. */ protected Integer rowCount = 1; @@ -158,6 +159,8 @@ public class MetadataImport extends DSpaceRunnable(); - Enumeration propertyNames = ConfigurationManager.getProperties().propertyNames(); + authorityControlled = new HashSet<>(); + Enumeration propertyNames = configurationService.getProperties().propertyNames(); while (propertyNames.hasMoreElements()) { String key = ((String) propertyNames.nextElement()).trim(); if (key.startsWith(AC_PREFIX) - && ConfigurationManager.getBooleanProperty(key, false)) { + && configurationService.getBooleanProperty(key, false)) { authorityControlled.add(key.substring(AC_PREFIX.length())); } } @@ -1747,11 +1750,11 @@ public class MetadataImport extends DSpaceRunnable fileNames = new ArrayList(); + List fileNames = new ArrayList<>(); for (String fileName : downloadDir.list()) { if (fileName.contains("export") && fileName.endsWith(".zip")) { @@ -870,7 +872,7 @@ public class ItemExportServiceImpl implements ItemExportService { @Override public void deleteOldExportArchives(EPerson eperson) throws Exception { - int hours = ConfigurationManager + int hours = configurationService .getIntProperty("org.dspace.app.itemexport.life.span.hours"); Calendar now = Calendar.getInstance(); now.setTime(new Date()); @@ -891,11 +893,11 @@ public class ItemExportServiceImpl implements ItemExportService { @Override public void deleteOldExportArchives() throws Exception { - int hours = ConfigurationManager.getIntProperty("org.dspace.app.itemexport.life.span.hours"); + int hours = configurationService.getIntProperty("org.dspace.app.itemexport.life.span.hours"); Calendar now = Calendar.getInstance(); now.setTime(new Date()); now.add(Calendar.HOUR, (-hours)); - File downloadDir = new File(ConfigurationManager.getProperty("org.dspace.app.itemexport.download.dir")); + 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. File[] dirs = downloadDir.listFiles(); @@ -929,8 +931,8 @@ public class ItemExportServiceImpl implements ItemExportService { Locale supportedLocale = I18nUtil.getEPersonLocale(eperson); Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_success")); email.addRecipient(eperson.getEmail()); - email.addArgument(ConfigurationManager.getProperty("dspace.ui.url") + "/exportdownload/" + fileName); - email.addArgument(ConfigurationManager.getProperty("org.dspace.app.itemexport.life.span.hours")); + email.addArgument(configurationService.getProperty("dspace.ui.url") + "/exportdownload/" + fileName); + email.addArgument(configurationService.getProperty("org.dspace.app.itemexport.life.span.hours")); email.send(); } catch (Exception e) { @@ -947,7 +949,7 @@ public class ItemExportServiceImpl implements ItemExportService { Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_error")); email.addRecipient(eperson.getEmail()); email.addArgument(error); - email.addArgument(ConfigurationManager.getProperty("dspace.ui.url") + "/feedback"); + email.addArgument(configurationService.getProperty("dspace.ui.url") + "/feedback"); email.send(); } catch (Exception e) { diff --git a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java index 02fe164af0..367a359bfc 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/itemimport/ItemImportServiceImpl.java @@ -85,7 +85,6 @@ import org.dspace.content.service.ItemService; import org.dspace.content.service.MetadataFieldService; import org.dspace.content.service.MetadataSchemaService; import org.dspace.content.service.WorkspaceItemService; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.Email; @@ -96,6 +95,7 @@ import org.dspace.eperson.Group; import org.dspace.eperson.service.EPersonService; import org.dspace.eperson.service.GroupService; import org.dspace.handle.service.HandleService; +import org.dspace.services.ConfigurationService; import org.dspace.utils.DSpace; import org.dspace.workflow.WorkflowItem; import org.dspace.workflow.WorkflowService; @@ -157,8 +157,11 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea protected WorkspaceItemService workspaceItemService; @Autowired(required = true) protected WorkflowService workflowService; + @Autowired(required = true) + protected ConfigurationService configurationService; - protected final String tempWorkDir = ConfigurationManager.getProperty("org.dspace.app.batchitemimport.work.dir"); + protected final String tempWorkDir + = configurationService.getProperty("org.dspace.app.batchitemimport.work.dir"); protected boolean isTest = false; protected boolean isResume = false; @@ -217,7 +220,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea //Determine the folder where BTE will output the results String outputFolder = null; if (workingDir == null) { //This indicates a command line import, create a random path - File importDir = new File(ConfigurationManager.getProperty("org.dspace.app.batchitemimport.work.dir")); + File importDir = new File(configurationService.getProperty("org.dspace.app.batchitemimport.work.dir")); if (!importDir.exists()) { boolean success = importDir.mkdir(); if (!success) { @@ -1481,7 +1484,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea File tempdir = new File(destinationDir); if (!tempdir.isDirectory()) { - log.error("'" + ConfigurationManager.getProperty("org.dspace.app.itemexport.work.dir") + + log.error("'" + configurationService.getProperty("org.dspace.app.itemexport.work.dir") + "' as defined by the key 'org.dspace.app.itemexport.work.dir' in dspace.cfg " + "is not a valid directory"); } @@ -1646,7 +1649,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea } } - importDir = ConfigurationManager.getProperty( + importDir = configurationService.getProperty( "org.dspace.app.batchitemimport.work.dir") + File.separator + "batchuploads" + File.separator + context .getCurrentUser() @@ -1804,7 +1807,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "bte_batch_import_error")); email.addRecipient(eperson.getEmail()); email.addArgument(error); - email.addArgument(ConfigurationManager.getProperty("dspace.ui.url") + "/feedback"); + email.addArgument(configurationService.getProperty("dspace.ui.url") + "/feedback"); email.send(); } catch (Exception e) { @@ -1842,7 +1845,7 @@ public class ItemImportServiceImpl implements ItemImportService, InitializingBea @Override public String getImportUploadableDirectory(EPerson ePerson) throws Exception { - String uploadDir = ConfigurationManager.getProperty("org.dspace.app.batchitemimport.work.dir"); + String uploadDir = configurationService.getProperty("org.dspace.app.batchitemimport.work.dir"); if (uploadDir == null) { throw new Exception( "A dspace.cfg entry for 'org.dspace.app.batchitemimport.work.dir' does not exist."); diff --git a/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java b/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java index b51212ea2f..5c2138a590 100644 --- a/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java +++ b/dspace-api/src/main/java/org/dspace/app/itemupdate/MetadataUtilities.java @@ -38,8 +38,8 @@ import org.dspace.content.MetadataSchemaEnum; import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; +import org.dspace.services.factory.DSpaceServicesFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -226,7 +226,9 @@ public class MetadataUtilities { if (language == null) { language = "en"; } else if ("".equals(language)) { - language = ConfigurationManager.getProperty("default.language"); + language = DSpaceServicesFactory.getInstance() + .getConfigurationService() + .getProperty("default.language"); } DtoMetadata dtom = DtoMetadata.create(schema, element, qualifier, language, value); diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/BrandedPreviewJPEGFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/BrandedPreviewJPEGFilter.java index dadd8f2a92..7b082c6c21 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/BrandedPreviewJPEGFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/BrandedPreviewJPEGFilter.java @@ -12,7 +12,8 @@ import java.io.InputStream; import javax.imageio.ImageIO; import org.dspace.content.Item; -import org.dspace.core.ConfigurationManager; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /** * Filter image bitstreams, scaling the image to be within the bounds of @@ -66,17 +67,19 @@ public class BrandedPreviewJPEGFilter extends MediaFilter { BufferedImage buf = ImageIO.read(source); // get config params - float xmax = (float) ConfigurationManager + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); + float xmax = (float) configurationService .getIntProperty("webui.preview.maxwidth"); - float ymax = (float) ConfigurationManager + float ymax = (float) configurationService .getIntProperty("webui.preview.maxheight"); - boolean blurring = (boolean) ConfigurationManager + boolean blurring = (boolean) configurationService .getBooleanProperty("webui.preview.blurring"); - boolean hqscaling = (boolean) ConfigurationManager + boolean hqscaling = (boolean) configurationService .getBooleanProperty("webui.preview.hqscaling"); - int brandHeight = ConfigurationManager.getIntProperty("webui.preview.brand.height"); - String brandFont = ConfigurationManager.getProperty("webui.preview.brand.font"); - int brandFontPoint = ConfigurationManager.getIntProperty("webui.preview.brand.fontpoint"); + int brandHeight = configurationService.getIntProperty("webui.preview.brand.height"); + String brandFont = configurationService.getProperty("webui.preview.brand.font"); + int brandFontPoint = configurationService.getIntProperty("webui.preview.brand.fontpoint"); JPEGFilter jpegFilter = new JPEGFilter(); return jpegFilter diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java index 27413544b9..a79fd42d59 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java @@ -19,8 +19,9 @@ import org.dspace.content.Bundle; import org.dspace.content.Item; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; import org.im4java.core.ConvertCmd; import org.im4java.core.IM4JavaException; import org.im4java.core.IMOperation; @@ -33,36 +34,18 @@ import org.im4java.process.ProcessStarter; * no bigger than. Creates only JPEGs. */ public abstract class ImageMagickThumbnailFilter extends MediaFilter { - protected static int width = 180; - protected static int height = 120; - private static boolean flatten = true; - static String bitstreamDescription = "IM Thumbnail"; - static final String defaultPattern = "Generated Thumbnail"; - static Pattern replaceRegex = Pattern.compile(defaultPattern); + private static final int DEFAULT_WIDTH = 180; + private static final int DEFAULT_HEIGHT = 120; + static final String DEFAULT_PATTERN = "Generated Thumbnail"; protected final ItemService itemService = ContentServiceFactory.getInstance().getItemService(); + protected static final ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); - static String cmyk_profile; - static String srgb_profile; + protected static final String PRE = ImageMagickThumbnailFilter.class.getName(); static { - String pre = ImageMagickThumbnailFilter.class.getName(); - String s = ConfigurationManager.getProperty(pre + ".ProcessStarter"); + String s = configurationService.getProperty(PRE + ".ProcessStarter"); ProcessStarter.setGlobalSearchPath(s); - width = ConfigurationManager.getIntProperty("thumbnail.maxwidth", width); - height = ConfigurationManager.getIntProperty("thumbnail.maxheight", height); - flatten = ConfigurationManager.getBooleanProperty(pre + ".flatten", flatten); - String description = ConfigurationManager.getProperty(pre + ".bitstreamDescription"); - cmyk_profile = ConfigurationManager.getProperty(pre + ".cmyk_profile"); - srgb_profile = ConfigurationManager.getProperty(pre + ".srgb_profile"); - if (description != null) { - bitstreamDescription = description; - } - try { - String patt = ConfigurationManager.getProperty(pre + ".replaceRegex"); - replaceRegex = Pattern.compile(patt == null ? defaultPattern : patt); - } catch (PatternSyntaxException e) { - System.err.println("Invalid thumbnail replacement pattern: " + e.getMessage()); - } } public ImageMagickThumbnailFilter() { @@ -94,7 +77,7 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter { */ @Override public String getDescription() { - return bitstreamDescription; + return configurationService.getProperty(PRE + ".bitstreamDescription", "IM Thumbnail"); } public File inputStreamToTempFile(InputStream source, String prefix, String suffix) throws IOException { @@ -120,7 +103,8 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter { IMOperation op = new IMOperation(); op.autoOrient(); op.addImage(f.getAbsolutePath()); - op.thumbnail(width, height); + op.thumbnail(configurationService.getIntProperty("thumbnail.maxwidth", DEFAULT_WIDTH), + configurationService.getIntProperty("thumbnail.maxheight", DEFAULT_HEIGHT)); op.addImage(f2.getAbsolutePath()); if (verbose) { System.out.println("IM Thumbnail Param: " + op); @@ -137,11 +121,14 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter { IMOperation op = new IMOperation(); String s = "[" + page + "]"; op.addImage(f.getAbsolutePath() + s); - if (flatten) { + if (configurationService.getBooleanProperty(PRE + ".flatten", true)) { op.flatten(); } + // PDFs using the CMYK color system can be handled specially if // profiles are defined + String cmyk_profile = configurationService.getProperty(PRE + ".cmyk_profile"); + String srgb_profile = configurationService.getProperty(PRE + ".srgb_profile"); if (cmyk_profile != null && srgb_profile != null) { Info imageInfo = new Info(f.getAbsolutePath() + s, true); String imageClass = imageInfo.getImageClass(); @@ -174,24 +161,32 @@ public abstract class ImageMagickThumbnailFilter extends MediaFilter { String description = bit.getDescription(); // If anything other than a generated thumbnail // is found, halt processing + Pattern replaceRegex; + try { + String patt = configurationService.getProperty(PRE + ".replaceRegex", DEFAULT_PATTERN); + replaceRegex = Pattern.compile(patt == null ? DEFAULT_PATTERN : patt); + } catch (PatternSyntaxException e) { + System.err.println("Invalid thumbnail replacement pattern: " + e.getMessage()); + throw e; + } if (description != null) { if (replaceRegex.matcher(description).matches()) { if (verbose) { - System.out.println(description + " " + nsrc - + " matches pattern and is replacable."); + System.out.format("%s %s matches pattern and is replacable.%n", + description, nsrc); } continue; } - if (description.equals(bitstreamDescription)) { + if (description.equals(getDescription())) { if (verbose) { - System.out.println(bitstreamDescription + " " + nsrc - + " is replacable."); + System.out.format("%s %s is replaceable.%n", + getDescription(), nsrc); } continue; } } - System.out.println("Custom Thumbnail exists for " + nsrc + " for item " - + item.getHandle() + ". Thumbnail will not be generated. "); + System.out.format("Custom Thumbnail exists for %s for item %s. Thumbnail will not be generated.%n", + nsrc, item.getHandle()); return false; } } diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/JPEGFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/JPEGFilter.java index 67a266ea26..502f71eb5c 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/JPEGFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/JPEGFilter.java @@ -22,7 +22,8 @@ import java.io.InputStream; import javax.imageio.ImageIO; import org.dspace.content.Item; -import org.dspace.core.ConfigurationManager; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /** * Filter image bitstreams, scaling the image to be within the bounds of @@ -80,13 +81,15 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats public InputStream getThumb(Item currentItem, BufferedImage buf, boolean verbose) throws Exception { // get config params - float xmax = (float) ConfigurationManager + final ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); + float xmax = (float) configurationService .getIntProperty("thumbnail.maxwidth"); - float ymax = (float) ConfigurationManager + float ymax = (float) configurationService .getIntProperty("thumbnail.maxheight"); - boolean blurring = (boolean) ConfigurationManager + boolean blurring = (boolean) configurationService .getBooleanProperty("thumbnail.blurring"); - boolean hqscaling = (boolean) ConfigurationManager + boolean hqscaling = (boolean) configurationService .getBooleanProperty("thumbnail.hqscaling"); return getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, 0, 0, null); @@ -169,9 +172,11 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats g2d.drawImage(buf, 0, 0, (int) xsize, (int) ysize, null); if (brandHeight != 0) { + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); Brand brand = new Brand((int) xsize, brandHeight, new Font(brandFont, Font.PLAIN, brandFontPoint), 5); - BufferedImage brandImage = brand.create(ConfigurationManager.getProperty("webui.preview.brand"), - ConfigurationManager.getProperty("webui.preview.brand.abbrev"), + BufferedImage brandImage = brand.create(configurationService.getProperty("webui.preview.brand"), + configurationService.getProperty("webui.preview.brand.abbrev"), currentItem == null ? "" : "hdl:" + currentItem.getHandle()); g2d.drawImage(brandImage, (int) 0, (int) ysize, (int) xsize, (int) 20, null); diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java index 21d120dd4c..c90d7c5a6e 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/PDFFilter.java @@ -21,7 +21,8 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException; import org.apache.pdfbox.text.PDFTextStripper; import org.dspace.content.Item; -import org.dspace.core.ConfigurationManager; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /* * @@ -72,8 +73,10 @@ public class PDFFilter extends MediaFilter { @Override public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose) throws Exception { + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); try { - boolean useTemporaryFile = ConfigurationManager.getBooleanProperty("pdffilter.largepdfs", false); + boolean useTemporaryFile = configurationService.getBooleanProperty("pdffilter.largepdfs", false); // get input stream from bitstream // pass to filter, get string back @@ -124,7 +127,7 @@ public class PDFFilter extends MediaFilter { } } catch (OutOfMemoryError oome) { log.error("Error parsing PDF document " + oome.getMessage(), oome); - if (!ConfigurationManager.getBooleanProperty("pdffilter.skiponmemoryexception", false)) { + if (!configurationService.getBooleanProperty("pdffilter.skiponmemoryexception", false)) { throw oome; } } diff --git a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java index 5d22efaa7a..7b63d3ea8d 100644 --- a/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java +++ b/dspace-api/src/main/java/org/dspace/app/requestitem/RequestItemHelpdeskStrategy.java @@ -10,13 +10,13 @@ package org.dspace.app.requestitem; import java.sql.SQLException; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.dspace.content.Item; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.core.I18nUtil; import org.dspace.eperson.EPerson; import org.dspace.eperson.service.EPersonService; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; import org.springframework.beans.factory.annotation.Autowired; /** @@ -30,9 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired; * @author Peter Dietz */ public class RequestItemHelpdeskStrategy extends RequestItemSubmitterStrategy { - - private Logger log = org.apache.logging.log4j.LogManager.getLogger(RequestItemHelpdeskStrategy.class); - @Autowired(required = true) protected EPersonService ePersonService; @@ -41,9 +38,11 @@ public class RequestItemHelpdeskStrategy extends RequestItemSubmitterStrategy { @Override public RequestItemAuthor getRequestItemAuthor(Context context, Item item) throws SQLException { - boolean helpdeskOverridesSubmitter = ConfigurationManager + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); + boolean helpdeskOverridesSubmitter = configurationService .getBooleanProperty("request.item.helpdesk.override", false); - String helpDeskEmail = ConfigurationManager.getProperty("mail.helpdesk"); + String helpDeskEmail = configurationService.getProperty("mail.helpdesk"); if (helpdeskOverridesSubmitter && StringUtils.isNotBlank(helpDeskEmail)) { return getHelpDeskPerson(context, helpDeskEmail); @@ -64,10 +63,8 @@ public class RequestItemHelpdeskStrategy extends RequestItemSubmitterStrategy { * @throws SQLException if database error */ public RequestItemAuthor getHelpDeskPerson(Context context, String helpDeskEmail) throws SQLException { - EPerson helpdeskEPerson = null; - context.turnOffAuthorisationSystem(); - helpdeskEPerson = ePersonService.findByEmail(context, helpDeskEmail); + EPerson helpdeskEPerson = ePersonService.findByEmail(context, helpDeskEmail); context.restoreAuthSystemState(); if (helpdeskEPerson != null) { 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 36c0c70f6d..4cc2de7589 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 @@ -16,8 +16,10 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.dspace.core.ConfigurationManager; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; public class SHERPAService { private CloseableHttpClient client = null; @@ -29,7 +31,7 @@ public class SHERPAService { /** * log4j category */ - private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(SHERPAService.class); + private static final Logger log = LogManager.getLogger(SHERPAService.class); public SHERPAService() { HttpClientBuilder builder = HttpClientBuilder.create(); @@ -43,8 +45,10 @@ public class SHERPAService { public SHERPAResponse searchByJournalISSN(String query) { - String endpoint = ConfigurationManager.getProperty("sherpa.romeo.url"); - String apiKey = ConfigurationManager.getProperty("sherpa.romeo.apikey"); + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); + String endpoint = configurationService.getProperty("sherpa.romeo.url"); + String apiKey = configurationService.getProperty("sherpa.romeo.apikey"); HttpGet method = null; SHERPAResponse sherpaResponse = null; diff --git a/dspace-api/src/main/java/org/dspace/app/statistics/CreateStatReport.java b/dspace-api/src/main/java/org/dspace/app/statistics/CreateStatReport.java index 29e9065a15..0ed78d6120 100644 --- a/dspace-api/src/main/java/org/dspace/app/statistics/CreateStatReport.java +++ b/dspace-api/src/main/java/org/dspace/app/statistics/CreateStatReport.java @@ -18,8 +18,9 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /** * This class allows the running of the DSpace statistic tools @@ -56,7 +57,7 @@ public class CreateStatReport { /** * File suffix for log files */ - private static String outputSuffix = ".dat"; + private static final String outputSuffix = ".dat"; /** * User context @@ -66,9 +67,6 @@ public class CreateStatReport { /** * the config file from which to configure the analyser */ - private static String configFile = ConfigurationManager.getProperty("dspace.dir") + - File.separator + "config" + File.separator + - "dstat.cfg"; /** * Default constructor @@ -81,8 +79,12 @@ public class CreateStatReport { * Usage: java CreateStatReport -r */ public static void main(String[] argv) throws Exception { + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); // Open the statistics config file + final String configFile = configurationService.getProperty("dspace.dir") + + File.separator + "config" + File.separator + "dstat.cfg"; FileInputStream fis = new java.io.FileInputStream(new File(configFile)); Properties config = new Properties(); config.load(fis); @@ -108,8 +110,8 @@ public class CreateStatReport { context.turnOffAuthorisationSystem(); //get paths to directories - outputLogDirectory = ConfigurationManager.getProperty("log.report.dir") + File.separator; - outputReportDirectory = ConfigurationManager.getProperty("report.dir") + File.separator; + outputLogDirectory = configurationService.getProperty("log.report.dir") + File.separator; + outputReportDirectory = configurationService.getProperty("report.dir") + File.separator; //read in command line variable to determine which statistic to run CommandLineParser parser = new PosixParser(); diff --git a/dspace-api/src/main/java/org/dspace/app/statistics/HTMLReport.java b/dspace-api/src/main/java/org/dspace/app/statistics/HTMLReport.java index a555ae55e7..368f3dea5e 100644 --- a/dspace-api/src/main/java/org/dspace/app/statistics/HTMLReport.java +++ b/dspace-api/src/main/java/org/dspace/app/statistics/HTMLReport.java @@ -20,7 +20,8 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.dspace.core.ConfigurationManager; +import org.dspace.services.ConfigurationService; +import org.dspace.services.factory.DSpaceServicesFactory; /** * This class provides HTML reports for the ReportGenerator class @@ -34,7 +35,7 @@ public class HTMLReport implements Report { /** * a list of the statistic blocks being managed by this class */ - private List blocks = new ArrayList(); + private final List blocks = new ArrayList<>(); /** * the title for the page @@ -59,7 +60,9 @@ public class HTMLReport implements Report { /** * the output file to which to write aggregation data */ - private String output = ConfigurationManager.getProperty("dspace.dir") + + ConfigurationService configurationService + = DSpaceServicesFactory.getInstance().getConfigurationService(); + private String output = configurationService.getProperty("dspace.dir") + File.separator + "log" + File.separator + "report"; /** @@ -82,7 +85,7 @@ public class HTMLReport implements Report { */ @Override public String render() { - StringBuffer frag = new StringBuffer(); + StringBuilder frag = new StringBuilder(); // get the page headings frag.append(header(pageTitle)); @@ -140,7 +143,7 @@ public class HTMLReport implements Report { * @return an HTML string providing internal page navigation */ public String navigation() { - StringBuffer frag = new StringBuffer(); + StringBuilder frag = new StringBuilder(); frag.append("
"); frag.append("General Overview"); @@ -173,7 +176,6 @@ public class HTMLReport implements Report { @Override public void addBlock(Statistics stat) { blocks.add(stat); - return; } @@ -207,7 +209,7 @@ public class HTMLReport implements Report { */ @Override public String dateRange() { - StringBuffer frag = new StringBuffer(); + StringBuilder frag = new StringBuilder(); DateFormat df = DateFormat.getDateInstance(); frag.append("
"); @@ -255,7 +257,6 @@ public class HTMLReport implements Report { if (pageTitle == null) { pageTitle = mainTitle; } - return; } @@ -280,7 +281,7 @@ public class HTMLReport implements Report { // FIXME: this need to be figured out to integrate nicely into the // whole JSTL thing, but for the moment it's just going to deliver // some styles - StringBuffer frag = new StringBuffer(); + StringBuilder frag = new StringBuilder(); frag.append("