mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-17 06:53:09 +00:00
DS-1945 Add request_message to requestitem DB table
Also, refactored requestitem to be a dspace-api "model", moved all DB logic from XMLUI regarding this module to the dspace-api model. Add the requestitem.request_message to display in the contact-author form, so they can see what the original request message was.
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
package org.dspace.app.requestitem;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.Utils;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Object representing an Item Request
|
||||
*/
|
||||
public class RequestItem {
|
||||
private static Logger log = Logger.getLogger(RequestItem.class);
|
||||
|
||||
private int bitstreamId, itemID;
|
||||
private String reqEmail;
|
||||
private String reqName;
|
||||
private String reqMessage;
|
||||
private String token;
|
||||
private boolean allfiles;
|
||||
private Date decision_date;
|
||||
private boolean accept_request;
|
||||
|
||||
public RequestItem(int itemID, int bitstreamId, String reqEmail, String reqName, String reqMessage, boolean allfiles){
|
||||
this.itemID = itemID;
|
||||
this.bitstreamId = bitstreamId;
|
||||
this.reqEmail = reqEmail;
|
||||
this.reqName = reqName;
|
||||
this.reqMessage = reqMessage;
|
||||
this.allfiles = allfiles;
|
||||
}
|
||||
|
||||
private RequestItem(TableRow record) {
|
||||
this.itemID = record.getIntColumn("item_id");
|
||||
this.bitstreamId = record.getIntColumn("bitstream_id");
|
||||
this.token = record.getStringColumn("token");
|
||||
this.reqEmail = record.getStringColumn("request_email");
|
||||
this.reqName = record.getStringColumn("request_name");
|
||||
this.reqMessage = record.getStringColumn("request_message");
|
||||
this.allfiles = record.getBooleanColumn("allfiles");
|
||||
this.decision_date = record.getDateColumn("decision_date");
|
||||
this.accept_request = record.getBooleanColumn("accept_request");
|
||||
}
|
||||
|
||||
public static RequestItem findByToken(Context context, String token) {
|
||||
try {
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context, "requestitem", "token", token);
|
||||
return new RequestItem(requestItem);
|
||||
} catch (SQLException e) {
|
||||
log.error(e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save updates to the record. Only accept_request, and decision_date are set-able.
|
||||
* @param context
|
||||
*/
|
||||
public void update(Context context) {
|
||||
try {
|
||||
TableRow record = DatabaseManager.findByUnique(context, "requestitem", "token", token);
|
||||
|
||||
record.setColumn("accept_request", accept_request);
|
||||
record.setColumn("decision_date", decision_date);
|
||||
|
||||
DatabaseManager.update(context, record);
|
||||
|
||||
} catch (SQLException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a unique id of the request and put it into the DB
|
||||
* @param context
|
||||
* @return
|
||||
* @throws java.sql.SQLException
|
||||
*/
|
||||
public String getNewToken(Context context) throws SQLException
|
||||
{
|
||||
TableRow record = DatabaseManager.create(context, "requestitem");
|
||||
record.setColumn("token", Utils.generateHexKey());
|
||||
record.setColumn("bitstream_id", bitstreamId);
|
||||
record.setColumn("item_id", itemID);
|
||||
record.setColumn("allfiles", allfiles);
|
||||
record.setColumn("request_email", reqEmail);
|
||||
record.setColumn("request_name", reqName);
|
||||
record.setColumn("request_message", reqMessage);
|
||||
record.setColumnNull("accept_request");
|
||||
record.setColumn("request_date", new Date());
|
||||
record.setColumnNull("decision_date");
|
||||
record.setColumnNull("expires");
|
||||
|
||||
DatabaseManager.update(context, record);
|
||||
|
||||
if (log.isDebugEnabled())
|
||||
{
|
||||
log.debug("Created requestitem_token " + record.getIntColumn("requestitem_id")
|
||||
+ " with token " + record.getStringColumn("token") + "\"");
|
||||
}
|
||||
return record.getStringColumn("token");
|
||||
|
||||
}
|
||||
|
||||
public boolean isAllfiles() {
|
||||
return allfiles;
|
||||
}
|
||||
|
||||
public String getReqMessage() {
|
||||
return reqMessage;
|
||||
}
|
||||
|
||||
public String getReqName() {
|
||||
return reqName;
|
||||
}
|
||||
|
||||
public String getReqEmail() {
|
||||
return reqEmail;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public int getItemID() {
|
||||
return itemID;
|
||||
}
|
||||
|
||||
public int getBitstreamId() {
|
||||
return bitstreamId;
|
||||
}
|
||||
|
||||
public Date getDecision_date() {
|
||||
return decision_date;
|
||||
}
|
||||
|
||||
public void setDecision_date(Date decision_date) {
|
||||
this.decision_date = decision_date;
|
||||
}
|
||||
|
||||
public boolean isAccept_request() {
|
||||
return accept_request;
|
||||
}
|
||||
|
||||
public void setAccept_request(boolean accept_request) {
|
||||
this.accept_request = accept_request;
|
||||
}
|
||||
}
|
@@ -7,6 +7,7 @@ import org.apache.cocoon.util.HashUtil;
|
||||
import org.apache.excalibur.source.SourceValidity;
|
||||
import org.apache.excalibur.source.impl.validity.NOPValidity;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
|
||||
@@ -21,8 +22,6 @@ import org.dspace.content.service.ItemService;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.handle.HandleManager;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.dspace.utils.DSpace;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
@@ -105,10 +104,10 @@ public class ItemRequestContactAuthor extends AbstractDSpaceTransformer implemen
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
Context context = ContextUtil.obtainContext(objectModel);
|
||||
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context,
|
||||
"requestitem", "token", (String) request.getAttribute("token"));
|
||||
String token = (String) request.getAttribute("token");
|
||||
RequestItem requestItem = RequestItem.findByToken(context, token);
|
||||
|
||||
Item item = Item.find(context, requestItem.getIntColumn("item_id"));
|
||||
Item item = Item.find(context, requestItem.getItemID());
|
||||
|
||||
RequestItemAuthor requestItemAuthor = new DSpace()
|
||||
.getServiceManager()
|
||||
@@ -122,9 +121,9 @@ public class ItemRequestContactAuthor extends AbstractDSpaceTransformer implemen
|
||||
HandleManager.getCanonicalForm(item.getHandle()),
|
||||
requestItemAuthor.getFullName(),
|
||||
requestItemAuthor.getEmail(),
|
||||
requestItem.getStringColumn("request_name"),
|
||||
requestItem.getStringColumn("request_email"),
|
||||
"Not Yet Implemented"
|
||||
requestItem.getReqName(),
|
||||
requestItem.getReqEmail(),
|
||||
requestItem.getReqMessage()
|
||||
};
|
||||
|
||||
String subject = I18nUtil.getMessage("itemRequest.response.subject.contactAuthor");
|
||||
|
@@ -6,7 +6,7 @@ import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.util.HashUtil;
|
||||
import org.apache.excalibur.source.SourceValidity;
|
||||
import org.apache.excalibur.source.impl.validity.NOPValidity;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
|
||||
@@ -19,8 +19,6 @@ import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.dspace.utils.DSpace;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
@@ -34,8 +32,6 @@ import java.text.MessageFormat;
|
||||
*/
|
||||
public class ItemRequestContactRequester extends AbstractDSpaceTransformer implements CacheableProcessingComponent
|
||||
{
|
||||
//private static Logger log = Logger.getLogger(ItemRequestContactRequester.class);
|
||||
|
||||
/** Language Strings */
|
||||
private static final Message T_title =
|
||||
message("xmlui.ArtifactBrowser.ItemRequestContactRequester.title");
|
||||
@@ -103,10 +99,10 @@ public class ItemRequestContactRequester extends AbstractDSpaceTransformer imple
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
Context context = ContextUtil.obtainContext(objectModel);
|
||||
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context,
|
||||
"requestitem", "token", (String) request.getAttribute("token"));
|
||||
String token = (String) request.getAttribute("token");
|
||||
RequestItem requestItem = RequestItem.findByToken(context, token);
|
||||
|
||||
Item item = Item.find(context, requestItem.getIntColumn("item_id"));
|
||||
Item item = Item.find(context, requestItem.getItemID());
|
||||
|
||||
RequestItemAuthor requestItemAuthor = new DSpace()
|
||||
.getServiceManager()
|
||||
@@ -115,7 +111,7 @@ public class ItemRequestContactRequester extends AbstractDSpaceTransformer imple
|
||||
.getRequestItemAuthor(context, item);
|
||||
|
||||
Object[] args = new String[]{
|
||||
requestItem.getStringColumn("request_name"),
|
||||
requestItem.getReqName(),
|
||||
requestItemAuthor.getFullName(),
|
||||
requestItemAuthor.getEmail()
|
||||
};
|
||||
@@ -133,7 +129,7 @@ public class ItemRequestContactRequester extends AbstractDSpaceTransformer imple
|
||||
|
||||
Text toEmail = form.addItem().addText("to");
|
||||
toEmail.setLabel(T_toEmail);
|
||||
toEmail.setValue(requestItem.getStringColumn("request_email"));
|
||||
toEmail.setValue(requestItem.getReqEmail());
|
||||
toEmail.setDisabled(true);
|
||||
|
||||
Text subj = form.addItem().addText("subject");
|
||||
|
@@ -15,6 +15,7 @@ import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.environment.SourceResolver;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||
import org.dspace.app.xmlui.utils.ContextUtil;
|
||||
@@ -27,8 +28,6 @@ import org.dspace.core.Email;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.handle.HandleManager;
|
||||
import org.dspace.storage.bitstore.BitstreamStorageManager;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.dspace.utils.DSpace;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
@@ -67,9 +66,9 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
Context context = ContextUtil.obtainContext(objectModel);
|
||||
request.setAttribute("token", token);
|
||||
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context, "requestitem", "token", token);
|
||||
RequestItem requestItem = RequestItem.findByToken(context, token);
|
||||
String title;
|
||||
Item item = Item.find(context, requestItem.getIntColumn("item_id"));
|
||||
Item item = Item.find(context, requestItem.getItemID());
|
||||
DCValue[] titleDC = item.getDC("title", null, Item.ANY);
|
||||
if (titleDC != null || titleDC.length > 0)
|
||||
title=titleDC[0].value;
|
||||
@@ -149,7 +148,7 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
|
||||
|
||||
|
||||
private boolean processOpenAccessRequest(Context context,Request request, TableRow requestItem,Item item,String title) throws SQLException, IOException, MessagingException {
|
||||
private boolean processOpenAccessRequest(Context context,Request request, RequestItem requestItem,Item item,String title) throws SQLException, IOException, MessagingException {
|
||||
String name = request.getParameter("name");
|
||||
String mail = request.getParameter("email");
|
||||
|
||||
@@ -163,9 +162,9 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "request_item.admin"));
|
||||
email.addRecipient(requestItemAuthor.getEmail());
|
||||
|
||||
email.addArgument(Bitstream.find(context,requestItem.getIntColumn("bitstream_id")).getName());
|
||||
email.addArgument(Bitstream.find(context,requestItem.getBitstreamId()).getName());
|
||||
email.addArgument(HandleManager.getCanonicalForm(item.getHandle()));
|
||||
email.addArgument(requestItem.getStringColumn("token"));
|
||||
email.addArgument(requestItem.getToken());
|
||||
email.addArgument(name);
|
||||
email.addArgument(mail);
|
||||
|
||||
@@ -175,17 +174,17 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
return false;
|
||||
}
|
||||
|
||||
private void processSendDocuments(Context context,Request request, TableRow requestItem,Item item,String title) throws SQLException, MessagingException, IOException {
|
||||
private void processSendDocuments(Context context,Request request, RequestItem requestItem,Item item,String title) throws SQLException, MessagingException, IOException {
|
||||
String message = request.getParameter("message");
|
||||
String subject = request.getParameter("subject");
|
||||
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setContent("{0}");
|
||||
email.addRecipient(requestItem.getStringColumn("request_email"));
|
||||
email.addRecipient(requestItem.getReqEmail());
|
||||
email.addArgument(message);
|
||||
|
||||
if (requestItem.getBooleanColumn("allfiles")){
|
||||
if (requestItem.isAllfiles()){
|
||||
Bundle[] bundles = item.getBundles("ORIGINAL");
|
||||
for (int i = 0; i < bundles.length; i++){
|
||||
Bitstream[] bitstreams = bundles[i].getBitstreams();
|
||||
@@ -196,30 +195,31 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Bitstream bit = Bitstream.find(context,requestItem.getIntColumn("bitstream_id"));
|
||||
email.addAttachment(BitstreamStorageManager.retrieve(context, requestItem.getIntColumn("bitstream_id")), bit.getName(), bit.getFormat().getMIMEType());
|
||||
Bitstream bit = Bitstream.find(context,requestItem.getBitstreamId());
|
||||
email.addAttachment(BitstreamStorageManager.retrieve(context, requestItem.getBitstreamId()), bit.getName(), bit.getFormat().getMIMEType());
|
||||
}
|
||||
|
||||
email.send();
|
||||
requestItem.setColumn("decision_date",new Date());
|
||||
requestItem.setColumn("accept_request",true);
|
||||
DatabaseManager.update(context, requestItem);
|
||||
|
||||
requestItem.setDecision_date(new Date());
|
||||
requestItem.setAccept_request(true);
|
||||
requestItem.update(context);
|
||||
}
|
||||
|
||||
private void processDeny(Context context,Request request, TableRow requestItem,Item item,String title) throws SQLException, IOException, MessagingException {
|
||||
private void processDeny(Context context,Request request, RequestItem requestItem,Item item,String title) throws SQLException, IOException, MessagingException {
|
||||
String message = request.getParameter("message");
|
||||
String subject = request.getParameter("subject");
|
||||
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setContent("{0}");
|
||||
email.addRecipient(requestItem.getStringColumn("request_email"));
|
||||
email.addRecipient(requestItem.getReqEmail());
|
||||
email.addArgument(message);
|
||||
email.send();
|
||||
|
||||
requestItem.setColumn("decision_date",new Date());
|
||||
requestItem.setColumn("accept_request",false);
|
||||
DatabaseManager.update(context, requestItem);
|
||||
requestItem.setDecision_date(new Date());
|
||||
requestItem.setAccept_request(false);
|
||||
requestItem.update(context);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -230,14 +230,14 @@ public class ItemRequestResponseAction extends AbstractAction
|
||||
* @throws IOException
|
||||
* @throws MessagingException
|
||||
*/
|
||||
private void processContactRequester(Request request, TableRow requestItem) throws IOException, MessagingException {
|
||||
private void processContactRequester(Request request, RequestItem requestItem) throws IOException, MessagingException {
|
||||
String message = request.getParameter("message");
|
||||
String subject = request.getParameter("subject");
|
||||
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setContent("{0}");
|
||||
email.addRecipient(requestItem.getStringColumn("request_email"));
|
||||
email.addRecipient(requestItem.getReqEmail());
|
||||
email.addArgument(message);
|
||||
|
||||
email.send();
|
||||
|
@@ -18,6 +18,7 @@ import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.util.HashUtil;
|
||||
import org.apache.excalibur.source.SourceValidity;
|
||||
import org.apache.excalibur.source.impl.validity.NOPValidity;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
|
||||
import org.dspace.app.xmlui.utils.ContextUtil;
|
||||
import org.dspace.app.xmlui.utils.HandleUtil;
|
||||
@@ -39,8 +40,6 @@ import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.eperson.EPerson;
|
||||
import org.dspace.handle.HandleManager;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
@@ -116,10 +115,11 @@ public class ItemRequestResponseFalseForm extends AbstractDSpaceTransformer impl
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
Context context = ContextUtil.obtainContext(objectModel);
|
||||
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context,
|
||||
"requestitem", "token", (String) request.getAttribute("token"));
|
||||
String token = (String) request.getAttribute("token");
|
||||
RequestItem requestItem = RequestItem.findByToken(context, token);
|
||||
|
||||
String title;
|
||||
Item item = Item.find(context, requestItem.getIntColumn("item_id"));
|
||||
Item item = Item.find(context, requestItem.getItemID());
|
||||
DCValue[] titleDC = item.getDC("title", null, Item.ANY);
|
||||
if (titleDC != null || titleDC.length > 0)
|
||||
title = titleDC[0].value;
|
||||
@@ -129,7 +129,7 @@ public class ItemRequestResponseFalseForm extends AbstractDSpaceTransformer impl
|
||||
EPerson submitter = item.getSubmitter();
|
||||
|
||||
Object[] args = new String[]{
|
||||
requestItem.getStringColumn("request_name"),
|
||||
requestItem.getReqName(),
|
||||
HandleManager.getCanonicalForm(item.getHandle()), // User
|
||||
title, // request item title
|
||||
submitter.getFullName(), // # submmiter name
|
||||
|
@@ -18,6 +18,7 @@ import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.util.HashUtil;
|
||||
import org.apache.excalibur.source.SourceValidity;
|
||||
import org.apache.excalibur.source.impl.validity.NOPValidity;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
|
||||
import org.dspace.app.xmlui.utils.ContextUtil;
|
||||
import org.dspace.app.xmlui.utils.UIException;
|
||||
@@ -113,10 +114,11 @@ public class ItemRequestResponseTrueForm extends AbstractDSpaceTransformer imple
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
Context context = ContextUtil.obtainContext(objectModel);
|
||||
|
||||
TableRow requestItem = DatabaseManager.findByUnique(context,
|
||||
"requestitem", "token", (String) request.getAttribute("token"));
|
||||
String token = (String) request.getAttribute("token");
|
||||
RequestItem requestItem = RequestItem.findByToken(context, token);
|
||||
|
||||
String title;
|
||||
Item item = Item.find(context, requestItem.getIntColumn("item_id"));
|
||||
Item item = Item.find(context, requestItem.getItemID());
|
||||
DCValue[] titleDC = item.getDC("title", null, Item.ANY);
|
||||
if (titleDC != null || titleDC.length > 0)
|
||||
title = titleDC[0].value;
|
||||
@@ -126,7 +128,7 @@ public class ItemRequestResponseTrueForm extends AbstractDSpaceTransformer imple
|
||||
EPerson submitter = item.getSubmitter();
|
||||
|
||||
Object[] args = new String[]{
|
||||
requestItem.getStringColumn("request_name"),
|
||||
requestItem.getReqName(),
|
||||
HandleManager.getCanonicalForm(item.getHandle()), // User
|
||||
title, // request item title
|
||||
submitter.getFullName(), // # submmiter name
|
||||
|
@@ -20,6 +20,7 @@ import org.apache.cocoon.environment.Request;
|
||||
import org.apache.cocoon.environment.SourceResolver;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.dspace.app.requestitem.RequestItem;
|
||||
import org.dspace.app.requestitem.RequestItemAuthor;
|
||||
import org.dspace.app.requestitem.RequestItemAuthorExtractor;
|
||||
import org.dspace.app.xmlui.utils.ContextUtil;
|
||||
@@ -112,6 +113,8 @@ public class SendItemRequestAction extends AbstractAction
|
||||
RequestItemAuthorExtractor.class)
|
||||
.getRequestItemAuthor(context, item);
|
||||
|
||||
RequestItem requestItem = new RequestItem(item.getID(), Integer.parseInt(bitstreamId), requesterEmail, requesterName, message, Boolean.getBoolean(allFiles));
|
||||
|
||||
// All data is there, send the email
|
||||
Email email = Email.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "request_item.author"));
|
||||
email.addRecipient(requestItemAuthor.getEmail());
|
||||
@@ -122,7 +125,7 @@ public class SendItemRequestAction extends AbstractAction
|
||||
email.addArgument(HandleManager.getCanonicalForm(item.getHandle()));
|
||||
email.addArgument(title); // request item title
|
||||
email.addArgument(message); // message
|
||||
email.addArgument(getLinkTokenEmail(context,request, bitstreamId, item.getID(), requesterEmail, requesterName, Boolean.parseBoolean(allFiles)));
|
||||
email.addArgument(getLinkTokenEmail(context,requestItem));
|
||||
email.addArgument(requestItemAuthor.getFullName()); // corresponding author name
|
||||
email.addArgument(requestItemAuthor.getEmail()); // corresponding author email
|
||||
email.addArgument(ConfigurationManager.getProperty("dspace.name"));
|
||||
@@ -137,62 +140,22 @@ public class SendItemRequestAction extends AbstractAction
|
||||
|
||||
/**
|
||||
* Get the link to the author in RequestLink email.
|
||||
*
|
||||
* @param email
|
||||
* The email address to mail to
|
||||
*
|
||||
* @exception SQLExeption
|
||||
*
|
||||
* @param context
|
||||
* @param requestItem
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
protected String getLinkTokenEmail(Context context,Request request, String bitstreamId
|
||||
, int itemID, String reqEmail, String reqName, boolean allfiles)
|
||||
protected String getLinkTokenEmail(Context context, RequestItem requestItem)
|
||||
throws SQLException
|
||||
{
|
||||
String base = ConfigurationManager.getProperty("dspace.url");
|
||||
|
||||
request.getPathInfo();
|
||||
String specialLink = (new StringBuffer()).append(base).append(
|
||||
base.endsWith("/") ? "" : "/").append(
|
||||
"itemRequestResponse/").append(getNewToken(context, Integer.parseInt(bitstreamId), itemID, reqEmail, reqName, allfiles))
|
||||
"itemRequestResponse/").append(requestItem.getNewToken(context))
|
||||
.toString()+"/";
|
||||
|
||||
return specialLink;
|
||||
}
|
||||
/**
|
||||
* Generate a unique id of the request and put it into the ddbb
|
||||
* @param context
|
||||
* @param bitstreamId
|
||||
* @param itemID
|
||||
* @param reqEmail
|
||||
* @param reqName
|
||||
* @param allfiles
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
protected String getNewToken(Context context, int bitstreamId, int itemID, String reqEmail, String reqName, boolean allfiles) throws SQLException
|
||||
{
|
||||
TableRow rd = DatabaseManager.create(context, "requestitem");
|
||||
rd.setColumn("token", Utils.generateHexKey());
|
||||
rd.setColumn("bitstream_id", bitstreamId);
|
||||
rd.setColumn("item_id",itemID);
|
||||
rd.setColumn("allfiles", allfiles);
|
||||
rd.setColumn("request_email", reqEmail);
|
||||
rd.setColumn("request_name", reqName);
|
||||
rd.setColumnNull("accept_request");
|
||||
rd.setColumn("request_date", new Date());
|
||||
rd.setColumnNull("decision_date");
|
||||
rd.setColumnNull("expires");
|
||||
|
||||
DatabaseManager.update(context, rd);
|
||||
|
||||
if (log.isDebugEnabled())
|
||||
{
|
||||
log.debug("Created requestitem_token "
|
||||
+ rd.getIntColumn("requestitem_id")
|
||||
+ " with token " + rd.getStringColumn("token")
|
||||
+ "\"");
|
||||
}
|
||||
return rd.getStringColumn("token");
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -788,6 +788,7 @@ CREATE TABLE requestitem
|
||||
allfiles NUMBER(1),
|
||||
request_email VARCHAR2(64),
|
||||
request_name VARCHAR2(64),
|
||||
request_message TEXT,
|
||||
request_date TIMESTAMP,
|
||||
accept_request NUMBER(1),
|
||||
decision_date TIMESTAMP,
|
||||
|
12
dspace/etc/oracle/database_schema_4-5.sql
Normal file
12
dspace/etc/oracle/database_schema_4-5.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- http://www.dspace.org/license/
|
||||
-- SQL commands to upgrade the ORACLE database schema from DSpace 4.x to 5.x
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
START TRANSACTION;
|
||||
|
||||
------------------------------------------------------
|
||||
-- DS-1945 RequestItem Helpdesk, store request message
|
||||
------------------------------------------------------
|
||||
ALTER TABLE requestitem ADD request_message TEXT;
|
||||
|
||||
|
||||
COMMIT;
|
@@ -836,6 +836,7 @@ CREATE TABLE requestitem
|
||||
allfiles bool,
|
||||
request_email varchar(64),
|
||||
request_name varchar(64),
|
||||
request_message TEXT,
|
||||
request_date timestamp,
|
||||
accept_request bool,
|
||||
decision_date timestamp,
|
||||
|
12
dspace/etc/postgres/database_schema_4_5.sql
Normal file
12
dspace/etc/postgres/database_schema_4_5.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- http://www.dspace.org/license/
|
||||
-- SQL commands to upgrade the Postgres database schema from DSpace 4.x to 5.x
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
BEGIN;
|
||||
|
||||
------------------------------------------------------
|
||||
-- DS-1945 RequestItem Helpdesk, store request message
|
||||
------------------------------------------------------
|
||||
ALTER TABLE requestitem ADD request_message TEXT;
|
||||
|
||||
|
||||
COMMIT;
|
Reference in New Issue
Block a user