Beispiel #1
0
/***********************************************************************************************************
* 程序创建:刘进朝                     程序修改:赵进军
* 函数功能:更新联络消息日志
* 参数说明:
*    lMessageID:联络消息ID
*  nDetailState:详细状态
* 注意事项:
*       TransMessage->0:未发送  1:部分发送  2:未读  3:部分已读   4:全部已读
* TransMessageDetail->0:信息未发到终端   1:消息未读  2:消息已读  3:消息已删
* 修改日期:2015/10/12 14:15:00
***********************************************************************************************************/
j_result_t CMySQLAccess::UpdateContextInfo(long lMessageID, int nDetailState)
{
	if (lMessageID < 0)																								// 当前位置的消息ID不能为负数
		return J_DB_ERROR;

	if (!m_bConnected)
		return J_DB_ERROR;

	try
	{
		char strCmd[128] = { 0 };
		sprintf(strCmd, "UPDATE transmessagedetail set State= '%d' WHERE MessageID = '%d'",							// 更新transmessagedetail表消息状态
			nDetailState, lMessageID);
		int ret = mysql_real_query(m_mysql, strCmd, strlen(strCmd));

		if (ret == 0)																								// 更新transmessage表消息状态
		{
			memset(strCmd, 0, sizeof(strCmd));
			sprintf(strCmd, "Select Count(*) from transmessagedetail WHERE MessageID = '%d'", lMessageID);			// 获取transmessagedetail中所有的符合条件的数据
			int totalCount = DataCount(strCmd);

			memset(strCmd, 0, sizeof(strCmd));																		// 检查是否存在未发送的情况
			sprintf(strCmd, "Select Count(*) from transmessagedetail WHERE MessageID = '%d' AND State= '0'", lMessageID);
			int retCount = DataCount(strCmd);

			if (retCount == totalCount)																				// 表示当全部未发送,默认全部无需更改
				return J_OK;

			memset(strCmd, 0, sizeof(strCmd));
			if (retCount != 0 && retCount < totalCount)																// 标志 部分未发送
				sprintf(strCmd, "UPDATE transmessage set DealStatus= '%d' WHERE MessageID = '%d'", 1, lMessageID);
			else																									// 标志 全部发送
			{
				sprintf(strCmd, "Select Count(*) from transmessagedetail WHERE MessageID = '%d' AND State= '1'",	// 文件未复制的数量
					lMessageID);
				retCount = DataCount(strCmd);

				memset(strCmd, 0, sizeof(strCmd));
				if (retCount == totalCount)
					sprintf(strCmd, "UPDATE transmessage set DealStatus= '%d' WHERE MessageID = '%d'", 2, lMessageID);   // 文件未读

				if (retCount < totalCount && retCount>0)
					sprintf(strCmd, "UPDATE transmessage set DealStatus= '%d' WHERE MessageID = '%d'", 3, lMessageID);   // 文件部分已读

				if (retCount == 0)
					sprintf(strCmd, "UPDATE transmessage set DealStatus= '%d' WHERE MessageID = '%d'", 4, lMessageID);	// 文件全部已读
			}
			ret = mysql_real_query(m_mysql, strCmd, strlen(strCmd));
			return	ret == 0 ? J_OK : J_DB_ERROR;
		}
		else
			return J_DB_ERROR;
	}
	catch (...)
	{
		return J_DB_ERROR;
	}
	return J_OK;
}
Beispiel #2
0
bool ZernikeMom::CalculateOneFrame(int frame){
  const double PI = 3.141592654;

  // cout << "ZernikeMom::CalculateOneFrame("<<frame<<")"<<endl;

   EnsureImage();
   SegmentData()->setCurrentFrame(frame);
   
   TabulateFactorials(param.maxorder);

   FindSegmentNormalisations();
   
   int nc=NumberOfCoefficients(param.maxorder);

   vector<double> zerovec(nc,0.0);

   vector<vector<double> > A_real(DataCount(),zerovec);
   vector<vector<double> > A_imag(DataCount(),zerovec);

    int width = Width(true), height = Height(true);

    int resind=0;

    for(int n=0;n<=param.maxorder;n++)
      for(int m=n&1;m<=n;m+=2){
	for (int y=0; y<height; y++)
	  for (int x=0; x<width; x++){
	    vector<int> svec = SegmentVector(frame, x, y);
	    for (size_t j=0; j<svec.size(); j++) {
	      int dataind = DataIndex(svec[j], true);
	      if(dataind != -1){
		int label=svec[j];
		double xtilde=(x-XAvg(label))*Scaling(label);
		double ytilde=(y-YAvg(label))*Scaling(label);
		double roo=sqrt(xtilde*xtilde+ytilde*ytilde);
		double theta;
		if(ytilde || xtilde)
		  theta=atan2(ytilde,xtilde);
		else
		  theta=0;

		double r=R(n,m,roo);
		r *= Scaling(label)*Scaling(label)*(n+1)/PI;
		A_real[dataind][resind] += r*cos(m*theta);
		A_imag[dataind][resind] -= r*sin(m*theta);
	      }
	    }
	  }
	resind++;
      }

    for(size_t i=0;i<A_real.size();i++){
      ((ZernikeMomData*)GetData(i))->SetData(A_real[i],A_imag[i],param);
    }
    calculated = true;

    return true;
}
Beispiel #3
0
  bool MuvisFeat::CalculateOneLabel(int /*f*/, int /*l*/) {
    if (!handler)
      return false;

    string hdr = "MuvisFeat::CalculateOneLabel() : ";

    int p = handler->API_Init();
    
    if (MethodVerbose())
      cout << hdr << "p=" << p << endl;

    if (!p) {
      cerr << hdr << "API_Init() failed" << endl;
      return false;
    }

    int len = 0;
    double *vec = handler->API_Calculate(len);
    
    if (MethodVerbose())
      cout << hdr << "len=" << len << endl;

    if (len<1) {
      cerr << hdr << "API_Calculate() failed" << endl;
      return false;
    }

    SetVectorLength(len);

    if (DataCount()!=1) {
      cerr << hdr << "DataCount()!=1:" << DataCount() << endl;
      return false;
    }

    MuvisFeatData *d = (MuvisFeatData*)GetData(0);
    d->ZeroToSize(len);
    d->SetVector(vector<float>(vec, vec+len));

    int r = handler->API_Exit();
    if (MethodVerbose())
      cout << hdr << "r=" << r << endl;

    if (!r) {
      cerr << hdr << "API_exit() failed" << endl;
      return false;
    }

    return true;
  }
Beispiel #4
0
bool CLimn_ModelData_Base::ExchangeDataFields(MDataChange & DX)
  {
  if (DX.Handle>=1 && DX.Handle<=DataCount())
    {
    int i=DX.Handle-1;
    CLimn_ModelData_ParmDef & D = *m_Defs[i];
    if (D.m_IsBool)
      {
      if (DX.HasReqdValue)
        m_Data[i] = DX.Bool ? 1.0:0.0;
      DX.Bool = m_Data[i]>0.5;
      }
    else
      {
      if (DX.HasReqdValue)
        m_Data[i] = DX.Double;
      DX.Double = m_Data[i];
      }
    return true;
    }
  return false;
  };
Beispiel #5
0
/***********************************************************************************************************
* 程序创建:赵进军                     程序修改:刘进朝
* 函数功能:更新联络文件日志
* 参数说明:
*      lFileID:联络文件ID
* nDetailState:详细状态
* 注意事项:当前只做到是否复制这一层,如需增加撤销状态,请修改代码
* transfile表数据状态->0:未发送 1:部分发送  2:未复制  3:部分复制  4:全部复制  5:未撤销  6:已撤销  7:正在撤销
* transfiledetail表数据状态->0:文件未发到终端  1:文件未复制  2:文件已复制   3:文件未撤销  4:文件已撤销
* 以上状态详细参照数据库是设计
* 修改日期:2015/10/12 14:17:00
***********************************************************************************************************/
j_result_t CMySQLAccess::UpdateFileInfo(long lFileID, int nDetailState)
{
	if (lFileID < 0)																								// 当前位置的消息ID不能为负数
		return J_DB_ERROR;

	if (!m_bConnected)
		return J_DB_ERROR;

	try
	{
		char strCmd[128] = { 0 };
		char timeInterval[arr_size] = { 0 };
		CXlHelper::GetTimestamp(true, timeInterval);

		if (nDetailState == 2)
			sprintf(strCmd, "UPDATE transfiledetail set State= '%d',CopyTime ='%s' WHERE FileID = '%d'",			// 更新transfiledetail表消息状态
			nDetailState, timeInterval, lFileID);
		else
			sprintf(strCmd, "UPDATE transfiledetail set State= '%d' WHERE FileID = '%d'", nDetailState, lFileID);   // 更新transfiledetail表消息状态
		int ret = mysql_real_query(m_mysql, strCmd, strlen(strCmd));

		if (ret == 0)																								// 更新transfile表消息状态
		{
			memset(strCmd, 0, sizeof(strCmd));
			sprintf(strCmd, "Select Count(*) from transfiledetail WHERE FileID = '%d'", lFileID);					// 获取transfiledetail中所有的符合条件的数据
			int totalCount = DataCount(strCmd);

			memset(strCmd, 0, sizeof(strCmd));																		// 检查是否存在未发送的情况
			sprintf(strCmd, "Select Count(*) from transfiledetail WHERE FileID = '%d' AND State= '0'", lFileID);
			int retCount = DataCount(strCmd);

			if (retCount == totalCount)																				// 表示当全部未发送,默认全部无需更改
				return J_OK;

			memset(strCmd, 0, sizeof(strCmd));
			if (retCount != 0 && retCount < totalCount)																// 标志 部分未发送
				sprintf(strCmd, "UPDATE transfile set State= '%d' WHERE FileID = '%d'", 1, lFileID);
			else																									// 标志 全部发送
			{
				sprintf(strCmd, "Select Count(*) from transfiledetail WHERE FileID = '%d' AND State= '1'", lFileID);// 文件未复制的数量
				retCount = DataCount(strCmd);

				memset(strCmd, 0, sizeof(strCmd));
				if (retCount == totalCount)																			// 表示还有部分未复制
					sprintf(strCmd, "UPDATE transfile set State= '%d' WHERE FileID = '%d'", 2, lFileID);            // 文件未复制

				if (retCount < totalCount && retCount>0)
					sprintf(strCmd, "UPDATE transfile set State= '%d' WHERE FileID = '%d'", 3, lFileID);            // 文件部分复制

				if (retCount == 0)
					sprintf(strCmd, "UPDATE transfile set State= '%d' WHERE FileID = '%d'", 4, lFileID);			// 文件全部复制
			}
			ret = mysql_real_query(m_mysql, strCmd, strlen(strCmd));
			return	ret == 0 ? J_OK : J_DB_ERROR;
		}
		else
			return J_DB_ERROR;
	}
	catch (...)
	{
		return J_DB_ERROR;
	}
	return J_OK;
}
Beispiel #6
0
void CLimn_ModelData_Base::BuildDataFields(MDataDefn & DD)
  {
  const int ArrayDbg=0;

  DD.Text("Parameters...");
  //DD.Text("");

  CString GridTxt;
  bool InArray=false;
  bool GridBusy=false;
  int m_ColCount=0;
  int m_ValCount=0;
  int m_iCol=0;
  int m_iRow=0;
  for (int i=0; i<DataCount(); i++)
    {
    if (m_Defs[i])
      {
      CLimn_ModelData_ParmDef & D = *m_Defs[i];

      for (int j=0; j<D.m_Hdrs.GetCount(); j++)
        {
        CLimn_ModelData_ParmHdr & H=D.m_Hdrs[j];
        CString Txt(H.m_Text);
        if (H.m_nRows>1 && H.m_nCols>1)
          {
          Txt= "Matrix: ";
          m_ColCount=H.m_nCols;
          m_ValCount=H.m_nRows*H.m_nCols; 
          m_iCol=0;
          m_iRow=0;
          }
        else if (H.m_nRows>1 || H.m_nCols>1)
          {
          Txt= "Vector: ";
          m_ColCount=H.m_nCols;
          m_ValCount=H.m_nRows*H.m_nCols; 
          m_iCol=0;
          m_iRow=0;
          }
        Txt+=H.m_Text;
        DD.Page(H.m_Text, true);
        GridTxt=D.m_Tag;
        //DD.Text(Txt);
        }

      if (!D.m_Hide)
        {
        MD_Flags F=MF_PARAMETER;
        bool StartRow=false;
        bool EndRows=false;
        if (m_ValCount>0)
          {
          if (m_iCol==0)
            StartRow=true;
          if (++m_iCol>=m_ColCount)
            {
            m_iCol=0;
            m_iRow++;
            }
          if (--m_ValCount==0)
            {
            EndRows=true;
            }
          }

        if (D.m_ArrayBegin)
          {
          InArray=true;
          //CString Cls;
          //Cls.Format("DW_%s",D.m_Class);
          DD.ArrayBegin(D.m_Class, D.m_Tag, D.m_ArrayLen,0);

          if (ArrayDbg)
            gs_Dbg.PrintLn("ArrayBegin %s %s %i >>>>>>>>>>>", D.m_Class, D.m_Tag, D.m_ArrayLen);
          }

        if (StartRow)
          {
          if (!GridBusy)
            {
            DD.GridBegin(GridTxt, m_ColCount, m_ValCount/m_ColCount, 10, 0);
            GridBusy=true;
            }
          DD.GridRowStart();
          }
        if (InArray)
          {
          if (D.m_iIndex>=0)
            DD.ArrayElementStart(D.m_iIndex, 0);
          else
            DD.ArrayElementStart(D.m_sIndex, 0);
          if (ArrayDbg)
            gs_Dbg.PrintLn("ArrayEle  %s %i %s", D.m_Tag, D.m_iIndex, D.m_sIndex);
          
          //if (m_iCol==0)
          //  DD.Text("XXXXXX");  

          CString S;
          //S.Format("%s[%s]", D.m_Tag, D.m_Index);
          //S=D.m_Index;
          S="V";
          if (D.m_IsBool)
            DD.Bool  (S, "",  1+i,  F);
          else
            DD.Double(S, "",  1+i,  F, D.m_Cnv);
          
          DD.ArrayElementEnd(0);
          }
        else
          {
          if (D.m_IsBool)
            DD.Bool  (D.m_Tag, "",  1+i,  F);
          else
            DD.Double(D.m_Tag, "",  1+i,  F, D.m_Cnv);
          }
        if (EndRows)
          {
          DD.GridEnd();
          GridBusy=false;
          }

        if (D.m_ArrayEnd)
          {
          DD.ArrayEnd(0);
          if (ArrayDbg)
            gs_Dbg.PrintLn("ArrayEnd   %s %s <<<<<<<<<<<", "", "");
          InArray=false;
          }
        }
      }
    }
  };