org.dspace.core.LicenseServiceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dspace-api Show documentation
Show all versions of dspace-api Show documentation
DSpace core data model and service APIs.
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
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.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import org.dspace.core.service.LicenseService;
import org.dspace.services.factory.DSpaceServicesFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Encapsulate the deposit license.
*
* @author mhwood
*/
public class LicenseServiceImpl implements LicenseService {
private final Logger log = LoggerFactory.getLogger(LicenseServiceImpl.class);
/**
* The default license
*/
protected String license;
protected LicenseServiceImpl() {
}
@Override
public 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;
}
@Override
public String getLicenseText(String licenseFile) {
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) {
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) {
// ignore
}
}
if (ir != null) {
try {
ir.close();
} catch (IOException ioe) {
// ignore
}
}
if (is != null) {
try {
is.close();
} catch (IOException ioe) {
// ignore
}
}
}
return license;
}
/**
* Get the site-wide default license that submitters need to grant
*
* @return the default license
*/
@Override
public String getDefaultSubmissionLicense() {
if (null == license) {
init();
}
return license;
}
/**
* Load in the default license.
*/
protected void init() {
File licenseFile = new File(
DSpaceServicesFactory.getInstance().getConfigurationService().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) {
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) {
// ignore
}
}
if (ir != null) {
try {
ir.close();
} catch (IOException ioe) {
// ignore
}
}
if (fir != null) {
try {
fir.close();
} catch (IOException ioe) {
// ignore
}
}
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy