/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package biblivre3.administration;
import biblivre3.cataloging.bibliographic.BiblioBO;
import biblivre3.cataloging.holding.HoldingBO;
import biblivre3.enums.Database;
import biblivre3.login.LoginBO;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mercury.BaseHandler;
import mercury.Dialog;
import mercury.I18nUtils;
import mercury.LoginDTO;
import org.apache.commons.lang.StringUtils;
public class AdminHandler extends BaseHandler {
@Override
public String processModule(HttpServletRequest request, HttpServletResponse response, String submitButton, HashMap<String, String> requestParametersHash) {
if (submitButton.equals("CHANGE_PASSWORD")) {
String oldpasswd = request.getParameter("OLDPASSWORD");
String newpasswd = request.getParameter("NEWPASSWORD");
String nprpasswd = request.getParameter("NPRPASSWORD");
if (StringUtils.isEmpty(oldpasswd) || StringUtils.isEmpty(newpasswd) || StringUtils.isEmpty(nprpasswd)) {
Dialog.showWarning(request, "ERROR_FIELDS_NOT_FILLED");
return "/jsp/administration/password.jsp";
}
if (!newpasswd.equals(nprpasswd)) {
Dialog.showWarning(request, "ERROR_PASSWORDS_ARENT_EQUAL");
return "/jsp/administration/password.jsp";
}
LoginDTO login = (LoginDTO) request.getSession().getAttribute("LOGGED_USER");
String loginName = login.getLoginName();
LoginDTO checkLogin = new LoginBO().login(loginName, oldpasswd);
if (checkLogin == null) {
Dialog.showWarning(request, "ERROR_WRONG_PASSWORD");
return "/jsp/administration/password.jsp";
} else {
new LoginBO().savePassword(checkLogin.getLoginId(), newpasswd);
boolean warningPassword = newpasswd.equals("abracadabra") && login.getLoginName().equals("admin");
request.getSession().setAttribute("SYSTEM_WARNING_PASSWORD", warningPassword);
}
Dialog.showNormal(request, "SUCCESS_CHANGE_PASSWORD");
return "/jsp/administration/password.jsp";
} else if (submitButton.equals("REINDEX_BIBLIO_BASE")) {
AdminBO adminBO = new AdminBO();
adminBO.reindexBiblioBase();
if (!new AdminBO().isIndexOutdated()) {
request.getSession().setAttribute("SYSTEM_WARNING_REINDEX", false);
}
Dialog.showNormal(request, "SUCCESS_REINDEX_BIBLIO_TABLE");
return "/jsp/administration/maintenance.jsp";
} else if (submitButton.equals("REINDEX_AUTHORITIES_BASE")) {
AdminBO adminBO = new AdminBO();
adminBO.reindexAuthoritiesBase();
if (!new AdminBO().isIndexOutdated()) {
request.getSession().setAttribute("SYSTEM_WARNING_REINDEX", false);
}
Dialog.showNormal(request, "SUCCESS_REINDEX_AUTHORITIES_TABLE");
return "/jsp/administration/maintenance.jsp";
} else if (submitButton.equals("REINDEX_THESAURUS_BASE")) {
AdminBO adminBO = new AdminBO();
adminBO.reindexThesaurusBase();
if (!new AdminBO().isIndexOutdated()) {
request.getSession().setAttribute("SYSTEM_WARNING_REINDEX", false);
}
Dialog.showNormal(request, "SUCCESS_REINDEX_THESAURUS_TABLE");
return "/jsp/administration/maintenance.jsp";
} else if (submitButton.equals("BACKUP")) {
String path = request.getSession().getServletContext().getRealPath(".");
Date now = new Date();
BackupBO bo = new BackupBO();
System.out.println(path);
boolean backuped = bo.doBackup(path, String.valueOf(now.getTime()));
if (backuped) {
Dialog.showNormal(request, "SUCCESS_BACKUP_DATABASE");
AdminBO adminBO = new AdminBO();
adminBO.insertLastBackupDate(now);
request.getSession().setAttribute("SYSTEM_WARNING_BACKUP", false);
List<Date> dates = adminBO.getLastFiveBackups();
List<String[]> formattedDates = new ArrayList<String[]>();
String defaultFormat = I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATETIME_FORMAT");
SimpleDateFormat formatter = new SimpleDateFormat(defaultFormat);
for (Date date : dates) {
formattedDates.add(new String[]{formatter.format(date), String.valueOf(date.getTime())});
}
request.getSession().setAttribute("SYSTEM_LAST_FIVE_BACKUPS", formattedDates);
} else {
Dialog.showError(request, "ERROR_BACKUP_DATABASE");
}
return "/jsp/administration/maintenance.jsp";
} else if (submitButton.equals("EXPORT_ALL")) {
// iso2709 || xml
String format = request.getParameter("format");
//MAIN || WORK || NULL
String base = request.getParameter("base");
//biblio || holding
String type = request.getParameter("type");
Database db = null;
try {
db = Database.valueOf(base);
} catch (Exception e) {}
String name = "";
String ext = "";
if (StringUtils.isBlank(format)) {
ext = ".txt";
} else if (format.equals("iso2709")) {
ext = ".mrc";
} else if (format.equals("xml")) {
ext = ".xml";
}
File exportFile = null;
if (StringUtils.isBlank(type)) {
Dialog.showError(request, "ERROR_CREATE_TXT");
} else if (type.equals("biblio")) {
name = "biblivre_biblio_export_";
exportFile = new BiblioBO().exportRecords(format, db);
} else if (type.equals("holding")) {
name = "biblivre_holding_export_";
exportFile = new HoldingBO().exportRecords(format, db);
}
if (exportFile != null) {
String date = String.valueOf(new Date().getTime());
returnFile(exportFile, name + date + ext, response);
return "x-download";
} else {
Dialog.showError(request, "ERROR_CREATE_TXT");
return "/jsp/administration/maintenance.jsp";
}
} else {
return "";
}
}
}