/*
* $Id: IShopBundleStarter.java,v 1.9 2004/05/24 14:56:57 palli Exp $
*
* Copyright (C) 2001 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*
*/
package is.idega.idegaweb.intershop.business;
import is.idega.idegaweb.intershop.data.IShopTemplate;
import is.idega.idegaweb.intershop.presentation.IShopToolbarButton;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Vector;
import com.idega.builder.app.IBApplication;
import com.idega.builder.business.IBPageHelper;
import com.idega.core.builder.data.ICDomain;
import com.idega.data.EntityFinder;
import com.idega.data.IDOFinderException;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWBundleStartable;
import com.idega.util.FileUtil;
/**
* @author <a href="mail:palli@idega.is">Pall Helgason</a>
* @version 1.0
*/
public class IShopBundleStarter implements IWBundleStartable {
/**
* Constructor for the IShopBundleStarter object
*/
public IShopBundleStarter() { }
/**
* Description of the Method
*
* @param starterBundle Description of the Parameter
*/
public void start(IWBundle starterBundle) {
System.out.println("Starting Intershop initialization");
IShopToolbarButton separator = new IShopToolbarButton(starterBundle, IShopToolbarButton.BUTTON_SEPERATOR);
IShopToolbarButton button = new IShopToolbarButton(starterBundle, IShopToolbarButton.BUTTON_EXPORT);
IShopToolbarButton button2 = new IShopToolbarButton(starterBundle, IShopToolbarButton.BUTTON_NEW_PAGE);
List l = (List)starterBundle.getApplication().getAttribute(IBApplication.TOOLBAR_ITEMS);
if (l == null) {
l = new Vector();
starterBundle.getApplication().setAttribute(IBApplication.TOOLBAR_ITEMS, l);
}
l.add(separator);
l.add(button);
l.add(button2);
StringBuffer path = new StringBuffer(starterBundle.getPropertiesRealPath());
if (!path.toString().endsWith(FileUtil.getFileSeparator()))
path.append(FileUtil.getFileSeparator());
path.append(starterBundle.getProperty("sybaseproperties","sybasedb.properties"));
int count = IShopTemplateHome.getInstance().count();
if (count == 0) {
insertInitialData(path.toString(),starterBundle);
}
}
/**
*
*/
private void insertInitialData(String pathToPropertiesFile, IWBundle starterBundle) {
List l = null;
try {
l = EntityFinder.getInstance().findAll(ICDomain.class);
}
catch(IDOFinderException e) {
e.printStackTrace();
return;
}
ICDomain main = null;
if (l.size() > 0)
main = (ICDomain)l.get(0);
else
return;
Properties props = new Properties();
try {
props.load(new FileInputStream(pathToPropertiesFile));
}
catch(FileNotFoundException e) {
e.printStackTrace();
return;
}
catch(IOException e) {
e.printStackTrace();
return;
}
String parent = Integer.toString(main.getStartPageID());
String folder = starterBundle.getProperty("INTERSHOP_FOLDER");
int folderId = 0;
if (folder == null) {
folderId = IBPageHelper.getInstance().createNewPage(parent,"Intershop folder",com.idega.builder.data.IBPageBMPBean.PAGE,"",null);
starterBundle.setProperty("INTERSHOP_FOLDER",Integer.toString(folderId));
}
else {
folderId = Integer.parseInt(folder);
}
String driver = props.getProperty("drivers");
String url = props.getProperty("default.url");
String dbname = props.getProperty("default.dbname");
String user = props.getProperty("default.user");
String passwd = props.getProperty("default.password");
if (driver == null || url == null || dbname == null || user == null || passwd == null) {
return;
}
Vector result = new Vector();
try {
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url,user,passwd);
StringBuffer sql = new StringBuffer("select a.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopClassColumnName());
sql.append(", a.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopIDColumnName());
sql.append(", ");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopLanguageNrColumnName());
sql.append(", ");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopDescriptionColumnName());
sql.append(", ");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopNameColumnName());
sql.append(" from ");
sql.append(dbname);
sql.append("..");
sql.append(IShopTemplate.ISHOP_TABLE_TEMPLATES);
sql.append(" a, ");
sql.append(dbname);
sql.append("..");
sql.append(IShopTemplate.ISHOP_TABLE_TEMPLATEDESC);
sql.append(" b ");
sql.append(" where a.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopClassColumnName());
sql.append(" = b.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopClassColumnName());
sql.append(" and a.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopIDColumnName());
sql.append(" = b.");
sql.append(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopIDColumnName());
Statement stmt = conn.createStatement();
ResultSet set = stmt.executeQuery(sql.toString());
while (set.next()) {
String className = set.getString(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopClassColumnName());
String id = set.getString(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopIDColumnName());
String langnr = set.getString(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopLanguageNrColumnName());
String name = set.getString(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopNameColumnName());
String desc = set.getString(is.idega.idegaweb.intershop.data.IShopTemplateBeanBMPBean.getIShopDescriptionColumnName());
result.add(className);
result.add(id);
result.add(langnr);
result.add(name);
result.add(desc);
}
set.close();
stmt.close();
conn.close();
}
catch(Exception e) {
e.printStackTrace();
return;
}
String top = Integer.toString(folderId);
Hashtable parents = new Hashtable();
try {
Iterator it = result.iterator();
while (it.hasNext()) {
String className = (String)it.next();
String id = (String)it.next();
String langnr = (String)it.next();
String name = (String)it.next();
String desc = (String)it.next();
String parentId = (String)parents.get(className);
if (parentId == null) {
int tmp = IBPageHelper.getInstance().createNewPage(top,className,com.idega.builder.data.IBPageBMPBean.PAGE,"",null);
parentId = Integer.toString(tmp);
parents.put(className,parentId);
starterBundle.setProperty(className + "_FOLDER",parentId);
}
int pageId = IBPageHelper.getInstance().createNewPage(parentId,name,com.idega.builder.data.IBPageBMPBean.PAGE,"",null,null,IShopTemplate.SUBTYPE_NAME);
IShopTemplate temp = IShopTemplateHome.getInstance().getNewElement();
temp.setIShopClass(className);
temp.setIShopDescription(desc);
temp.setIShopID(id);
temp.setIShopLanguageNr(Integer.parseInt(langnr));
temp.setIShopName(name);
temp.setPageID(pageId);
IShopTemplateHome.getInstance().insert(temp);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
/**
* @see com.idega.idegaweb.IWBundleStartable#stop(IWBundle)
*/
public void stop(IWBundle starterBundle) {
//does nothing...
}
}