package org.nightlabs.jfire.simpletrade.ui.articlecontainer.detail; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.jdo.FetchPlan; import javax.jdo.JDOHelper; import org.eclipse.swt.graphics.Image; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.accounting.Tariff; import org.nightlabs.jfire.simpletrade.store.SimpleProductType; import org.nightlabs.jfire.simpletrade.ui.resource.Messages; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.trade.Article; import org.nightlabs.jfire.trade.dao.ArticleDAO; import org.nightlabs.jfire.trade.id.ArticleID; import org.nightlabs.jfire.trade.ui.articlecontainer.detail.ArticleTableProviderConstants; import org.nightlabs.progress.ProgressMonitor; import org.nightlabs.tableprovider.ui.TableProvider; /** * @author Daniel Mazurek - daniel [at] nightlabs [dot] de * */ public class ArticleTableProvider implements TableProvider<ArticleID, Article> { private static final long serialVersionUID = 5382512257907547221L; public static final String TYPE_PRODUCT_TYPE_NAME = "ProductTypeName"; //$NON-NLS-1$ public static final String TYPE_TARIFF = "Tariff"; //$NON-NLS-1$ /* (non-Javadoc) * @see org.nightlabs.tableprovider.ui.TableProvider#getObjects(java.util.Collection, org.nightlabs.progress.ProgressMonitor) */ @Override public Map<ArticleID, Article> getObjects(Collection<ArticleID> objectIDs, String scope, ProgressMonitor monitor) { String[] fetchGroups = getFetchGroups(scope); if (fetchGroups == null) { return Collections.emptyMap(); } Collection<Article> articles = ArticleDAO.sharedInstance().getArticles( objectIDs, fetchGroups, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); Map<ArticleID, Article> articleID2Article = new HashMap<ArticleID, Article>(); for (Article article : articles) { if (isCompatible(article, scope)) { ArticleID articleID = (ArticleID) JDOHelper.getObjectId(article); articleID2Article.put(articleID, article); } } return articleID2Article; } protected String[] getFetchGroups(String scope) { if (scope.equals(ArticleTableProviderConstants.SCOPE_PRODUCT_TYPE)) { return new String[] {FetchPlan.DEFAULT, Article.FETCH_GROUP_PRODUCT_TYPE, ProductType.FETCH_GROUP_NAME, Article.FETCH_GROUP_TARIFF, Tariff.FETCH_GROUP_NAME}; } return null; } /* (non-Javadoc) * @see org.nightlabs.tableprovider.ui.TableProvider#getText(java.util.Set, java.lang.Object) */ @Override public String getText(Set<String> types, Article element, String scope) { if (scope.equals(ArticleTableProviderConstants.SCOPE_PRODUCT_TYPE)) { if (types.contains(TYPE_PRODUCT_TYPE_NAME)) { return element.getProductType().getName().getText(); } else if (types.contains(TYPE_TARIFF)) { Tariff tariff = element.getTariff(); return tariff.getName().getText(); } } return ""; //$NON-NLS-1$ } /* (non-Javadoc) * @see org.nightlabs.tableprovider.ui.TableProvider#getTypeName(java.lang.String) */ @Override public String getTypeName(String type) { if (type.equals(TYPE_PRODUCT_TYPE_NAME)) { return Messages.getString("org.nightlabs.jfire.simpletrade.ui.articlecontainer.detail.ArticleTableProvider.column.productTypeName"); //$NON-NLS-1$ } else if (type.equals(TYPE_TARIFF)) { return Messages.getString("org.nightlabs.jfire.simpletrade.ui.articlecontainer.detail.ArticleTableProvider.column.tariff"); //$NON-NLS-1$ } return type; } /* (non-Javadoc) * @see org.nightlabs.tableprovider.ui.TableProvider#getTypes() */ @Override public String[] getTypes(String scope) { if (scope.equals(ArticleTableProviderConstants.SCOPE_PRODUCT_TYPE)) { return new String[] {TYPE_PRODUCT_TYPE_NAME, TYPE_TARIFF}; } return new String[] {}; } /* (non-Javadoc) * @see org.nightlabs.tableprovider.ui.TableProvider#isCompatible(java.lang.String) */ @Override public boolean isCompatible(Article article, String scope) { if (scope.equals(ArticleTableProviderConstants.SCOPE_PRODUCT_TYPE)) { try { return article.getProductType() instanceof SimpleProductType; } catch (Exception e) { return false; } } return false; } @Override public boolean isGeneric() { // TODO Auto-generated method stub return false; } @Override public Image getColumnImage(Set<String> types, Article element, String scope) { // TODO Auto-generated method stub return null; } }