[Android]스타크래프트 프로리그 소스 공개!

개인적으로 미루고 미뤄왔던 안드로이드 습작용 어플 “스타크래프트 프로리그” 앱

소스를 공개한다.

기존에 있던 소스만 살짝 다듬으려고 했는데, 아뿔싸~!

e스포츠협회사이트가 리뉴얼을 했다.

그래서 하는 수 없이 마지막으로 Jsoup 라이브러리를 사용해서  HTML파싱노가다를

한번 더 하기로 했다.

===========================================================

“스타크래프트 프로리그” 앱에서 제공되는 핵심기능은 아래와 같다.

  • 해당 날짜의 프로리그 전체 결과와 상세결과(달력검색 제공)
  • 팀랭킹
  • 개인랭킹은 현재 데이터를 제공하지 않으므로 제외함
  • 좋아하는 선수 응원하기, 응원랭킹순위 보기
  • 해당날짜의 경기가 있으면 경기결과를 알림으로 알려주기

주요부분을 살펴보면,  데이터는

  • HTML 파싱데이터
  • 파일캐시데이터

두가지 형태로 제공되며,  파일캐시데이터가 없을 때만 HTML파싱데이터를

사용하게 된다.

데이터는 비동기로 가져오며, 기본적인 구조는 최범균님 포스팅을 참고하여 만들었다.

구조를 UML로 살펴보면,

async_structure

프로리그 결과, 팀랭킹 액티비티별로 각각 비동기로 데이터를 가져와 처리하는

부분을 추상클래스인 AsyncDataViewer를 상속받아 처리했다.

그리고, 파일캐시데이터는 데이터를 제공하는 DataProvider 인터페이스를

구현한 FileCacheDataProvider 클래스가 처리하고, 파일캐시데이터가 없으면

HTML을 파싱하여 데이터를 제공하는 HtmlDataProvider가 데이터를 제공하게 된다.

dataprovider_structure

AsyncDataViewer 추상클래스를 구현한 각 구현클래스들은 DataProvider의 구현체를

팩토리패턴을 사용한 DataProviderFactory 클래스를 통해 제공받게 된다.

public class DataProviderFactory {
    private static DataProvider dataProvider = new HtmlDataProvider();

    public static DataProvider create(Context context) {
        return new FileCacheDataProvider(context, dataProvider);
    }
}

전에 DataProvider 인터페이스 없이 HTML파싱으로 데이터를 제공하는 HtmlDataProvider

클래스만 있던 것을 한단계 추상화해서 DataProvider 인터페이스를 만들고 그 구현체를

팩토리 클래스를 통해 FileCacheDataProvider 객체를 만들고 HtmlDataProvider의 객체를

파라미터로 가져와 파일캐시데이터가 없을 시 HtmlDataProvider 객체를 통해 데이터를

제공하는 것이다.

즉, FileCacheDataProvider객체가 HtmlDataProvider 객체의 “데코레이터 역할“을

하는 셈이다.

그 밖에, 비동기로 제공받은 데이터는 컬백메서드를 통해 각 액티비티의 메서드를 호출하여

결과를 보여주게 된다.

listadapter_structure

그 밖에, HTML을 파싱해서 결과를 검증하는데 필요한 테스트코드를 따로 만들었다.

public class JsoupParserTest {
    @Test
    public void getDelimiterCurrentDate() {
        String currentDelimiterDate = CalendarUtils.getDelimiterCurrentDate();
	    assertEquals("13-06-09", currentDelimiterDate);
	}

    @Test
    public void removedDelimeterSearchDate() {
        assertEquals("130609", CalendarUtils.getDelimiterCurrentDate().replace("-", ""));
    }
    ....
}

프로그램 소소는 압축하여 여기에 업로드 하였다.

===========================================================

많은 기능이 있다거나 혹은 소스가 보기에 그리 훌륭하진 않지만 2011년 6월,

처음 안드로이드로 앱을 만들었을 당시의 소스와 점진적으로 리팩토링을 거쳐

지금까지의 최종소스를 만들고 나니 나름 감회가 새롭다.

그리고, 비록 재미로 시작했지만 이 “스타크래프트 프로리그”앱은 나에게

많은 좋은 기회를 주어 더욱 각별하다.

안드로이드를 공부하거나 새롭게 어플을 만드는 분에게 작은 도움이나마

됐으면 하는 바램이다.

Advertisements

[Android]스타크래프트 프로리그 소스 공개!”에 대한 1개의 생각

  1. 핑백: [리팩토링]리팩토링 사례 공유 모임 후기 | To the Professional Programmer

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중