mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-17 15:03:18 +00:00
[DS-1390] stage 1: move license, email texts, news out of Configuration Manager.
This commit is contained in:
@@ -1344,7 +1344,7 @@ public class ItemExport
|
||||
try
|
||||
{
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(eperson);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_success"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_success"));
|
||||
email.addRecipient(eperson.getEmail());
|
||||
email.addArgument(ConfigurationManager.getProperty("dspace.url") + "/exportdownload/" + fileName);
|
||||
email.addArgument(ConfigurationManager.getProperty("org.dspace.app.itemexport.life.span.hours"));
|
||||
@@ -1376,7 +1376,7 @@ public class ItemExport
|
||||
try
|
||||
{
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(eperson);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_error"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "export_error"));
|
||||
email.addRecipient(eperson.getEmail());
|
||||
email.addArgument(error);
|
||||
email.addArgument(ConfigurationManager.getProperty("dspace.url") + "/feedback");
|
||||
|
@@ -31,6 +31,7 @@ import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.core.LicenseManager;
|
||||
import org.dspace.core.LogManager;
|
||||
import org.dspace.eperson.Group;
|
||||
import org.dspace.event.Event;
|
||||
@@ -782,7 +783,7 @@ public class Collection extends DSpaceObject
|
||||
if (license == null || license.trim().equals(""))
|
||||
{
|
||||
// Fallback to site-wide default
|
||||
license = ConfigurationManager.getDefaultSubmissionLicense();
|
||||
license = LicenseManager.getDefaultSubmissionLicense();
|
||||
}
|
||||
|
||||
return license;
|
||||
|
@@ -60,9 +60,6 @@ public class ConfigurationManager
|
||||
/** module configuration properties */
|
||||
private static Map<String, Properties> moduleProps = new HashMap<String, Properties>();
|
||||
|
||||
/** The default license */
|
||||
private static String license;
|
||||
|
||||
// limit of recursive depth of property variable interpolation in
|
||||
// configuration; anything greater than this is very likely to be a loop.
|
||||
private static final int RECURSION_LIMIT = 9;
|
||||
@@ -390,83 +387,6 @@ public class ConfigurationManager
|
||||
return longValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the License
|
||||
*
|
||||
* @param
|
||||
* licenseFile file name
|
||||
*
|
||||
* @return
|
||||
* license text
|
||||
*
|
||||
*/
|
||||
public static String getLicenseText(String licenseFile)
|
||||
{
|
||||
// Load in default license
|
||||
|
||||
InputStream is = null;
|
||||
InputStreamReader ir = null;
|
||||
BufferedReader br = null;
|
||||
try
|
||||
{
|
||||
is = new FileInputStream(licenseFile);
|
||||
ir = new InputStreamReader(is, "UTF-8");
|
||||
br = new BufferedReader(ir);
|
||||
String lineIn;
|
||||
license = "";
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
license = license + lineIn + '\n';
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
fatal("Can't load configuration", e);
|
||||
|
||||
// FIXME: Maybe something more graceful here, but with the
|
||||
// configuration we can't do anything
|
||||
throw new IllegalStateException("Failed to read default license.", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (br != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
br.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (ir != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
ir.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
if (is != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
is.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return license;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a configuration property as a boolean. True is indicated if the value
|
||||
* of the property is <code>TRUE</code> or <code>YES</code> (case
|
||||
@@ -586,229 +506,7 @@ public class ConfigurationManager
|
||||
return props == null ? null : props.propertyNames();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the template for an email message. The message is suitable for
|
||||
* inserting values using <code>java.text.MessageFormat</code>.
|
||||
*
|
||||
* @param emailFile
|
||||
* full name for the email template, for example "/dspace/config/emails/register".
|
||||
*
|
||||
* @return the email object, with the content and subject filled out from
|
||||
* the template
|
||||
*
|
||||
* @throws IOException
|
||||
* if the template couldn't be found, or there was some other
|
||||
* error reading the template
|
||||
*/
|
||||
public static Email getEmail(String emailFile) throws IOException
|
||||
{
|
||||
String charset = null;
|
||||
String subject = "";
|
||||
StringBuffer contentBuffer = new StringBuffer();
|
||||
|
||||
// Read in template
|
||||
InputStream is = null;
|
||||
InputStreamReader ir = null;
|
||||
BufferedReader br = null;
|
||||
try
|
||||
{
|
||||
is = new FileInputStream(emailFile);
|
||||
ir = new InputStreamReader(is, "UTF-8");
|
||||
br = new BufferedReader(ir);
|
||||
|
||||
boolean more = true;
|
||||
|
||||
while (more)
|
||||
{
|
||||
String line = br.readLine();
|
||||
|
||||
if (line == null)
|
||||
{
|
||||
more = false;
|
||||
}
|
||||
else if (line.toLowerCase().startsWith("subject:"))
|
||||
{
|
||||
// Extract the first subject line - everything to the right
|
||||
// of the colon, trimmed of whitespace
|
||||
subject = line.substring(8).trim();
|
||||
}
|
||||
else if (line.toLowerCase().startsWith("charset:"))
|
||||
{
|
||||
// Extract the character set from the email
|
||||
charset = line.substring(8).trim();
|
||||
}
|
||||
else if (!line.startsWith("#"))
|
||||
{
|
||||
// Add non-comment lines to the content
|
||||
contentBuffer.append(line);
|
||||
contentBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (br != null)
|
||||
{
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (ir != null)
|
||||
{
|
||||
try {
|
||||
ir.close();
|
||||
} catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (is != null)
|
||||
{
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
// Create an email
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setContent(contentBuffer.toString());
|
||||
|
||||
if (charset != null)
|
||||
{
|
||||
email.setCharset(charset);
|
||||
}
|
||||
|
||||
return email;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the site-wide default license that submitters need to grant
|
||||
*
|
||||
* @return the default license
|
||||
*/
|
||||
public static String getDefaultSubmissionLicense()
|
||||
{
|
||||
if (properties == null)
|
||||
{
|
||||
loadConfig(null);
|
||||
}
|
||||
|
||||
return license;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path for the news files.
|
||||
*
|
||||
*/
|
||||
public static String getNewsFilePath()
|
||||
{
|
||||
String filePath = ConfigurationManager.getProperty("dspace.dir")
|
||||
+ File.separator + "config" + File.separator;
|
||||
|
||||
return filePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads news from a text file.
|
||||
*
|
||||
* @param newsFile
|
||||
* name of the news file to read in, relative to the news file path.
|
||||
*/
|
||||
public static String readNewsFile(String newsFile)
|
||||
{
|
||||
String fileName = getNewsFilePath();
|
||||
|
||||
fileName += newsFile;
|
||||
|
||||
StringBuilder text = new StringBuilder();
|
||||
|
||||
try
|
||||
{
|
||||
// retrieve existing news from file
|
||||
FileInputStream fir = new FileInputStream(fileName);
|
||||
InputStreamReader ir = new InputStreamReader(fir, "UTF-8");
|
||||
BufferedReader br = new BufferedReader(ir);
|
||||
|
||||
String lineIn;
|
||||
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
text.append(lineIn);
|
||||
}
|
||||
|
||||
br.close();
|
||||
ir.close();
|
||||
fir.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
warn("news_read: " + e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
return text.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes news to a text file.
|
||||
*
|
||||
* @param newsFile
|
||||
* name of the news file to read in, relative to the news file path.
|
||||
* @param news
|
||||
* the text to be written to the file.
|
||||
*/
|
||||
public static String writeNewsFile(String newsFile, String news)
|
||||
{
|
||||
String fileName = getNewsFilePath();
|
||||
|
||||
fileName += newsFile;
|
||||
|
||||
try
|
||||
{
|
||||
// write the news out to the appropriate file
|
||||
FileOutputStream fos = new FileOutputStream(fileName);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.print(news);
|
||||
out.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
warn("news_write: " + e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
return news;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes license to a text file.
|
||||
*
|
||||
* @param licenseFile
|
||||
* name for the file int which license will be written,
|
||||
* relative to the current directory.
|
||||
*/
|
||||
public static void writeLicenseFile(String licenseFile, String newLicense)
|
||||
{
|
||||
try
|
||||
{
|
||||
// write the news out to the appropriate file
|
||||
FileOutputStream fos = new FileOutputStream(licenseFile);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.print(newLicense);
|
||||
out.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
warn("license_write: " + e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
license = newLicense;
|
||||
}
|
||||
|
||||
/** The configuration that was loaded. */
|
||||
private static File loadedFile = null;
|
||||
|
||||
/**
|
||||
@@ -883,10 +581,9 @@ public class ConfigurationManager
|
||||
}
|
||||
catch (IOException ioE)
|
||||
{
|
||||
fatal("Can't load configuration: " + (modFile == null ? "<unknown>" : modFile.getAbsolutePath()), ioE);
|
||||
fatal("Can't load configuration: " +
|
||||
(modFile == null ? "<unknown>" : modFile.getAbsolutePath()), ioE);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -988,8 +685,8 @@ public class ConfigurationManager
|
||||
{
|
||||
fatal("Can't load configuration: " + url, e);
|
||||
|
||||
// FIXME: Maybe something more graceful here, but with the
|
||||
// configuration we can't do anything
|
||||
// FIXME: Maybe something more graceful here, but without a
|
||||
// configuration we can't do anything.
|
||||
throw new IllegalStateException("Cannot load configuration: " + url, e);
|
||||
}
|
||||
finally
|
||||
@@ -1015,82 +712,12 @@ public class ConfigurationManager
|
||||
}
|
||||
}
|
||||
|
||||
// Load in default license
|
||||
File licenseFile = new File(getProperty("dspace.dir") + File.separator
|
||||
+ "config" + File.separator + "default.license");
|
||||
|
||||
FileInputStream fir = null;
|
||||
InputStreamReader ir = null;
|
||||
BufferedReader br = null;
|
||||
try
|
||||
{
|
||||
|
||||
fir = new FileInputStream(licenseFile);
|
||||
ir = new InputStreamReader(fir, "UTF-8");
|
||||
br = new BufferedReader(ir);
|
||||
String lineIn;
|
||||
license = "";
|
||||
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
license = license + lineIn + '\n';
|
||||
}
|
||||
|
||||
br.close();
|
||||
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
fatal("Can't load license: " + licenseFile.toString() , e);
|
||||
|
||||
// FIXME: Maybe something more graceful here, but with the
|
||||
// configuration we can't do anything
|
||||
throw new IllegalStateException("Cannot load license: " + licenseFile.toString(),e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (br != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
br.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (ir != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
ir.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (fir != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
fir.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Initialize Logging once ConfigurationManager is initialized.
|
||||
*
|
||||
* This is selection from a property in dspace.cfg, if the property
|
||||
* This is controlled by a property in dspace.cfg. If the property
|
||||
* is absent then nothing will be configured and the application
|
||||
* will use the defaults provided by log4j.
|
||||
*
|
||||
@@ -1104,7 +731,7 @@ public class ConfigurationManager
|
||||
* http://logging.apache.org/log4j/docs/manual.html
|
||||
*
|
||||
* If there is a problem with the file referred to in
|
||||
* "log.configuration" it needs to be sent to System.err
|
||||
* "log.configuration", it needs to be sent to System.err
|
||||
* so do not instantiate another Logging configuration.
|
||||
*
|
||||
*/
|
||||
@@ -1117,8 +744,8 @@ public class ConfigurationManager
|
||||
* system property set. Leave it upto log4j to properly init its logging
|
||||
* via classpath or system properties.
|
||||
*/
|
||||
info("Using default log4j provided log configuration," +
|
||||
"if unintended, check your dspace.cfg for (log.init.config)");
|
||||
info("Using default log4j provided log configuration." +
|
||||
" If unintended, check your dspace.cfg for (log.init.config)");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -7,9 +7,12 @@
|
||||
*/
|
||||
package org.dspace.core;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
@@ -95,16 +98,6 @@ import javax.mail.internet.MimeMultipart;
|
||||
*/
|
||||
public class Email
|
||||
{
|
||||
/*
|
||||
* Implementation note: It might be necessary to add a quick utility method
|
||||
* like "send(to, subject, message)". We'll see how far we get without it -
|
||||
* having all emails as templates in the config allows customisation and
|
||||
* internationalisation.
|
||||
*
|
||||
* Note that everything is stored and the run in send() so that only send()
|
||||
* throws a MessagingException.
|
||||
*/
|
||||
|
||||
/** The content of the message */
|
||||
private String content;
|
||||
|
||||
@@ -366,6 +359,78 @@ public class Email
|
||||
Transport.send(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the template for an email message. The message is suitable for
|
||||
* inserting values using <code>java.text.MessageFormat</code>.
|
||||
*
|
||||
* @param emailFile
|
||||
* full name for the email template, for example "/dspace/config/emails/register".
|
||||
*
|
||||
* @return the email object, with the content and subject filled out from
|
||||
* the template
|
||||
*
|
||||
* @throws IOException
|
||||
* if the template couldn't be found, or there was some other
|
||||
* error reading the template
|
||||
*/
|
||||
public static Email getEmail(String emailFile)
|
||||
throws IOException
|
||||
{
|
||||
String charset = null;
|
||||
String subject = "";
|
||||
StringBuilder contentBuffer = new StringBuilder();
|
||||
BufferedReader reader = null;
|
||||
try
|
||||
{
|
||||
reader = new BufferedReader(new FileReader(emailFile));
|
||||
boolean more = true;
|
||||
while (more)
|
||||
{
|
||||
String line = reader.readLine();
|
||||
if (line == null)
|
||||
{
|
||||
more = false;
|
||||
}
|
||||
else if (line.toLowerCase().startsWith("subject:"))
|
||||
{
|
||||
subject = line.substring(8).trim();
|
||||
}
|
||||
else if (line.toLowerCase().startsWith("charset:"))
|
||||
{
|
||||
charset = line.substring(8).trim();
|
||||
}
|
||||
else if (!line.startsWith("#"))
|
||||
{
|
||||
contentBuffer.append(line);
|
||||
contentBuffer.append("\n");
|
||||
}
|
||||
}
|
||||
} finally
|
||||
{
|
||||
if (reader != null)
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
}
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setContent(contentBuffer.toString());
|
||||
if (charset != null)
|
||||
{
|
||||
email.setCharset(charset);
|
||||
}
|
||||
return email;
|
||||
}
|
||||
/*
|
||||
* Implementation note: It might be necessary to add a quick utility method
|
||||
* like "send(to, subject, message)". We'll see how far we get without it -
|
||||
* having all emails as templates in the config allows customisation and
|
||||
* internationalisation.
|
||||
*
|
||||
* Note that everything is stored and the run in send() so that only send()
|
||||
* throws a MessagingException.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Test method to send an email to check email server settings
|
||||
*
|
||||
|
191
dspace-api/src/main/java/org/dspace/core/LicenseManager.java
Normal file
191
dspace-api/src/main/java/org/dspace/core/LicenseManager.java
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
package org.dspace.core;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Encapsulate the deposit license.
|
||||
*
|
||||
* @author mhwood
|
||||
*/
|
||||
public class LicenseManager
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(LicenseManager.class);
|
||||
|
||||
/** The default license */
|
||||
private static String license;
|
||||
|
||||
/**
|
||||
* Writes license to a text file.
|
||||
*
|
||||
* @param licenseFile
|
||||
* name for the file into which license will be written,
|
||||
* relative to the current directory.
|
||||
*/
|
||||
public static void writeLicenseFile(String licenseFile,
|
||||
String newLicense)
|
||||
{
|
||||
try
|
||||
{
|
||||
FileOutputStream fos = new FileOutputStream(licenseFile);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.print(newLicense);
|
||||
out.close();
|
||||
} catch (IOException e)
|
||||
{
|
||||
log.warn("license_write: " + e.getLocalizedMessage());
|
||||
}
|
||||
license = newLicense;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the License
|
||||
*
|
||||
* @param
|
||||
* licenseFile file name
|
||||
*
|
||||
* @return
|
||||
* license text
|
||||
*
|
||||
*/
|
||||
public static String getLicenseText(String licenseFile)
|
||||
{
|
||||
FileReader fr = null;
|
||||
BufferedReader br = null;
|
||||
try
|
||||
{
|
||||
fr = new FileReader(licenseFile);
|
||||
br = new BufferedReader(fr);
|
||||
String lineIn;
|
||||
license = "";
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
license = license + lineIn + '\n';
|
||||
}
|
||||
} catch (IOException e)
|
||||
{
|
||||
log.error("Can't load configuration", e);
|
||||
throw new IllegalStateException("Failed to read default license.", e);
|
||||
} finally
|
||||
{
|
||||
if (br != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
br.close();
|
||||
} catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (fr != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
fr.close();
|
||||
} catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
return license;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the site-wide default license that submitters need to grant
|
||||
*
|
||||
* @return the default license
|
||||
*/
|
||||
public static String getDefaultSubmissionLicense()
|
||||
{
|
||||
if (null == license)
|
||||
{
|
||||
init();
|
||||
}
|
||||
return license;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load in the default license.
|
||||
*/
|
||||
private static void init()
|
||||
{
|
||||
File licenseFile = new File(ConfigurationManager.getProperty("dspace.dir")
|
||||
+ File.separator + "config" + File.separator + "default.license");
|
||||
|
||||
FileInputStream fir = null;
|
||||
InputStreamReader ir = null;
|
||||
BufferedReader br = null;
|
||||
try
|
||||
{
|
||||
|
||||
fir = new FileInputStream(licenseFile);
|
||||
ir = new InputStreamReader(fir, "UTF-8");
|
||||
br = new BufferedReader(ir);
|
||||
String lineIn;
|
||||
LicenseManager.license = "";
|
||||
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
LicenseManager.license = LicenseManager.license + lineIn + '\n';
|
||||
}
|
||||
|
||||
br.close();
|
||||
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
log.error("Can't load license: " + licenseFile.toString() , e);
|
||||
|
||||
// FIXME: Maybe something more graceful here, but with the
|
||||
// configuration we can't do anything
|
||||
throw new IllegalStateException("Cannot load license: "
|
||||
+ licenseFile.toString(),e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (br != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
br.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (ir != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
ir.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (fir != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
fir.close();
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
107
dspace-api/src/main/java/org/dspace/core/NewsManager.java
Normal file
107
dspace-api/src/main/java/org/dspace/core/NewsManager.java
Normal file
@@ -0,0 +1,107 @@
|
||||
|
||||
package org.dspace.core;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Encapsulate access to the news texts.
|
||||
*
|
||||
* @author mhwood
|
||||
*/
|
||||
public class NewsManager
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(NewsManager.class);
|
||||
|
||||
/** Not instantiable. */
|
||||
private NewsManager() {}
|
||||
|
||||
/**
|
||||
* Reads news from a text file.
|
||||
*
|
||||
* @param newsFile
|
||||
* name of the news file to read in, relative to the news file path.
|
||||
*/
|
||||
public static String readNewsFile(String newsFile)
|
||||
{
|
||||
String fileName = getNewsFilePath();
|
||||
|
||||
fileName += newsFile;
|
||||
|
||||
StringBuilder text = new StringBuilder();
|
||||
|
||||
try
|
||||
{
|
||||
// retrieve existing news from file
|
||||
FileInputStream fir = new FileInputStream(fileName);
|
||||
InputStreamReader ir = new InputStreamReader(fir, "UTF-8");
|
||||
BufferedReader br = new BufferedReader(ir);
|
||||
|
||||
String lineIn;
|
||||
|
||||
while ((lineIn = br.readLine()) != null)
|
||||
{
|
||||
text.append(lineIn);
|
||||
}
|
||||
|
||||
br.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
log.warn("news_read: " + e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
return text.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes news to a text file.
|
||||
*
|
||||
* @param newsFile
|
||||
* name of the news file to read in, relative to the news file path.
|
||||
* @param news
|
||||
* the text to be written to the file.
|
||||
*/
|
||||
public static String writeNewsFile(String newsFile, String news)
|
||||
{
|
||||
String fileName = getNewsFilePath();
|
||||
|
||||
fileName += newsFile;
|
||||
|
||||
try
|
||||
{
|
||||
// write the news out to the appropriate file
|
||||
FileOutputStream fos = new FileOutputStream(fileName);
|
||||
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
||||
PrintWriter out = new PrintWriter(osr);
|
||||
out.print(news);
|
||||
out.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
log.warn("news_write: " + e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
return news;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path for the news files.
|
||||
*
|
||||
*/
|
||||
public static String getNewsFilePath()
|
||||
{
|
||||
String filePath = ConfigurationManager.getProperty("dspace.dir")
|
||||
+ File.separator + "config" + File.separator;
|
||||
|
||||
return filePath;
|
||||
}
|
||||
}
|
@@ -461,7 +461,7 @@ public class SolrServiceImpl implements SearchService, IndexingService {
|
||||
|
||||
if (recipient != null)
|
||||
{
|
||||
Email email = ConfigurationManager
|
||||
Email email = Email
|
||||
.getEmail(I18nUtil.getEmailFilename(
|
||||
Locale.getDefault(), "internal_error"));
|
||||
email.addRecipient(recipient);
|
||||
|
@@ -255,7 +255,7 @@ public class AccountManager
|
||||
.append("token=").append(rd.getStringColumn("token"))
|
||||
.toString();
|
||||
Locale locale = context.getCurrentLocale();
|
||||
Email bean = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(locale, isRegister ? "register"
|
||||
Email bean = Email.getEmail(I18nUtil.getEmailFilename(locale, isRegister ? "register"
|
||||
: "change_password"));
|
||||
bean.addRecipient(email);
|
||||
bean.addArgument(specialLink);
|
||||
|
@@ -72,7 +72,7 @@ public class EPersonConsumer implements Consumer
|
||||
try
|
||||
{
|
||||
EPerson eperson = EPerson.find(context, id);
|
||||
Email adminEmail = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "registration_notify"));
|
||||
Email adminEmail = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "registration_notify"));
|
||||
adminEmail.addRecipient(notifyRecipient);
|
||||
|
||||
adminEmail.addArgument(ConfigurationManager.getProperty("dspace.name"));
|
||||
|
@@ -471,7 +471,7 @@ public class Subscribe
|
||||
|
||||
} else {
|
||||
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "subscription"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "subscription"));
|
||||
email.addRecipient(eperson.getEmail());
|
||||
email.addArgument(emailText.toString());
|
||||
email.send();
|
||||
|
@@ -825,7 +825,7 @@ public class OAIHarvester {
|
||||
String recipient = ConfigurationManager.getProperty("alert.recipient");
|
||||
|
||||
if (recipient != null) {
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(Locale.getDefault(), "harvesting_error"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(Locale.getDefault(), "harvesting_error"));
|
||||
email.addRecipient(recipient);
|
||||
email.addArgument(targetCollection.getID());
|
||||
email.addArgument(new Date());
|
||||
|
@@ -844,7 +844,7 @@ public class DSIndexer
|
||||
.getProperty("alert.recipient");
|
||||
|
||||
if (recipient != null) {
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(Locale.getDefault(), "internal_error"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(Locale.getDefault(), "internal_error"));
|
||||
email.addRecipient(recipient);
|
||||
email.addArgument(ConfigurationManager
|
||||
.getProperty("dspace.url"));
|
||||
|
@@ -742,7 +742,7 @@ public class WorkflowManager
|
||||
EPerson ep = i.getSubmitter();
|
||||
// Get the Locale
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(ep);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_archive"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_archive"));
|
||||
|
||||
// Get the item handle to email to user
|
||||
String handle = HandleManager.findHandle(c, i);
|
||||
@@ -921,7 +921,7 @@ public class WorkflowManager
|
||||
for (int i = 0; i < epa.length; i++)
|
||||
{
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(epa[i]);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale,
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale,
|
||||
"flowtask_notify"));
|
||||
email.addArgument(title);
|
||||
email.addArgument(coll.getMetadata("name"));
|
||||
@@ -971,7 +971,7 @@ public class WorkflowManager
|
||||
for (int i = 0; i < epa.length; i++)
|
||||
{
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(epa[i]);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_task"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_task"));
|
||||
email.addArgument(title);
|
||||
email.addArgument(coll.getMetadata("name"));
|
||||
email.addArgument(submitter);
|
||||
@@ -1030,7 +1030,7 @@ public class WorkflowManager
|
||||
// Get rejector's name
|
||||
String rejector = getEPersonName(e);
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(e);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale,"submit_reject"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale,"submit_reject"));
|
||||
|
||||
email.addRecipient(getSubmitterEPerson(wi).getEmail());
|
||||
email.addArgument(title);
|
||||
|
@@ -156,7 +156,7 @@ public class WorkflowUtils extends Util{
|
||||
|
||||
if (recipient != null)
|
||||
{
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(c.getCurrentLocale(), "internal_error"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(c.getCurrentLocale(), "internal_error"));
|
||||
|
||||
email.addRecipient(recipient);
|
||||
email.addArgument(ConfigurationManager
|
||||
|
@@ -107,7 +107,7 @@ public class XmlWorkflowManager {
|
||||
// suppress email, and delete key
|
||||
noEMail.remove(wfi.getItem().getID());
|
||||
} else {
|
||||
Email mail = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(c.getCurrentLocale(), emailTemplate));
|
||||
Email mail = Email.getEmail(I18nUtil.getEmailFilename(c.getCurrentLocale(), emailTemplate));
|
||||
for (String argument : arguments) {
|
||||
mail.addArgument(argument);
|
||||
}
|
||||
@@ -396,7 +396,7 @@ public class XmlWorkflowManager {
|
||||
EPerson ep = i.getSubmitter();
|
||||
// Get the Locale
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(ep);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_archive"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale, "submit_archive"));
|
||||
|
||||
// Get the item handle to email to user
|
||||
String handle = HandleManager.findHandle(c, i);
|
||||
@@ -856,7 +856,7 @@ public class XmlWorkflowManager {
|
||||
// Get rejector's name
|
||||
String rejector = getEPersonName(e);
|
||||
Locale supportedLocale = I18nUtil.getEPersonLocale(e);
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(supportedLocale,"submit_reject"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(supportedLocale,"submit_reject"));
|
||||
|
||||
email.addRecipient(wi.getSubmitter().getEmail());
|
||||
email.addArgument(title);
|
||||
|
@@ -20,8 +20,8 @@ import static org.hamcrest.CoreMatchers.*;
|
||||
import mockit.*;
|
||||
import org.dspace.app.util.AuthorizeUtil;
|
||||
import org.dspace.authorize.AuthorizeManager;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.core.LicenseManager;
|
||||
|
||||
/**
|
||||
* Unit Tests for class Collection
|
||||
@@ -665,7 +665,7 @@ public class CollectionTest extends AbstractDSpaceObjectTest
|
||||
public void testGetLicense()
|
||||
{
|
||||
assertThat("testGetLicense 0", c.getLicense(), notNullValue());
|
||||
assertThat("testGetLicense 1", c.getLicense(), equalTo(ConfigurationManager.getDefaultSubmissionLicense()));
|
||||
assertThat("testGetLicense 1", c.getLicense(), equalTo(LicenseManager.getDefaultSubmissionLicense()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -13,13 +13,13 @@ import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.eperson.EPerson;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.AbstractUnitTest;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.core.LicenseManager;
|
||||
import org.junit.*;
|
||||
import static org.junit.Assert.* ;
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
@@ -81,7 +81,7 @@ public class LicenseUtilsTest extends AbstractUnitTest
|
||||
String templateLong = "Template license: %1$s %2$s %3$s %5$s %6$s %8$s %9$s %10$s %11$s";
|
||||
String templateResult = "Template license: first name last name test@email.com ";
|
||||
String templateLongResult = "Template license: first name last name test@email.com arg1 arg2 arg3 arg4";
|
||||
String defaultLicense = ConfigurationManager.getDefaultSubmissionLicense();
|
||||
String defaultLicense = LicenseManager.getDefaultSubmissionLicense();
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
//TODO: the tested method doesn't verify the input, will throw NPE if any parameter is null
|
||||
@@ -175,7 +175,7 @@ public class LicenseUtilsTest extends AbstractUnitTest
|
||||
|
||||
String template = "Template license: %1$s %2$s %3$s %5$s %6$s";
|
||||
String templateResult = "Template license: first name last name test@email.com ";
|
||||
String defaultLicense = ConfigurationManager.getDefaultSubmissionLicense();
|
||||
String defaultLicense = LicenseManager.getDefaultSubmissionLicense();
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
//TODO: the tested method doesn't verify the input, will throw NPE if any parameter is null
|
||||
@@ -231,7 +231,7 @@ public class LicenseUtilsTest extends AbstractUnitTest
|
||||
{
|
||||
context.turnOffAuthorisationSystem();
|
||||
Item item = Item.create(context);
|
||||
String defaultLicense = ConfigurationManager.getDefaultSubmissionLicense();
|
||||
String defaultLicense = LicenseManager.getDefaultSubmissionLicense();
|
||||
|
||||
LicenseUtils.grantLicense(context, item, defaultLicense);
|
||||
|
||||
|
@@ -109,7 +109,7 @@ public class FeedbackServlet extends DSpaceServlet
|
||||
// All data is there, send the email
|
||||
try
|
||||
{
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "feedback"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "feedback"));
|
||||
email.addRecipient(ConfigurationManager
|
||||
.getProperty("feedback.recipient"));
|
||||
|
||||
|
@@ -183,7 +183,7 @@ public class SuggestServlet extends DSpaceServlet
|
||||
// All data is there, send the email
|
||||
try
|
||||
{
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "suggest"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "suggest"));
|
||||
email.addRecipient(recipAddr); // recipient address
|
||||
email.addArgument(recipName); // 1st arg - recipient name
|
||||
email.addArgument(senderName); // 2nd arg - sender name
|
||||
|
@@ -21,6 +21,7 @@ import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.core.LicenseManager;
|
||||
|
||||
/**
|
||||
* Servlet for editing the default license
|
||||
@@ -59,7 +60,7 @@ public class LicenseEditServlet extends DSpaceServlet
|
||||
else if (!button.equals("submit_save"))
|
||||
{
|
||||
// Get the existing text from the ConfigurationManager
|
||||
String license = ConfigurationManager.getLicenseText(I18nUtil.getDefaultLicense(c));
|
||||
String license = LicenseManager.getLicenseText(I18nUtil.getDefaultLicense(c));
|
||||
|
||||
// Pass the existing license back to the JSP
|
||||
request.setAttribute("license", license);
|
||||
@@ -76,7 +77,7 @@ public class LicenseEditServlet extends DSpaceServlet
|
||||
if (license.trim().equals(""))
|
||||
{
|
||||
// Get the existing text from the ConfigurationManager
|
||||
license = ConfigurationManager.getLicenseText(I18nUtil.getDefaultLicense(c));
|
||||
license = LicenseManager.getLicenseText(I18nUtil.getDefaultLicense(c));
|
||||
|
||||
// Pass the existing license back to the JSP
|
||||
request.setAttribute("license", license);
|
||||
@@ -90,7 +91,7 @@ public class LicenseEditServlet extends DSpaceServlet
|
||||
else
|
||||
{
|
||||
// Write the string out to file
|
||||
ConfigurationManager.writeLicenseFile(I18nUtil.getDefaultLicense(c), license);
|
||||
LicenseManager.writeLicenseFile(I18nUtil.getDefaultLicense(c), license);
|
||||
|
||||
// Pass the existing license back to the JSP
|
||||
request.setAttribute("license", license);
|
||||
|
@@ -20,6 +20,7 @@ import org.dspace.app.webui.util.UIUtil;
|
||||
import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.NewsManager;
|
||||
|
||||
/**
|
||||
* Servlet for editing the front page news
|
||||
@@ -51,7 +52,7 @@ public class NewsEditServlet extends DSpaceServlet
|
||||
if (button.equals("submit_edit"))
|
||||
{
|
||||
//get the existing text from the file
|
||||
news = ConfigurationManager.readNewsFile(position);
|
||||
news = NewsManager.readNewsFile(position);
|
||||
|
||||
//pass the position back to the JSP
|
||||
request.setAttribute("position", position);
|
||||
@@ -69,7 +70,7 @@ public class NewsEditServlet extends DSpaceServlet
|
||||
news = (String) request.getParameter("news");
|
||||
|
||||
//write the string out to file
|
||||
ConfigurationManager.writeNewsFile(position, news);
|
||||
NewsManager.writeNewsFile(position, news);
|
||||
|
||||
JSPManager
|
||||
.showJSP(request, response, "/dspace-admin/news-main.jsp");
|
||||
|
@@ -374,7 +374,7 @@ public class UIUtil extends Util
|
||||
|
||||
if (recipient != null)
|
||||
{
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(locale, "internal_error"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(locale, "internal_error"));
|
||||
email.addRecipient(recipient);
|
||||
email.addArgument(ConfigurationManager
|
||||
.getProperty("dspace.url"));
|
||||
|
@@ -20,6 +20,8 @@ import org.dspace.authorize.AuthorizeManager;
|
||||
import org.dspace.content.Community;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.LicenseManager;
|
||||
import org.dspace.core.NewsManager;
|
||||
import org.jdom.Element;
|
||||
|
||||
|
||||
@@ -143,15 +145,15 @@ class DAVSite extends DAVResource
|
||||
}
|
||||
else if (elementsEqualIsh(property, news_topProperty))
|
||||
{
|
||||
value = ConfigurationManager.readNewsFile("news-top.html");
|
||||
value = NewsManager.readNewsFile("news-top.html");
|
||||
}
|
||||
else if (elementsEqualIsh(property, news_sideProperty))
|
||||
{
|
||||
value = ConfigurationManager.readNewsFile("news-side.html");
|
||||
value = NewsManager.readNewsFile("news-side.html");
|
||||
}
|
||||
else if (elementsEqualIsh(property, default_licenseProperty))
|
||||
{
|
||||
value = ConfigurationManager.getDefaultSubmissionLicense();
|
||||
value = LicenseManager.getDefaultSubmissionLicense();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -186,7 +188,7 @@ class DAVSite extends DAVResource
|
||||
throw new DAVStatusException(HttpServletResponse.SC_FORBIDDEN,
|
||||
"Not authorized to modify this property.");
|
||||
}
|
||||
ConfigurationManager.writeNewsFile("news-top.html", newValue);
|
||||
NewsManager.writeNewsFile("news-top.html", newValue);
|
||||
}
|
||||
else if (elementsEqualIsh(prop, news_sideProperty))
|
||||
{
|
||||
@@ -195,7 +197,7 @@ class DAVSite extends DAVResource
|
||||
throw new DAVStatusException(HttpServletResponse.SC_FORBIDDEN,
|
||||
"Not authorized to modify this property.");
|
||||
}
|
||||
ConfigurationManager.writeNewsFile("news-side.html", newValue);
|
||||
NewsManager.writeNewsFile("news-side.html", newValue);
|
||||
}
|
||||
else if (elementsEqualIsh(prop, displaynameProperty))
|
||||
{
|
||||
|
@@ -128,7 +128,7 @@ public class SendFeedbackAction extends AbstractAction
|
||||
}
|
||||
|
||||
// All data is there, send the email
|
||||
Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "feedback"));
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "feedback"));
|
||||
email.addRecipient(ConfigurationManager
|
||||
.getProperty("feedback.recipient"));
|
||||
|
||||
|
Reference in New Issue
Block a user