CompilerPtr CompilersFoundDlg::GetCompiler(const wxDataViewItem& item) const
{
    CompilersFoundDlgItemData* itemData =
        dynamic_cast<CompilersFoundDlgItemData*>(m_dataviewModel->GetClientObject(item));
    if(itemData) {
        return itemData->GetCompiler();
    }
    return CompilerPtr(NULL);
}
/*static */CompilerPtr CompilerFactory::create(OJInt32_t language)
{
    if(language == AppConfig::Language::C)
    {
        return CompilerPtr(new CCompiler());
    }
    else if(language == AppConfig::Language::Cxx)
    {
        return CompilerPtr(new CppCompiler());
    }
    else if(language == AppConfig::Language::Java)
    {
        return CompilerPtr(new JavaCompiler());
    }

    //TODO: remove this assert.
    assert(false && "unsupport code language!");

    return NULL;
}