| 22 |
* |
* |
| 23 |
* $Revision$ |
* $Revision$ |
| 24 |
* $Log$ |
* $Log$ |
| 25 |
|
* Revision 1.108 2005/09/08 05:40:21 tani |
| 26 |
|
* freeStringArrayを定義. |
| 27 |
|
* selectiveHarvesting:OAIPMHのidentifierを返す. |
| 28 |
|
* XNP_CONFIG_REPOSITORY_NIJC_CODEを定義. |
| 29 |
|
* |
| 30 |
* Revision 1.107 2005/08/30 09:39:31 aga4096 |
* Revision 1.107 2005/08/30 09:39:31 aga4096 |
| 31 |
* ・xnp_get_item_status を作成. |
* ・xnp_get_item_status を作成. |
| 32 |
* |
* |
| 6868 |
void freeItemType( const itemtype_t* ptr ){ delete[] ( itemtype_t* )ptr; } |
void freeItemType( const itemtype_t* ptr ){ delete[] ( itemtype_t* )ptr; } |
| 6869 |
void freeItemID( const itemid_t* ptr ){ delete[] ( itemid_t* )ptr; } |
void freeItemID( const itemid_t* ptr ){ delete[] ( itemid_t* )ptr; } |
| 6870 |
void freeString( char* str ){ delete[] str; } |
void freeString( char* str ){ delete[] str; } |
| 6871 |
|
void freeStringArray( char** strs, int len ){ for( int i = 0; i < len; i++ ) freeString( strs[ i ] ); delete[] strs; } |
| 6872 |
void freeChangeLog( const changelog_t* ptr ){ delete[] ( changelog_t* )ptr; } |
void freeChangeLog( const changelog_t* ptr ){ delete[] ( changelog_t* )ptr; } |
| 6873 |
void freePubmed( const pubmed_t* ptr ){ delete[] ( pubmed_t* )ptr; } |
void freePubmed( const pubmed_t* ptr ){ delete[] ( pubmed_t* )ptr; } |
| 6874 |
void freeInt( const int* ptr ){ delete[] ( int* )ptr; } |
void freeInt( const int* ptr ){ delete[] ( int* )ptr; } |
| 8261 |
* @param iids item_idを返す配列 item_idの小さいものから配列に入る |
* @param iids item_idを返す配列 item_idの小さいものから配列に入る |
| 8262 |
* @param iidsLen iidsの長さ |
* @param iidsLen iidsの長さ |
| 8263 |
*/ |
*/ |
| 8264 |
result_t selectiveHarvesting( time_t from, time_t until, int startIID, int limit, itemid_t **iids, int *iidsLen ) |
result_t selectiveHarvesting( time_t from, time_t until, int startIID, int limit, char ***iids, int *iidsLen ) |
| 8265 |
{ |
{ |
| 8266 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 8267 |
if ( limit < 0 ) return RES_ERROR; |
if ( limit < 0 ) return RES_ERROR; |
| 8268 |
|
|
| 8269 |
string sql = "select item_id from " + dbprefix + "_xoonips_item_status where "; |
char* nijc_code = 0; |
| 8270 |
|
if( getConfigValue( XNP_CONFIG_REPOSITORY_NIJC_CODE, &nijc_code ) != RES_OK ){ |
| 8271 |
|
return RES_ERROR; |
| 8272 |
|
} |
| 8273 |
|
|
| 8274 |
|
string sql = "select stat.item_id, item_type_id from " + dbprefix + "_xoonips_item_status as stat, " |
| 8275 |
|
+ dbprefix + "_xoonips_item_basic as basic where basic.item_id=stat.item_id and "; |
| 8276 |
if ( from != 0 ) sql += unsignedIntToString(from) + " <= unix_timestamp(timestamp) and "; |
if ( from != 0 ) sql += unsignedIntToString(from) + " <= unix_timestamp(timestamp) and "; |
| 8277 |
if ( until != 0 ) sql += " unix_timestamp(timestamp) <= " + unsignedIntToString(until) + " and "; |
if ( until != 0 ) sql += " unix_timestamp(timestamp) <= " + unsignedIntToString(until) + " and "; |
| 8278 |
sql += |
sql += |
| 8279 |
" item_id >= " + unsignedIntToString(startIID) + |
" stat.item_id >= " + unsignedIntToString(startIID) + |
| 8280 |
" limit " + unsignedIntToString(limit); |
" limit " + unsignedIntToString(limit); |
| 8281 |
sqlexec_t s( "updateItemStatus", sql, &ret ); |
sqlexec_t s( "updateItemStatus", sql, &ret ); |
| 8282 |
//setLastErrorString( "selectiveHarvesting..." ); |
//setLastErrorString( "selectiveHarvesting..." ); |
| 8284 |
if ( s.getSqlcode() == SQL_SUCCESS ){ |
if ( s.getSqlcode() == SQL_SUCCESS ){ |
| 8285 |
SQLUINTEGER iid = 0; |
SQLUINTEGER iid = 0; |
| 8286 |
SQLLEN cbIID = 0; |
SQLLEN cbIID = 0; |
| 8287 |
|
SQLUINTEGER itid = 0; |
| 8288 |
|
SQLLEN cbITID = 0; |
| 8289 |
SQLBindCol( s.getHstmt(), 1, SQL_C_ULONG, &iid , 0, &cbIID ); |
SQLBindCol( s.getHstmt(), 1, SQL_C_ULONG, &iid , 0, &cbIID ); |
| 8290 |
|
SQLBindCol( s.getHstmt(), 2, SQL_C_ULONG, &itid , 0, &cbITID ); |
| 8291 |
|
|
| 8292 |
*iids = new itemid_t[limit]; |
*iids = new char*[limit]; |
| 8293 |
for ( *iidsLen = 0; *iidsLen < limit && SQLFetch( s.getHstmt() ) == SQL_SUCCESS; (*iidsLen)++ ){ |
for ( *iidsLen = 0; *iidsLen < limit && SQLFetch( s.getHstmt() ) == SQL_SUCCESS; (*iidsLen)++ ){ |
| 8294 |
(*iids)[*iidsLen] = iid; |
char* id = new char[ 256 ]; |
| 8295 |
|
snprintf( id, 256, "%s/%d.%d", nijc_code, itid, iid ); |
| 8296 |
|
(*iids)[*iidsLen] = id; |
| 8297 |
} |
} |
| 8298 |
ret = RES_OK; |
ret = RES_OK; |
| 8299 |
} |
} |
| 8300 |
|
freeString( nijc_code ); |
| 8301 |
return ret; |
return ret; |
| 8302 |
} |
} |
| 8303 |
|
|