| 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 |
* |
* |
| 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 |
/** |
/** |
| 2646 |
return ret; |
return ret; |
| 2647 |
} |
} |
| 2648 |
|
|
| 2649 |
|
|
| 2650 |
/** |
/** |
| 2651 |
* |
* |
| 2652 |
* グループ登録. |
* グループ登録. |
| 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 |
{ |
{ |
| 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); |
| 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( ) ) + " ,"; |