Skip to content

Commit

Permalink
Improve log messages in DOIEZIDServiceBean IQSS#2277 IQSS#775
Browse files Browse the repository at this point in the history
Change INFO messages to WARNINGs when something went wrong;

use log message templates instead of concatenation, and the Throwable variant when
a Throwable is passed.

Improve formatting, add some javadoc.
  • Loading branch information
bencomp committed Jul 31, 2015
1 parent 7dfd71a commit bb53bce
Showing 1 changed file with 124 additions and 105 deletions.
229 changes: 124 additions & 105 deletions src/main/java/edu/harvard/iq/dataverse/DOIEZIdServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,142 +30,164 @@ public class DOIEZIdServiceBean {
@EJB
SettingsServiceBean settingsService;
EZIDService ezidService;
EZIDServiceRequest ezidServiceRequest;
String baseURLString = "https://ezid.cdlib.org";
EZIDServiceRequest ezidServiceRequest;
String baseURLString = "https://ezid.cdlib.org";
private static final Logger logger = Logger.getLogger("edu.harvard.iq.dvn.core.index.DOIEZIdServiceBean");

// get username and password from system properties
private String DOISHOULDER = "";
private String USERNAME = "";
private String PASSWORD = "";
private String PASSWORD = "";

public DOIEZIdServiceBean(){
public DOIEZIdServiceBean() {
baseURLString = System.getProperty("doi.baseurlstring");
ezidService = new EZIDService (baseURLString);
ezidService = new EZIDService (baseURLString);
USERNAME = System.getProperty("doi.username");
PASSWORD = System.getProperty("doi.password");
logger.log(Level.FINE, "baseURLString " + baseURLString);
logger.log(Level.FINE, "Using baseURLString {0}", baseURLString);
try {
ezidService.login(USERNAME, PASSWORD);
} catch(Exception e){
logger.log(Level.INFO, "login failed ");
logger.log(Level.INFO, "String " + e.toString() );
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
ezidService.login(USERNAME, PASSWORD);
} catch (EZIDException e) {
logger.log(Level.WARNING, "login failed ");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
}
}

public String createIdentifier(Dataset dataset) {
String retString = "";
String identifier = getIdentifierFromDataset(dataset);
HashMap metadata = getMetadataFromStudyForCreateIndicator(dataset);
metadata.put("_status", "reserved");;
HashMap<String, String> metadata = getMetadataFromStudyForCreateIndicator(dataset);
metadata.put("_status", "reserved");
try {
retString = ezidService.createIdentifier(identifier, metadata);
logger.log(Level.FINE, "create DOI identifier retString : " + retString);
} catch (EZIDException e) {
logger.log(Level.INFO, "Identifier not created: create failed");
logger.log(Level.INFO, "String " + e.toString());
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
logger.log(Level.WARNING, "Identifier not created: create failed");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
return "Identifier not created " + e.getLocalizedMessage();
}
return retString;
}


public HashMap getIdentifierMetadata(Dataset dataset){
String identifier = getIdentifierFromDataset(dataset);
HashMap metadata = new HashMap();
try {
metadata = ezidService.getMetadata(identifier);
} catch (EZIDException e){
logger.log(Level.INFO, "getIdentifierMetadata failed");
logger.log(Level.INFO, "String " + e.toString() );
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
public HashMap<String, String> getIdentifierMetadata(Dataset dataset) {
String identifier = getIdentifierFromDataset(dataset);
HashMap<String, String> metadata = new HashMap<>();
try {
metadata = ezidService.getMetadata(identifier);
} catch (EZIDException e) {
logger.log(Level.WARNING, "getIdentifierMetadata failed");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
return metadata;
}
return metadata;
return metadata;
}

public HashMap lookupMetadataFromIdentifier(String protocol, String authority, String separator, String identifier){
String identifierOut = getIdentifierForLookup( protocol, authority, separator, identifier);
HashMap metadata = new HashMap();
try {
metadata = ezidService.getMetadata(identifierOut);
} catch (EZIDException e){

/**
* Looks up the metadata for a Global Identifier
* @param protocol the identifier system, e.g. "doi"
* @param authority the namespace that the authority manages in the identifier system
* @param separator the string that separates authority from local identifier part
* @param identifier the local identifier part
* @return a Map of metadata. It is empty when the lookup failed, e.g. when
* the identifier does not exist.
*/
public HashMap<String, String> lookupMetadataFromIdentifier(String protocol, String authority, String separator, String identifier) {
String identifierOut = getIdentifierForLookup(protocol, authority, separator, identifier);
HashMap<String, String> metadata = new HashMap<>();
try {
metadata = ezidService.getMetadata(identifierOut);
} catch (EZIDException e) {
logger.log(Level.FINE, "None existing so we can use this identifier");
logger.log(Level.FINE, "identifier: " + identifierOut);
logger.log(Level.FINE, "identifier: {0}", identifierOut);
return metadata;
}
return metadata;
}
return metadata;
}


/**
* Concatenate the parts that make up a Global Identifier.
* @param protocol the identifier system, e.g. "doi"
* @param authority the namespace that the authority manages in the identifier system
* @param separator the string that separates authority from local identifier part
* @param identifier the local identifier part
* @return the Global Identifier, e.g. "doi:10.12345/67890"
*/
public String getIdentifierForLookup(String protocol, String authority, String separator, String identifier) {
return protocol + ":" + authority + separator + identifier;
}


public String modifyIdentifier(Dataset dataset, HashMap metadata ){
String identifier = getIdentifierFromDataset(dataset);
try {
ezidService.setMetadata(identifier, metadata);
return identifier;
} catch (EZIDException e){
logger.log(Level.INFO, "modifyMetadata failed");
logger.log(Level.INFO, "String " + e.toString() );
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());

/**
* Modifies the EZID metadata for a Dataset
* @param dataset the Dataset whose metadata needs to be modified
* @param metadata the new metadata for the Dataset
* @return the Dataset identifier, or null if the modification failed
*/
public String modifyIdentifier(Dataset dataset, HashMap<String, String> metadata) {
String identifier = getIdentifierFromDataset(dataset);
try {
ezidService.setMetadata(identifier, metadata);
return identifier;
} catch (EZIDException e) {
logger.log(Level.WARNING, "modifyMetadata failed");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
}
return null;
return null;
}

public void deleteIdentifier(Dataset datasetIn) {
String identifier = getIdentifierFromDataset(datasetIn);
HashMap doiMetadata = new HashMap();
HashMap<String, String> doiMetadata = new HashMap<>();
try {
doiMetadata = ezidService.getMetadata(identifier);
} catch (EZIDException e) {
logger.log(Level.INFO, "get matadata failed cannot delete");
logger.log(Level.INFO, "String " + e.toString());
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
logger.log(Level.WARNING, "get matadata failed cannot delete");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
return;
}

String idStatus = (String) doiMetadata.get("_status");
String idStatus = doiMetadata.get("_status");

if (idStatus.equals("reserved")) {
logger.log(Level.INFO, "Delete status is reserved..");
try {
ezidService.deleteIdentifier(identifier);
} catch (EZIDException e) {
logger.log(Level.INFO, "delete failed");
logger.log(Level.INFO, "String " + e.toString());
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
logger.log(Level.WARNING, "delete failed");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
}
return;
}
if (idStatus.equals("public")) {
//if public then it has been released set to unavaialble and reset target to n2t url
updateIdentifierStatus(datasetIn, "unavailable | withdrawn by author");
HashMap metadata = new HashMap();
HashMap<String, String> metadata = new HashMap<>();
metadata.put("_target", "http://ezid.cdlib.org/id/" + datasetIn.getProtocol() + ":" + datasetIn.getAuthority()
+ datasetIn.getDoiSeparator() + datasetIn.getIdentifier());
modifyIdentifier(datasetIn, metadata);
}
}

private HashMap getUpdateMetadataFromDataset(Dataset datasetIn){
HashMap<String, String> metadata = new HashMap<String, String>();
private HashMap<String, String> getUpdateMetadataFromDataset(Dataset datasetIn){
HashMap<String, String> metadata = new HashMap<>();

String authorString = datasetIn.getLatestVersion().getAuthorsStr();

Expand All @@ -180,54 +202,54 @@ private HashMap getUpdateMetadataFromDataset(Dataset datasetIn){
}
metadata.put("datacite.creator", authorString);
metadata.put("datacite.title", datasetIn.getLatestVersion().getTitle());
metadata.put("datacite.publisher", producerString);
metadata.put("datacite.publisher", producerString);

return metadata;

}

public HashMap getMetadataFromStudyForCreateIndicator(Dataset datasetIn) {
HashMap<String, String> metadata = new HashMap<String, String>();
public HashMap<String, String> getMetadataFromStudyForCreateIndicator(Dataset datasetIn) {
HashMap<String, String> metadata = new HashMap<>();

String authorString = datasetIn.getLatestVersion().getAuthorsStr();

if(authorString.isEmpty()) {
if (authorString.isEmpty()) {
authorString = ":unav";
}

String producerString = dataverseService.findRootDataverse().getName() + " Dataverse";

if(producerString.isEmpty()) {
if (producerString.isEmpty()) {
producerString = ":unav";
}
metadata.put("datacite.creator", authorString);
metadata.put("datacite.title", datasetIn.getLatestVersion().getTitle());
metadata.put("datacite.publisher", producerString);
metadata.put("datacite.publisher", producerString);
metadata.put("datacite.publicationyear", generateYear());
metadata.put("datacite.resourcetype", "Dataset");
String inetAddress = getSiteUrl();
String targetUrl = "";
String targetUrl = "";
DOISHOULDER = "doi:" + datasetIn.getAuthority();

if (inetAddress.equals("localhost")){
if (inetAddress.equals("localhost")) {
targetUrl ="http://localhost:8080" + "/dataset.xhtml?persistentId=" + DOISHOULDER
+ datasetIn.getDoiSeparator() + datasetIn.getIdentifier();
} else{
} else {
targetUrl = inetAddress + "/dataset.xhtml?persistentId=" + DOISHOULDER
+ datasetIn.getDoiSeparator() + datasetIn.getIdentifier();
}
metadata.put("_target", targetUrl);
return metadata;
}

public HashMap getMetadataFromDatasetForTargetURL(Dataset datasetIn) {
HashMap<String, String> metadata = new HashMap<String, String>();
public HashMap<String, String> getMetadataFromDatasetForTargetURL(Dataset datasetIn) {
HashMap<String, String> metadata = new HashMap<>();

String inetAddress = getSiteUrl();
String targetUrl = "";
String targetUrl = "";
DOISHOULDER = "doi:" + datasetIn.getAuthority();

if (inetAddress.equals("localhost")){
if (inetAddress.equals("localhost")){
targetUrl ="http://localhost:8080" + "/dataset.xhtml?persistentId=" + DOISHOULDER
+ datasetIn.getDoiSeparator() + datasetIn.getIdentifier();
} else{
Expand Down Expand Up @@ -255,34 +277,33 @@ public String getSiteUrl() {
return hostUrl;
}

private String getIdentifierFromDataset(Dataset dataset){
private String getIdentifierFromDataset(Dataset dataset) {
return dataset.getGlobalId();
}


public boolean publicizeIdentifier(Dataset studyIn) {

public boolean publicizeIdentifier(Dataset studyIn) {
return updateIdentifierStatus(studyIn, "public");
}

private boolean updateIdentifierStatus(Dataset dataset, String statusIn){
private boolean updateIdentifierStatus(Dataset dataset, String statusIn) {
String identifier = getIdentifierFromDataset(dataset);
HashMap metadata = getUpdateMetadataFromDataset(dataset);
HashMap<String, String> metadata = getUpdateMetadataFromDataset(dataset);
metadata.put("_status", statusIn);
try {
ezidService.setMetadata(identifier, metadata);
return true;
} catch (EZIDException e){
logger.log(Level.INFO, "modifyMetadata failed");
logger.log(Level.INFO, "String " + e.toString() );
logger.log(Level.INFO, "localized message " + e.getLocalizedMessage());
logger.log(Level.INFO, "cause " + e.getCause());
logger.log(Level.INFO, "message " + e.getMessage());
try {
ezidService.setMetadata(identifier, metadata);
return true;
} catch (EZIDException e) {
logger.log(Level.WARNING, "modifyMetadata failed");
logger.log(Level.WARNING, "String {0}", e.toString());
logger.log(Level.WARNING, "localized message {0}", e.getLocalizedMessage());
logger.log(Level.WARNING, "cause", e.getCause());
logger.log(Level.WARNING, "message {0}", e.getMessage());
return false;
}

}



public static String generateYear()
{
StringBuffer guid = new StringBuffer();
Expand All @@ -300,8 +321,6 @@ public static String generateYear()
return guid.toString();
}



public static String generateTimeString()
{
StringBuffer guid = new StringBuffer();
Expand All @@ -324,5 +343,5 @@ public static String generateTimeString()
guid.append(random);

return guid.toString();
}
}
}
}

0 comments on commit bb53bce

Please sign in to comment.