import com.urbancode.pagelet.*;
import java.io.*;
import java.util.*;
import com.urbancode.pagelet.module.email.*;
import javax.mail.*;
import javax.mail.internet.*;
import com.urbancode.anthill.BuildDefinition;	// line 1
import com.urbancode.anthill.ProjectProperties;	// line 2
import com.urbancode.anthill.adapter.Revision;	// line 3
import java.io.*;	// line 4

public class resultEmail_pgl implements Template {



	public void service(Map context, Writer out) throws Throwable {

		PageletFactory pageletFactory = (PageletFactory) context.get(PageletFactory.PAGELET_FACTORY_CONTEXT_KEY);

		MimeMessage message = (MimeMessage) context.get(EmailMessage.EMAIL_MESSAGE);
		MimeMultipart multipart = (MimeMultipart) context.get(EmailMessage.MESSAGE_MULTIPART);
		String contentType = EmailMessage.DEFAULT_MIME_TYPE;
		String subject = null;
		// build subject
    BuildDefinition _buildDef = (BuildDefinition) context.get("buildDefinition");

    StringBuffer emailSubject = new StringBuffer();
    emailSubject.append(_buildDef.getProject().getProjectName());
    String newVersion = _buildDef.getVersion();
    if (newVersion != null) {
        emailSubject.append(" ").append(newVersion);
    }
    emailSubject.append(" build ");
    if (_buildDef.getErrorFlag()) {
        emailSubject.append("failed");
    } else {
        emailSubject.append("succeeded");
    }

    subject = emailSubject.toString();

    // build body

    ProjectProperties properties = _buildDef.getProject().getProperties();
    StringBuffer logMessage = _buildDef.getLogMessageBuffer();
    List revList = null;

    // get the revisions and add them to the email
    revList = _buildDef.getRevisionList();
    Revision rev = null;
    StringBuffer revLog = new StringBuffer();
    if (revList != null) {
            for (int i = 0; i < revList.size(); i++) {
                    rev = (Revision) revList.get(i);
                    revLog.append(rev.toString()).append("\n");
            }
    }
    logMessage.append(revLog.toString());

    String buildLogFileName = properties.getBuildLogDir()
    + _buildDef.getName() + "-"
    + newVersion + "-build.log";

    File buildLog = new File(buildLogFileName);
    String buildLogString = "";
    if (buildLog.exists() &&  buildLog.length() <= Integer.MAX_VALUE) {
           FileInputStream fis = new FileInputStream(buildLog);

           int buffersize = (int)buildLog.length();
           byte[] contents = new byte[buffersize];;

           long n = fis.read(contents, 0, buffersize);
           fis.close();
           fis = null;

           buildLogString = new String(contents);
    }
    String body = logMessage.toString() +
            "\n-------------------------------------\n"
            + buildLogFileName +
            buildLogString;	// line 64
		out.write(String.valueOf(body));	// line 65
		context.put(EmailMessage.MESSAGE_MIME_TYPE, contentType);
		context.put(EmailMessage.MESSAGE_SUBJECT, subject);
	}
}