/*
* $Id: Report.java,v 1.5 2004/04/07 11:49:16 anders Exp $
*
* Copyright (C) 2002 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*
*/
package se.idega.util;
import java.io.ByteArrayInputStream;
import java.sql.SQLException;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.core.file.data.ICFile;
import com.idega.core.file.data.ICFileBMPBean;
import com.idega.core.file.data.ICFileHome;
import com.idega.data.IDOLookupException;
/**
* A class used for creating report files. Currently used in the file import functions
*
* @author <a href="joakim@idega.is">Joakim Johnson</a>
* @version 1.0
*/
public class Report
{
private StringBuffer text;
// private ImportFile file;
private String filename;
public Report(String fn)
{
filename = fn;
text = new StringBuffer();
}
public void init()
{
text = new StringBuffer();
}
public void append(String s)
{
text.append(s+'\n');
}
public void store()
{
store(true);
}
public void store(boolean doPrint)
{
if (doPrint) {
System.out.println("\n**REPORT**\n\n" + text + "\n**END OF REPORT**\n\n");
}
//Creating the report file in the DB filesystem.
System.out.println("Attempting to access the reports folder");
ICFile reportFolder = null;
ICFileHome fileHome;
try {
fileHome = (ICFileHome) com.idega.data.IDOLookup.getHome(ICFile.class);
try {
reportFolder = fileHome.findByFileName("Reports");
System.out.println("Reports folder found");
} catch (FinderException e) {
System.out.println("Reports folder not found, attempting to create folder");
try {
ICFile root = fileHome.findByFileName(ICFileBMPBean.IC_ROOT_FOLDER_NAME);
System.out.println("Rootfolder found");
reportFolder = fileHome.create();
reportFolder.setName("Reports");
reportFolder.setMimeType("application/vnd.iw-folder");
reportFolder.store();
root.addChild(reportFolder);
System.out.println("Reports folder created");
} catch (FinderException e1) {
System.out.println("Error creating Reports folder.");
}
}
} catch (SQLException e) {
System.out.println("Error creating Reports folder.");
} catch (CreateException e) {
System.out.println("Error creating Reports folder.");
} catch (IDOLookupException e2) {
System.out.println("Error creating Reports folder.");
}
ICFile reportFile;
try {
reportFile = ((com.idega.core.file.data.ICFileHome)com.idega.data.IDOLookup.getHome(ICFile.class)).create();
byte[] bytes = text.toString().getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
reportFile.setFileValue(bais);
reportFile.setMimeType("text/plain");
//Have to find the name of the importfile, and add that here.
// String filename = file.getFile().getName();
int i = filename.indexOf('_');
if(i>0)
{
filename = filename.substring(i+1);
}
i = filename.lastIndexOf('.');
if(i>0)
{
filename = filename.substring(0,i);
}
reportFile.setName(filename+".report");
reportFile.setFileSize(text.length());
reportFile.store();
if(reportFolder!=null)
{
reportFolder.addChild(reportFile);
System.out.println("Report added to folder.");
}
}
catch (SQLException ex) {
ex.printStackTrace();
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
}
}
}