package com.sun.j2ee.blueprints.petstore.tools.populate;
import javax.naming.*;
import javax.ejb.*;
import java.util.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import com.sun.j2ee.blueprints.customer.profile.ejb.*;
public class ProfilePopulator {
public static final String JNDI_PROFILE_HOME = "java:comp/env/ejb/Profile";
private static final String XML_PROFILE = "Profile";
private static final String XML_PREFERREDLANGUAGE = "PreferredLanguage";
private static final String XML_FAVORITECATEGORY = "FavoriteCategory";
private static final String XML_MYLISTPREFERENCE = "MyListPreference";
private static final String XML_BANNERPREFERENCE = "BannerPreference";
private String rootTag;
private ProfileLocalHome profileHome = null;
private ProfileLocal profile ;
public ProfilePopulator(String rootTag) {
this.rootTag = rootTag;
return;
}
public XMLFilter setup(XMLReader reader) throws PopulateException {
return new XMLDBHandler(reader, rootTag, XML_PROFILE) {
public void update() throws PopulateException {}
public void create() throws PopulateException {
profile = createProfile(getValue(XML_PREFERREDLANGUAGE),
getValue(XML_FAVORITECATEGORY),
getValue(XML_MYLISTPREFERENCE, false),
getValue(XML_BANNERPREFERENCE, false));
return;
}
};
}
public boolean check() throws PopulateException {
return true;
}
private ProfileLocal createProfile(String preferredLanguage, String favoriteCategory, boolean myListPreference, boolean bannerPreference) throws PopulateException {
try {
if (profileHome == null) {
InitialContext context = new InitialContext();
profileHome = (ProfileLocalHome) context.lookup(JNDI_PROFILE_HOME);
}
return profileHome.create(preferredLanguage, favoriteCategory, myListPreference, bannerPreference);
} catch (Exception exception) {
throw new PopulateException ("Could not create: " + exception.getMessage(), exception);
}
}
public ProfileLocal getProfile() {
return profile;
}
}