2011-01-29 2 views
2

JSF + EJBS + JPA 등을 사용하여 웹 사이트를 디자인하고 있습니다. JAVA EE 6을 요약합니다.배지 구현 문제

기사를 만들 수 있으며 특정 조건 (예 : 1000보기)을 충족하면 시간이 지남에 따라 기사에 '1000 개의보기 배지'가 부여됩니다.

새로운 배지를 동적으로 생성하려는 경우 문제가 발생합니다. 배지 엔티티 클래스가 있고 모든 배지가 데이터베이스에서 가져옵니다. 행동이 유형이 아닌 각 인스턴스에 따라 다르기 때문에 기사에 부여 할 배지 조건을 동적으로 설정하려면 어떻게해야합니까?

예를 들어 '1000 개의보기 배지'에 대한 회의 요구 사항을 평가하는 비즈니스 논리는 '최고 평점 기사'에 사용 된 것과 매우 다릅니다. 또한 배지 수가 증가하면 어떻게됩니까?

클래스를 확장 할 수는 없습니다. 이해할 수 없기 때문에 클래스를 확장 할 수 없으므로 올바른 방법을 찾지 못했습니다.

구현 방법에 대한 의견이 있으십니까?

답변

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 파일을 생성하고 해당 XML 파일을 사용하여 배지 규칙을 구성합니다 체커의 공장을 생성하지 않으려면. 그런 다음 배지를 추가하려면 xml을 추가하기 만하면됩니다.

+0

+1은 코드가 "check 'em"을 초래했기 때문입니다. – bjrnt

+0

어떻게 XML로 구현하겠습니까? 그것은 속성이 아니라 오히려 true 또는 false로 해석되어야하는 Java 코드입니다. String을 실행할 수 있습니까? – arg20