package org.springmodules.feedxt.infrastructure.dao.db4o; import com.db4o.Db4o; import com.db4o.config.Configuration; import com.db4o.config.ObjectClass; import java.net.URL; import org.springmodules.feedxt.domain.FeedSubscriptionImpl; import org.springmodules.feedxt.domain.UserImpl; /** * Factory for Db4o configuration object. * * @author Sergio Bossa */ public class Db4oConfigurationFactory { public Configuration getConfiguration() { Configuration configuration = Db4o.configure(); this.configureUser(configuration); this.configureFeedSubscription(configuration); this.configureOtherObjects(configuration); return configuration; } private void configureUser(Configuration configuration) { ObjectClass userConfiguration = configuration.objectClass(UserImpl.class); userConfiguration.callConstructor(true); userConfiguration.objectField("subscriptions").cascadeOnActivate(true); userConfiguration.objectField("subscriptions").cascadeOnDelete(true); userConfiguration.objectField("subscriptions").cascadeOnUpdate(true); } private void configureFeedSubscription(Configuration configuration) { ObjectClass feedConfiguration = configuration.objectClass(FeedSubscriptionImpl.class); feedConfiguration.callConstructor(true); } private void configureOtherObjects(Configuration configuration) { ObjectClass urlConfiguration = configuration.objectClass(URL.class); urlConfiguration.translate(new UrlConstructor()); urlConfiguration.cascadeOnActivate(true); urlConfiguration.cascadeOnDelete(true); urlConfiguration.cascadeOnUpdate(true); } }