package org.nightlabs.jfire.trade.ui.articlecontainer.detail.recurring;
import javax.jdo.FetchPlan;
import org.eclipse.swt.widgets.Composite;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jdo.timepattern.TimePatternSetJDOImpl;
import org.nightlabs.jfire.jbpm.graph.def.StatableLocal;
import org.nightlabs.jfire.jbpm.graph.def.State;
import org.nightlabs.jfire.timer.Task;
import org.nightlabs.jfire.trade.ArticleContainer;
import org.nightlabs.jfire.trade.FetchGroupsTrade;
import org.nightlabs.jfire.trade.OfferLocal;
import org.nightlabs.jfire.trade.Order;
import org.nightlabs.jfire.trade.Segment;
import org.nightlabs.jfire.trade.SegmentType;
import org.nightlabs.jfire.trade.id.ArticleContainerID;
import org.nightlabs.jfire.trade.id.OfferID;
import org.nightlabs.jfire.trade.id.OrderID;
import org.nightlabs.jfire.trade.recurring.RecurringOffer;
import org.nightlabs.jfire.trade.recurring.RecurringOfferConfiguration;
import org.nightlabs.jfire.trade.recurring.RecurringOrder;
import org.nightlabs.jfire.trade.recurring.dao.RecurringOfferDAO;
import org.nightlabs.jfire.trade.recurring.dao.RecurringOrderDAO;
import org.nightlabs.jfire.trade.ui.articlecontainer.detail.ArticleContainerEditComposite;
import org.nightlabs.jfire.trade.ui.articlecontainer.detail.HeaderComposite;
import org.nightlabs.progress.ProgressMonitor;
public class RecurringArticleContainerEditComposite extends ArticleContainerEditComposite {
public RecurringArticleContainerEditComposite(Composite parent,
ArticleContainerID containerID) {
super(parent, containerID);
}
public static final String[] FETCH_GROUPS_RECURRING_ARTICLE_CONTAINER_WITHOUT_ARTICLES = {
FetchPlan.DEFAULT,
FetchGroupsTrade.FETCH_GROUP_ARTICLE_CONTAINER_IN_EDITOR,
Segment.FETCH_GROUP_THIS_SEGMENT,
SegmentType.FETCH_GROUP_THIS_SEGMENT_TYPE,
RecurringOffer.FETCH_GROUP_RECURRING_OFFER_CONFIGURATION,
RecurringOfferConfiguration.FETCH_GROUP_CREATOR_TASK,
Task.FETCH_GROUP_TIME_PATTERN_SET,
TimePatternSetJDOImpl.FETCH_GROUP_TIME_PATTERNS,
StatableLocal.FETCH_GROUP_STATE,
State.FETCH_GROUP_STATE_DEFINITION,
};
public static final String[] FETCH_GROUPS_RECURRING_ORDER_WITH_ARTICLES = {
FetchGroupsTrade.FETCH_GROUP_ARTICLE_CONTAINER_IN_EDITOR,
Order.FETCH_GROUP_THIS_ORDER, Segment.FETCH_GROUP_THIS_SEGMENT,
SegmentType.FETCH_GROUP_THIS_SEGMENT_TYPE,
FetchGroupsTrade.FETCH_GROUP_ARTICLE_IN_ORDER_EDITOR, FetchPlan.DEFAULT };
public static final String[] FETCH_GROUPS_RECURRING_OFFER_WITH_ARTICLES = {
FetchGroupsTrade.FETCH_GROUP_ARTICLE_CONTAINER_IN_EDITOR,
RecurringOffer.FETCH_GROUP_ARTICLES,
RecurringOffer.FETCH_GROUP_RECURRING_OFFER_CONFIGURATION,
RecurringOfferConfiguration.FETCH_GROUP_CREATOR_TASK,
Task.FETCH_GROUP_TIME_PATTERN_SET,
TimePatternSetJDOImpl.FETCH_GROUP_TIME_PATTERNS,
OfferLocal.FETCH_GROUP_THIS_OFFER_LOCAL,
StatableLocal.FETCH_GROUP_STATE,
State.FETCH_GROUP_STATE_DEFINITION,
Order.FETCH_GROUP_CUSTOMER_GROUP,
Segment.FETCH_GROUP_THIS_SEGMENT,
SegmentType.FETCH_GROUP_THIS_SEGMENT_TYPE,
FetchGroupsTrade.FETCH_GROUP_ARTICLE_IN_OFFER_EDITOR, FetchPlan.DEFAULT };
@Override
protected ArticleContainer retrieveArticleContainer(ArticleContainerID articleContainerID, boolean withArticles, ProgressMonitor monitor)
{
if (articleContainerID instanceof OrderID)
return RecurringOrderDAO.sharedInstance().getRecurringOrder(
(OrderID) articleContainerID,
withArticles ? FETCH_GROUPS_RECURRING_ORDER_WITH_ARTICLES : FETCH_GROUPS_RECURRING_ARTICLE_CONTAINER_WITHOUT_ARTICLES,
NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
monitor
);
if (articleContainerID instanceof OfferID)
return RecurringOfferDAO.sharedInstance().getRecurringOffer(
(OfferID) articleContainerID,
withArticles ? FETCH_GROUPS_RECURRING_OFFER_WITH_ARTICLES : FETCH_GROUPS_RECURRING_ARTICLE_CONTAINER_WITHOUT_ARTICLES,
NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
monitor
);
throw new IllegalArgumentException("articleContainerID type \"" + articleContainerID.getClass().getName() + "\" unknown"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
protected HeaderComposite createHeaderComposite(Composite parent) {
if (getArticleContainer() instanceof RecurringOrder)
return new RecurringOrderHeaderComposite(this, (RecurringOrder) getArticleContainer());
if(getArticleContainer() instanceof RecurringOffer)
return new RecurringOfferHeaderComposite(this, (RecurringOffer) getArticleContainer());
throw new IllegalStateException("The current ArticleContainer is of an unsupported type: " + //$NON-NLS-1$
(getArticleContainer() != null ? getArticleContainer().getClass().getName() : "null") + "."); //$NON-NLS-1$ //$NON-NLS-2$
}
}