package net.rrm.ehour.ui.admin.backup.backup; import net.rrm.ehour.backup.service.backup.DatabaseBackupService; import net.rrm.ehour.ui.common.session.EhourWebSession; import net.rrm.ehour.ui.common.util.WebUtils; import org.apache.wicket.model.IModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.StringResourceStream; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; public class BackupDownloadBehavior extends AbstractDownloadBehavior { @SpringBean(name = "databaseBackupService") private DatabaseBackupService databaseBackupService; public BackupDownloadBehavior(IModel<Boolean> model) { super(model); } @Override protected IResourceStream getResourceStream() { try { return new StringResourceStream(new String(getData(), "UTF-8")); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException(e); } } @Override protected String getFileName() { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); return "eHour-xml-backup-" + format.format(new Date()) + ".xml"; } private byte[] getData() { boolean authorized = checkAuthorization(); if (authorized) { WebUtils.springInjection(this); return databaseBackupService.exportDatabase(); } throw new IllegalArgumentException("You're not authorized"); } private boolean checkAuthorization() { return EhourWebSession.getSession().isAdmin(); } }