/*
* Copyright (C) 2005 Erik Swenson - erik@oreports.com
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have reserved a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package org.efs.openreports.actions.admin;
import com.opensymphony.xwork2.ActionSupport;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.efs.openreports.objects.ORProperty;
import org.efs.openreports.providers.DateProvider;
import org.efs.openreports.providers.DirectoryProvider;
import org.efs.openreports.providers.MailProvider;
import org.efs.openreports.providers.PropertiesProvider;
import org.efs.openreports.util.LocalStrings;
public class EditPropertiesAction extends ActionSupport
{
private static final long serialVersionUID = -2577286917721890875L;
protected static Logger log = Logger.getLogger(EditPropertiesAction.class);
private String submitType;
private String dateFormat;
private String baseDirectory;
private String tempDirectory;
private String mailHost;
private boolean mailAuthenticatorUsed;
private String mailUser;
private String mailPassword;
private String maxRows;
private String reportGenerationDirectory;
private int numberOfFiles;
private String directorySize;
private String xmlaUri;
private String xmlaDataSource;
private String xmlaCatalog;
private PropertiesProvider propertiesProvider;
private DateProvider dateProvider;
private DirectoryProvider directoryProvider;
private MailProvider mailProvider;
public String execute()
{
try
{
if (submitType == null)
{
dateFormat = dateProvider.getDateFormat().toPattern();
baseDirectory = directoryProvider.getReportDirectory();
tempDirectory = directoryProvider.getTempDirectory();
reportGenerationDirectory = directoryProvider.getReportGenerationDirectory();
ORProperty property = propertiesProvider.getProperty(ORProperty.MAIL_SMTP_HOST);
if (property != null) mailHost = property.getValue();
property = propertiesProvider.getProperty(ORProperty.MAIL_SMTP_AUTH);
if (property != null) mailAuthenticatorUsed = new Boolean(property.getValue()).booleanValue();
property = propertiesProvider.getProperty(ORProperty.MAIL_AUTH_USER);
if (property != null) mailUser = property.getValue();
property = propertiesProvider.getProperty(ORProperty.MAIL_AUTH_PASSWORD);
if (property != null) mailPassword = property.getValue();
property = propertiesProvider.getProperty(ORProperty.QUERYREPORT_MAXROWS);
if (property != null) maxRows = property.getValue();
property = propertiesProvider.getProperty(ORProperty.XMLA_CATALOG);
if (property != null) xmlaCatalog = property.getValue();
property = propertiesProvider.getProperty(ORProperty.XMLA_DATASOURCE);
if (property != null) xmlaDataSource = property.getValue();
property = propertiesProvider.getProperty(ORProperty.XMLA_URL);
if (property != null) xmlaUri = property.getValue();
//
File tempDirFile = new File(directoryProvider.getTempDirectory());
long size = FileUtils.sizeOfDirectory(tempDirFile);
directorySize = FileUtils.byteCountToDisplaySize(size);
numberOfFiles = tempDirFile.listFiles().length;
//
return INPUT;
}
// validate maxRows is an integer
try
{
Integer.parseInt(maxRows);
}
catch(NumberFormatException nfe)
{
addActionError(LocalStrings.ERROR_INVALID_MAXROWS);
return INPUT;
}
propertiesProvider.setProperty(ORProperty.BASE_DIRECTORY, baseDirectory);
if (baseDirectory != null) directoryProvider.setReportDirectory(baseDirectory);
propertiesProvider.setProperty(ORProperty.TEMP_DIRECTORY, tempDirectory);
if (tempDirectory != null) directoryProvider.setTempDirectory(tempDirectory);
propertiesProvider.setProperty(ORProperty.REPORT_GENERATION_DIRECTORY, reportGenerationDirectory);
if (tempDirectory != null) directoryProvider.setReportGenerationDirectory(reportGenerationDirectory);
propertiesProvider.setProperty(ORProperty.DATE_FORMAT, dateFormat);
if (dateFormat != null) dateProvider.setDateFormat(dateFormat);
propertiesProvider.setProperty(ORProperty.MAIL_AUTH_PASSWORD, mailPassword);
if (mailPassword != null) mailProvider.setPassword(mailPassword);
propertiesProvider.setProperty(ORProperty.MAIL_AUTH_USER, mailUser);
if (mailUser !=null) mailProvider.setUserName(mailUser);
propertiesProvider.setProperty(ORProperty.MAIL_SMTP_AUTH, String.valueOf(mailAuthenticatorUsed));
mailProvider.setUseMailAuthenticator(mailAuthenticatorUsed);
propertiesProvider.setProperty(ORProperty.MAIL_SMTP_HOST, mailHost);
if (mailHost != null) mailProvider.setMailHost(mailHost);
propertiesProvider.setProperty(ORProperty.QUERYREPORT_MAXROWS, maxRows);
propertiesProvider.setProperty(ORProperty.XMLA_CATALOG, xmlaCatalog);
propertiesProvider.setProperty(ORProperty.XMLA_DATASOURCE, xmlaDataSource);
propertiesProvider.setProperty(ORProperty.XMLA_URL, xmlaUri);
return SUCCESS;
}
catch (Exception e)
{
addActionError(e.toString());
return INPUT;
}
}
public String getSubmitType()
{
return submitType;
}
public void setSubmitType(String submitType)
{
this.submitType = submitType;
}
public String getBaseDirectory()
{
return baseDirectory;
}
public void setBaseDirectory(String baseDirectory)
{
this.baseDirectory = baseDirectory;
}
public String getDateFormat()
{
return dateFormat;
}
public void setDateFormat(String dateFormat)
{
this.dateFormat = dateFormat;
}
public boolean isMailAuthenticatorUsed()
{
return mailAuthenticatorUsed;
}
public void setMailAuthenticatorUsed(boolean mailAuthenticatorUsed)
{
this.mailAuthenticatorUsed = mailAuthenticatorUsed;
}
public String getMailHost()
{
return mailHost;
}
public void setMailHost(String mailHost)
{
this.mailHost = mailHost;
}
public String getMailPassword()
{
return mailPassword;
}
public void setMailPassword(String mailPassword)
{
this.mailPassword = mailPassword;
}
public String getMailUser()
{
return mailUser;
}
public void setMailUser(String mailUser)
{
this.mailUser = mailUser;
}
public void setPropertiesProvider(PropertiesProvider propertiesProvider)
{
this.propertiesProvider = propertiesProvider;
}
public void setDateProvider(DateProvider dateProvider)
{
this.dateProvider = dateProvider;
}
public void setDirectoryProvider(DirectoryProvider directoryProvider)
{
this.directoryProvider = directoryProvider;
}
public void setMailProvider(MailProvider mailProvider)
{
this.mailProvider = mailProvider;
}
public String getTempDirectory()
{
return tempDirectory;
}
public void setTempDirectory(String tempDirectory)
{
this.tempDirectory = tempDirectory;
}
public String getMaxRows()
{
return maxRows;
}
public void setMaxRows(String maxRows)
{
this.maxRows = maxRows;
}
public String getDirectorySize()
{
return directorySize;
}
public int getNumberOfFiles()
{
return numberOfFiles;
}
public String getReportGenerationDirectory()
{
return reportGenerationDirectory;
}
public void setReportGenerationDirectory(String reportGenerationDirectory)
{
this.reportGenerationDirectory = reportGenerationDirectory;
}
public String getXmlaCatalog()
{
return xmlaCatalog;
}
public void setXmlaCatalog(String xmlaCatalog)
{
this.xmlaCatalog = xmlaCatalog;
}
public String getXmlaDataSource()
{
return xmlaDataSource;
}
public void setXmlaDataSource(String xmlaDataSource)
{
this.xmlaDataSource = xmlaDataSource;
}
public String getXmlaUri()
{
return xmlaUri;
}
public void setXmlaUri(String xmlaUri)
{
this.xmlaUri = xmlaUri;
}
}