徽章实施问题

时间:2011-01-29 08:20:56

标签: java implementation

我正在设计一个使用JSF + EJBS + JPA等的网站JAVA EE 6来总结。

您可以创建一篇文章,如果它符合某些条件(例如1000次观看),它会获得“1000次观看徽章”。

当我想动态创建新徽章时出现问题。我有一个徽章实体类,所有徽章都是从数据库中提取的。如何动态建立徽章授予文章的条件,因为行为取决于每个实例而不是其类型?

例如,用于评估“1000视图徽章”的会议要求的业务逻辑与“本周最佳评价文章”中使用的业务逻辑非常不同。此外,如果徽章数量增加怎么办? / p>

我不能只扩展一个类,因为它没有意义,所以我认为我没有以正确的方式看待它。

有关如何实施它的任何想法?

1 个答案:

答案 0 :(得分:2)

实现一个@Singleton,它有一个方法在一段时间内运行一次(每小时一次或每24小时一次)。它将有一组类来检查某些条件的帖子。如果您想要一个新徽章,只需添加一个类。

@Singleton
public class Watchdog implements Serializable {
    /** The Constant serialVersionUID. */
    private static final long serialVersionUID = 1L;

    /** The em. */
    @PersistenceContext
    private EntityManager em;

    private List<PostChecker> checkers = new ArrayList<PostChecker>();

    @PostConstruct
    public void init() {
      checkers.add(new ThousandViewChecker());
      checkers.add(new PopularPostChecker());
      ....


    }

    @Schedule(...)
    public void monitor() {
       for (PostChecker checker : checkers) {
          checker.check(em);
       }        
    }

}

如果您不想每次都添加一个类,请创建一些带有徽章授予规则的xml文件,并创建一个checkers工厂,这将使用这些xml文件构建其徽章规则。然后要添加徽章,您只需添加一个xml。