Example #1
0
const wxArrayString &CVolumes::GetKits() const
{
  if(m_asKits.IsEmpty())
  {
    CPersistKitList *pKits = mainApp::GetKitList();
    map<wxString,CVolume *>::const_iterator itr;
    for(itr = m_mapKitVolume.begin();
      itr != m_mapKitVolume.end();
      ++itr)
    {
      const wxString &sKit(itr->first);
      if(pKits->GetLsArray(sKit) != NULL)
      {
        m_asKits.Add(sKit);
      }

      else
      {
        wxString sError("Cannot find kit: ");
        sError.Append(sKit);
        sError.Append(" in ILSandLadderInfo.xml");
        wxASSERT_MSG(0,sError);
        mainApp::LogMessage(sError);
      }
    }
  }
  return m_asKits;
}
Example #2
0
bool CPanelLabGeneral::TransferDataToWindow()
{
  bool bRtn = (m_pInfo != NULL) && (m_pMarker != NULL);
  if(bRtn)
  {
    wxString sValue;
    wxString s;
    const wxString &sKitName = m_pMarker->GetMarkerSetName();
    const wxString &sILS = m_pMarker->GetILSName();
    CPersistKitList *pKitList = mainApp::GetKitList();
    const wxArrayString *psILS = pKitList->GetLsArray(sKitName);
    size_t nSize = 
      (psILS == NULL)
      ? 0
      : psILS->GetCount();

    m_pChoiceILS->Clear();
    if(!nSize)
    {
      wxString sError;
      bRtn = false;
      sError = "Cannot file ILS for kit, ";
      sError.Append(sKitName);
      mainApp::LogMessage(sError);
      wxASSERT_MSG(0,sError);
    }
    else
    {
      m_pChoiceILS->Append(*psILS);
      if(sILS.IsEmpty() || !m_pChoiceILS->SetStringSelection(sILS))
      {
        m_pChoiceILS->Select(0);
      }
      m_pLabelVolumeName->SetLabel(m_pInfo->GetVolumeName());
      m_pLabelKitName->SetLabel(sKitName);
      const wxDateTime &dt = m_pInfo->GetLastUpdate();
      sValue.Empty();
      if(dt.GetTicks() > 100)
      {
        const wxString &sUser = m_pInfo->GetUserID();
        sValue = dt.Format();
        if(!sUser.IsEmpty())
        {
          sValue.Append(" by ");
          sValue.Append(sUser);
        }
      }
      m_pLabelLastUpdateUser->SetLabel(sValue);
      m_pCheckUserOverride->SetValue(m_pMarker->GetAllowUserOverrideILS());
      m_pTextProtocol->SetValue(m_pInfo->GetProtocol());
      m_pTextLot->SetValue(m_pInfo->GetLot());
      m_pTextNotes->SetValue(m_pInfo->GetNotes());

      bool bDataAnalyzed = m_pMarker->GetAnalyzed();
      m_pRadioRaw->SetValue(!bDataAnalyzed);
      m_pRadioAnalyzed->SetValue(bDataAnalyzed);

      wxRadioButton *pRadio;
      wxString sValue = m_pInfo->GetDataFileType();
      size_t nLEN = m_vpRadioFileType.size();
      bool bFound = false;
      bool b;
      if(sValue.Len())
      {
        for(size_t n = 0; n < nLEN; n++)
        {
          pRadio = m_vpRadioFileType.at(n);
          b = (pRadio->GetLabelText() == sValue);
          if(b)
          {
            bFound = true;
          }
          pRadio->SetValue(b);
        }
      }
      if(!bFound)
      {
        m_vpRadioFileType.at(0)->SetValue(true);
      }
    }
  }
  return bRtn;  
}
void CPersistKitList::UnitTest()
{
  CPersistKitList kitList;
  wxString sError;
  if(!kitList.Load())
  {
    sError.Append(_T("CPersistKitList::Load() failed\n"));
  }
  else
  {
    const wxArrayString *psKitArray;
    const wxArrayString *psArray;
    psKitArray = &kitList.GetArray();
    size_t nCount = psKitArray->GetCount();
#define PP12 _T("PowerPlex 1.2")
#define PP18D _T("PowerPlex 18D")
#define SGM _T("SGM Plus")
#define SEFILER _T("SEfilerPlus")
#define NGM _T("NGMSElect")
#define PP21 _T("PowerPlex 21")
    struct
    {
      size_t n; // number of loci
      const wxChar *psName;
    } LIST[] = 
    {
      {7,  _T("Cofiler")},
      {16, _T("Identifiler Less ILS250")},
      {16, _T("IdentifilerPlus Less ILS250")},
      {16, _T("IdentifilerPlus")},
      {16, _T("Identifiler")},
      {9,  PP12},
      {18,  PP18D},
      {16, _T("PowerPlex 16")},
      {11, _T("PowerPlex Y")},
      {16, _T("Yfiler")},
      {12, SEFILER},
      {11, SGM},
      {10, _T("ProfilerPlus")},
      {17, NGM},
      {21,PP21}
    };
    size_t N_LIST = sizeof(LIST) / sizeof(LIST[0]);
    if(nCount != N_LIST)
    {
      sError.Append(wxString::Format(
        _T("\nNumber of kits is %d, expected %d"),
        (int)nCount, (int)N_LIST ));
    }
    map<wxString,size_t> kitLocusCount;
    map<wxString,size_t>::iterator itrKL;
    size_t i;
    for(i = 0; i < N_LIST; i++)
    {
      kitLocusCount.insert(
        map<wxString,size_t>::value_type(
          wxString(LIST[i].psName),LIST[i].n));
    }

    for(i = 0; i < nCount; i++)
    {
      // verify LS count

      const wxString &sItem = psKitArray->Item(i);
      psArray = kitList.GetLsArray(sItem);
      if(psArray == NULL)
      {
        sError.Append(_T("\nCannot find ILS for kit: "));
        sError.Append(sItem);
      }
      else
      {
        size_t nExpected = 4;
        if(sItem == PP12 || sItem == PP18D || sItem == NGM || sItem == SEFILER || sItem == PP21)
        { nExpected = 1;
        }
        else if(sItem == SGM)
        { nExpected = 5;
        }
        else if(
          sItem.StartsWith(_T("Identifiler")) &&
          !sItem.Contains(_T("250"))
          )
        { nExpected = 5;
        }

        if(psArray->GetCount() != nExpected)
        {
          sError.Append(
            _T("\nLS count for kit: "));
          sError.Append(sItem);
          sError.Append(wxString::Format(
            _T(", is %d, expected %d"),
            (int)psArray->GetCount(),(int)nExpected));
        }
      }
        
      itrKL = kitLocusCount.find(sItem);
      const CLocusNameList *pList = kitList.GetLocusNameList(sItem);
      if(pList == NULL)
      {
        sError.Append(_T("\nCannot find loci for kit: "));
        sError.Append(sItem);
      }
      if(itrKL == kitLocusCount.end())
      {
        sError.Append(_T("\nUnknown kit name: "));
        sError.Append(sItem);
      }
      else if( (pList != NULL) && (pList->size() != itrKL->second) )
      {
        sError.Append(_T("\nLocus count for kit: "));
        sError.Append(sItem);
        sError.Append(wxString::Format(
          _T(", is %d, expected %d"),
          (int)pList->size(),(int)itrKL->second));
      }
    }
  }
  wxASSERT_MSG(sError.IsEmpty(),sError);
#undef PP12
}