package com.idega.idegaweb.presentation;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.util.SendMail;
import com.idega.util.database.ConnectionBroker;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author <br><a href="mailto:aron@idega.is">Aron Birkir</a><br>
* @version 1.0
*/
public class DataEmailer extends Block {
private String emailAddress = null;
private String host = null;
private String subject = "";
private String from = "";
private String delimiter = ":";
private String startData = "";
private String endData = "";
private String sql = null;
public DataEmailer() {
}
public void main(IWContext iwc){
int icid = getICObjectInstanceID();
String action = "send"+icid;
if( iwc.isParameterSet(action) ) {
sendLetter();
}
if(this.emailAddress!=null && this.sql !=null){
Form myForm = new Form();
myForm.add(new SubmitButton(action,"Mail to: "+this.emailAddress));
add(myForm);
}
}
public void setEmailAddress(String email){
this.emailAddress = email;
}
public void setDelimiter(String delim){
this.delimiter = delim;
}
public void setStartData(String start){
this.startData = start;
}
public void setEndData(String end){
this.endData = end;
}
public void setSql(String sql){
this.sql = sql;
}
public void setFrom(String from){
this.from = from;
}
public void setHost(String host){
this.host = host;
}
public void setSubject(String subject){
this.subject = subject;
}
/**
* sends letter and returns error id
*/
private void sendLetter(){
if(this.emailAddress!=null && this.host!=null){
String letter = createLetter();
if(letter !=null){
try{
/*
System.err.println("from :"+ from);
System.err.println("to :"+emailAddress);
System.err.println("host :"+host);
System.err.println("subj :"+subject);
//System.err.println(letter);
*/
SendMail.send(this.from,this.emailAddress,"","",this.host,this.subject,letter);
//System.err.println("mail sent");
}
catch(Exception ex){
ex.printStackTrace();
}
}
else {
System.err.println("letter was null");
}
}
else {
System.err.println("did not send");
}
}
private String createLetter(){
if(this.sql !=null){
Statement Stmt= null;
Connection conn = null;
try{
System.err.println("trying to fetch data");
conn = ConnectionBroker.getConnection();
Stmt = conn.createStatement();
ResultSet RS = Stmt.executeQuery(this.sql);
int count = RS.getMetaData().getColumnCount();
StringBuffer letter = new StringBuffer();
String newLine = System.getProperty("line.separator");
letter.append(this.startData).append(newLine);
while(RS.next()){
for (int i = 1; i <= count; i++) {
letter.append(RS.getString(i)).append(this.delimiter);
}
letter.append(newLine);
}
letter.append(this.endData).append(newLine);
RS.close();
return letter.toString();
}
catch(SQLException sql){
sql.printStackTrace();
}
finally{
try{
if(Stmt != null) {
Stmt.close();
}
if(conn !=null) {
ConnectionBroker.freeConnection(conn);
}
}
catch(SQLException sql){
sql.printStackTrace();
}
}
}
else {
System.err.println("sql is null");
}
return null;
}
public final static int HOST = 1;
public final static int FROM = 2;
public final static int MAILADDRESS = 3;
public final static int SQL = 4;
}