メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月23日木曜日

[Apache Shindig][お勉強][OpenSocial] メモ74 DataRequest.newRemovePersonAppDataRequestのサーバ側実装をしてみる(2)

できた。

コードは、

  1. public void deletePersonData(UserId userId, GroupId groupId,  
  2.     String appId, Set<String> fields, SecurityToken token) throws ProtocolException {  
  3.   GmsPerson viewer = getUser();  
  4.   logger.info("deletePersonData開始"  
  5.     + "viewer:[" + ((viewer == null) ? "Guest" : viewer.getLoginId()) + "]:"  
  6.     + "userId:[" + userId + "]:"  
  7.     + "appId:[" + appId + "]:"  
  8.   );  
  9.   if (viewer == null) {  
  10.     logger.info("updatePersonData処理終了:Guestは保存できない:"  
  11.       + "userId:[" + userId + "]:"  
  12.       + "groupId:[" + groupId + "]:"  
  13.       + "appId:[" + appId + "]:"  
  14.     );  
  15.     throw new ProtocolException(HttpServletResponse.SC_FORBIDDEN,  
  16.       "Guestは保存できない: 未ログイン");  
  17.   }  
  18.   
  19.   String appHashId = toStringDigest(getStringDigest(appId));  
  20.   if (logger.isDebugEnabled()) {  
  21.     logger.debug("appHashId:[" + appHashId + "]");  
  22.   }  
  23.   String loginId = userId.getUserId(token);  
  24.   if ("Guest".equalsIgnoreCase(loginId)) {  
  25.     logger.info("updatePersonData処理終了:Guestは保存できない:"  
  26.       + "userId:[" + userId + "]:"  
  27.       + "groupId:[" + groupId + "]:"  
  28.       + "appId:[" + appId + "]:"  
  29.     );  
  30.     throw new ProtocolException(HttpServletResponse.SC_FORBIDDEN,  
  31.       "Guestは保存できない: loginid:[" + loginId + "]");  
  32.   }  
  33.   List<String> userLoginIds = new ArrayList<String>();  
  34.   userLoginIds.add(loginId);  
  35.   ExtendedGmsPerson[] gmsPersons = null;  
  36.   List<String> personIds = new ArrayList<String>();  
  37.   int first = 0;  
  38.   int max = 20;  
  39.   for (;;) {  
  40.     gmsPersons = gmsPersonDao.peopleGet(  
  41.       userLoginIds,  
  42.       groupId.getType().toString(),  
  43.       groupId.getGroupId(),  
  44.       null,  
  45.       null,  
  46.       null,  
  47.       null,  
  48.       null,  
  49.       first,  
  50.       max,  
  51.       null);  
  52.     if (logger.isDebugEnabled()) {  
  53.       logger.debug("count:[" + gmsPersons.length + "]");  
  54.     }  
  55.     int length = gmsPersons.length;  
  56.     for (int ii=0; ii<length; ii++) {  
  57.       personIds.add(gmsPersons[ii].getId());  
  58.     }  
  59.     if (length < max) {  
  60.       break;  
  61.     }  
  62.     first += max;  
  63.   }  
  64.   int count = 0;  
  65.   for (String personId: personIds) {  
  66.     gmsPersonDao.select(personId, true);  
  67.     for (String field: fields) {  
  68.       GmsAppdata[] appdatas = null;  
  69.       appdatas = gmsAppdataDao.selectByAppHashIdAndGmsPersonIdAndName(appHashId, personId, field);  
  70.       for (int ii=0,length=appdatas.length; ii<length; ii++) {  
  71.         if (appId.equalsIgnoreCase(appdatas[ii].getApplicationId())) {  
  72.           gmsAppdataDao.delete(appdatas[ii]);  
  73.           count++;  
  74.           break;  
  75.         }  
  76.       }  
  77.     }  
  78.   }  
  79.   if (logger.isDebugEnabled()) {  
  80.     logger.debug("[" + count + "]件削除しちゃった");  
  81.   }  
  82.   logger.info("deletePersonData終了"  
  83.     + "viewer:[" + ((viewer == null) ? "Guest" : viewer.getLoginId()) + "]:"  
  84.     + "userId:[" + userId + "]:"  
  85.     + "appId:[" + appId + "]:"  
  86.   );  
  87. }  

な感じ。

これで、AppDataシリーズは完了。


次はアクティビティまわりかな。

調べてみようっと。

.

0 コメント: