Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.89 by aga4096, Wed May 18 10:00:17 2005 UTC revision 1.90 by tani, Mon May 23 08:00:30 2005 UTC
# Line 22  Line 22 
22   *   *
23   * $Revision$   * $Revision$
24   * $Log$   * $Log$
25     * Revision 1.90  2005/05/23 08:00:30  tani
26     * insertGroup, updateGroup: グループ名が重複した場合はエラーコードを返す.
27     *
28   * Revision 1.89  2005/05/18 10:00:17  aga4096   * Revision 1.89  2005/05/18 10:00:17  aga4096
29   * ・モジュール統合に対応.   * ・モジュール統合に対応.
30   *   *
# Line 437  static void syslog_printf( char* format, Line 440  static void syslog_printf( char* format,
440      va_start(ap, format);      va_start(ap, format);
441      openlog( "commonal", LOG_ODELAY, LOG_USER );      openlog( "commonal", LOG_ODELAY, LOG_USER );
442      vsyslog( LOG_DEBUG, format, ap );      vsyslog( LOG_DEBUG, format, ap );
443      #endif  #endif
444  }  }
445    
446  /**  /**
# Line 2643  result_t deleteGroup( sessionid_t sid, g Line 2646  result_t deleteGroup( sessionid_t sid, g
2646      return ret;      return ret;
2647  }  }
2648    
2649    
2650  /**  /**
2651   *   *
2652   * グループ登録.   * グループ登録.
# Line 2656  result_t deleteGroup( sessionid_t sid, g Line 2660  result_t deleteGroup( sessionid_t sid, g
2660   * @return RES_DB_NOT_INITIALIZED   * @return RES_DB_NOT_INITIALIZED
2661   * @return RES_NO_SUCH_SESSION   * @return RES_NO_SUCH_SESSION
2662   * @return RES_DB_QUERY_ERROR   * @return RES_DB_QUERY_ERROR
2663   *   * @return RES_GROUPNAME_ALREADY_EXISTS
2664   */   */
2665  result_t insertGroup( sessionid_t sid, const group_t* group, groupid_t* gid )  result_t insertGroup( sessionid_t sid, const group_t* group, groupid_t* gid )
2666  {  {
# Line 2672  result_t insertGroup( sessionid_t sid, c Line 2676  result_t insertGroup( sessionid_t sid, c
2676      SQLLEN cbGname = SQL_NTS, cbGdesc = SQL_NTS, cbItem_number_limit = 0, cbIndex_number_limit = 0, cbItem_storage_limit = 0;      SQLLEN cbGname = SQL_NTS, cbGdesc = SQL_NTS, cbItem_number_limit = 0, cbIndex_number_limit = 0, cbItem_storage_limit = 0;
2677      SQLRETURN sqlcode;      SQLRETURN sqlcode;
2678            
2679        // examine whether there is already a group name
2680        if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
2681            string sql = "SELECT gid FROM " + dbprefix + "_xoonips_groups WHERE gname=?";
2682            sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);
2683            if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){
2684                SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_GROUP_GNAME_LEN, 0, gname, 0, &cbGname );
2685                strncpy2( (char*)gname, group -> getGname(), XNP_GROUP_GNAME_LEN );
2686                if( ( sqlcode = SQLExecute( hstmt ) ) == SQL_SUCCESS ){
2687                    SQLLEN count = 0;
2688                    if( ( sqlcode = SQLRowCount( hstmt, &count ) ) == SQL_SUCCESS ){
2689                        if( count > 0 ){
2690                            // already exists
2691                            ret = RES_GROUPNAME_ALREADY_EXISTS;
2692                            SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
2693                            return ret;
2694                        }
2695                    }else{
2696                        string s( "SQLRowCount in insertGroup sql=" );
2697                        s += string( sql );
2698                        setLastErrorString( s.c_str( ) );
2699                        ret = RES_DB_QUERY_ERROR;
2700                        return ret;
2701                    }
2702                }else{
2703                    string s( "SQLExecute in insertGroup " );
2704                    s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode );
2705                    setLastErrorString( s.c_str( ) );
2706                    ret = RES_DB_QUERY_ERROR;
2707                }
2708            }else{
2709                string s( "SQLPrepare in insertGroup " );
2710                s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode );
2711                setLastErrorString( s.c_str( ) );
2712                ret = RES_ERROR;
2713            }
2714            SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
2715        }
2716        
2717      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
2718          sql = "INSERT INTO " + dbprefix + "_xoonips_groups ( gname, gdesc, group_item_number_limit, group_index_number_limit, group_item_storage_limit ) VALUES ( ?, ?, ?, ?, ? )";          sql = "INSERT INTO " + dbprefix + "_xoonips_groups ( gname, gdesc, group_item_number_limit, group_index_number_limit, group_item_storage_limit ) VALUES ( ?, ?, ?, ?, ? )";
2719          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);          sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);
# Line 2789  result_t updateGroup( sessionid_t sid, c Line 2831  result_t updateGroup( sessionid_t sid, c
2831      SQLLEN cbGname = SQL_NTS, cbGdesc = SQL_NTS;      SQLLEN cbGname = SQL_NTS, cbGdesc = SQL_NTS;
2832      SQLRETURN sqlcode;      SQLRETURN sqlcode;
2833            
2834        // examine whether there is already a group name
2835        if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
2836            string sql = "SELECT gid FROM " + dbprefix + "_xoonips_groups WHERE gname=? AND gid!=" + unsignedIntToString(group -> getGID() );
2837            sqlcode = SQLPrepare(hstmt, (SQLCHAR*)sql.c_str(), SQL_NTS);
2838            if( sqlcode == SQL_SUCCESS || sqlcode == SQL_SUCCESS_WITH_INFO ){
2839                SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, XNP_GROUP_GNAME_LEN, 0, gname, 0, &cbGname );
2840                strncpy2( (char*)gname, group -> getGname(), XNP_GROUP_GNAME_LEN );
2841                if( ( sqlcode = SQLExecute( hstmt ) ) == SQL_SUCCESS ){
2842                    SQLLEN count = 0;
2843                    if( ( sqlcode = SQLRowCount( hstmt, &count ) ) == SQL_SUCCESS ){
2844                        if( count > 0 ){
2845                            // already exists
2846                            ret = RES_GROUPNAME_ALREADY_EXISTS;
2847                            SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
2848                            return ret;
2849                        }
2850                    }else{
2851                        string s( "SQLRowCount in insertGroup sql=" );
2852                        s += string( sql );
2853                        setLastErrorString( s.c_str( ) );
2854                        ret = RES_DB_QUERY_ERROR;
2855                        return ret;
2856                    }
2857                }else{
2858                    string s( "SQLExecute in insertGroup " );
2859                    s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode );
2860                    setLastErrorString( s.c_str( ) );
2861                    ret = RES_DB_QUERY_ERROR;
2862                }
2863            }else{
2864                string s( "SQLPrepare in insertGroup " );
2865                s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode );
2866                setLastErrorString( s.c_str( ) );
2867                ret = RES_ERROR;
2868            }
2869            SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
2870        }
2871        
2872      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
2873          sql = "UPDATE " + dbprefix + "_xoonips_groups SET gname=?, gdesc=?, ";          sql = "UPDATE " + dbprefix + "_xoonips_groups SET gname=?, gdesc=?, ";
2874          sql += "group_item_number_limit=" + unsignedIntToString( group -> getItemNumberLimit( ) ) + " ,";          sql += "group_item_number_limit=" + unsignedIntToString( group -> getItemNumberLimit( ) ) + " ,";

Legend:
Removed from v.1.89  
changed lines
  Added in v.1.90

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26