in app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java [193:312]
private String save() {
if (!hasActionErrors()) {
try {
WeblogEntryManager weblogEntryManager = WebloggerFactory.getWeblogger()
.getWeblogEntryManager();
IndexManager indexMgr = WebloggerFactory.getWeblogger()
.getIndexManager();
WeblogEntry weblogEntry = getEntry();
// set updatetime & pubtime
weblogEntry.setUpdateTime(new Timestamp(new Date().getTime()));
weblogEntry.setPubTime(getBean().getPubTime(getLocale(),
getActionWeblog().getTimeZoneInstance()));
// copy data to pojo
getBean().copyTo(weblogEntry);
// handle pubtime auto set
if (weblogEntry.isPublished() && weblogEntry.getPubTime() == null) {
// no time specified, use current time
weblogEntry.setPubTime(weblogEntry.getUpdateTime());
}
// if user is an admin then apply pinned to main value as well
GlobalPermission adminPerm = new GlobalPermission(
Collections.singletonList(GlobalPermission.ADMIN));
if (WebloggerFactory.getWeblogger().getUserManager()
.checkPermission(adminPerm, getAuthenticatedUser())) {
weblogEntry.setPinnedToMain(getBean().getPinnedToMain());
}
if (!StringUtils.isEmpty(getBean().getEnclosureURL())) {
try {
// Fetch MediaCast resource
log.debug("Checking MediaCast attributes");
MediacastResource mediacast = MediacastUtil
.lookupResource(getBean().getEnclosureURL());
// set mediacast attributes
weblogEntry.putEntryAttribute("att_mediacast_url",
mediacast.getUrl());
weblogEntry.putEntryAttribute("att_mediacast_type",
mediacast.getContentType());
weblogEntry.putEntryAttribute("att_mediacast_length", ""
+ mediacast.getLength());
} catch (MediacastException ex) {
addMessage(getText(ex.getErrorKey()));
}
} else if ("entryEdit".equals(actionName)) {
try {
// if MediaCast string is empty, clean out MediaCast
// attributes
weblogEntryManager.removeWeblogEntryAttribute(
"att_mediacast_url", weblogEntry);
weblogEntryManager.removeWeblogEntryAttribute(
"att_mediacast_type", weblogEntry);
weblogEntryManager.removeWeblogEntryAttribute(
"att_mediacast_length", weblogEntry);
} catch (WebloggerException e) {
addMessage(getText("weblogEdit.mediaCastErrorRemoving"));
}
}
if (log.isDebugEnabled()) {
log.debug("entry bean is ...\n" + getBean().toString());
log.debug("final status = " + weblogEntry.getStatus());
log.debug("updtime = " + weblogEntry.getUpdateTime());
log.debug("pubtime = " + weblogEntry.getPubTime());
}
log.debug("Saving entry");
weblogEntryManager.saveWeblogEntry(weblogEntry);
WebloggerFactory.getWeblogger().flush();
// notify search of the new entry
if (weblogEntry.isPublished()) {
indexMgr.addEntryReIndexOperation(entry);
} else if ("entryEdit".equals(actionName)) {
indexMgr.removeEntryIndexOperation(entry);
}
// notify caches
CacheManager.invalidate(weblogEntry);
// Queue applicable pings for this update.
if (weblogEntry.isPublished()) {
WebloggerFactory.getWeblogger().getAutopingManager()
.queueApplicableAutoPings(weblogEntry);
}
if (weblogEntry.isPending() && MailUtil.isMailConfigured()) {
MailUtil.sendPendingEntryNotice(weblogEntry);
}
if ("entryEdit".equals(actionName)) {
addStatusMessage(getEntry().getStatus());
// continue in entryEdit mode
return INPUT;
} else {
// now that entry is saved we have an id value for it
// store it back in bean for use in next action
getBean().setId(weblogEntry.getId());
// flip over to entryEdit mode, as defined in struts.xml
return SUCCESS;
}
} catch (Exception e) {
log.error("Error saving new entry", e);
addError("generic.error.check.logs");
}
}
if ("entryAdd".equals(actionName)) {
// if here on entryAdd, nothing saved, so reset status to null (unsaved)
getBean().setStatus(null);
}
return INPUT;
}