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

2009年7月23日木曜日

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

できた。

コードは、


public void deletePersonData(UserId userId, GroupId groupId,
String appId, Set<String> fields, SecurityToken token) throws ProtocolException {
GmsPerson viewer = getUser();
logger.info("deletePersonData開始"
+ "viewer:[" + ((viewer == null) ? "Guest" : viewer.getLoginId()) + "]:"
+ "userId:[" + userId + "]:"
+ "appId:[" + appId + "]:"
);
if (viewer == null) {
logger.info("updatePersonData処理終了:Guestは保存できない:"
+ "userId:[" + userId + "]:"
+ "groupId:[" + groupId + "]:"
+ "appId:[" + appId + "]:"
);
throw new ProtocolException(HttpServletResponse.SC_FORBIDDEN,
"Guestは保存できない: 未ログイン");
}

String appHashId = toStringDigest(getStringDigest(appId));
if (logger.isDebugEnabled()) {
logger.debug("appHashId:[" + appHashId + "]");
}
String loginId = userId.getUserId(token);
if ("Guest".equalsIgnoreCase(loginId)) {
logger.info("updatePersonData処理終了:Guestは保存できない:"
+ "userId:[" + userId + "]:"
+ "groupId:[" + groupId + "]:"
+ "appId:[" + appId + "]:"
);
throw new ProtocolException(HttpServletResponse.SC_FORBIDDEN,
"Guestは保存できない: loginid:[" + loginId + "]");
}
List<String> userLoginIds = new ArrayList<String>();
userLoginIds.add(loginId);
ExtendedGmsPerson[] gmsPersons = null;
List<String> personIds = new ArrayList<String>();
int first = 0;
int max = 20;
for (;;) {
gmsPersons = gmsPersonDao.peopleGet(
userLoginIds,
groupId.getType().toString(),
groupId.getGroupId(),
null,
null,
null,
null,
null,
first,
max,
null);
if (logger.isDebugEnabled()) {
logger.debug("count:[" + gmsPersons.length + "]");
}
int length = gmsPersons.length;
for (int ii=0; ii<length; ii++) {
personIds.add(gmsPersons[ii].getId());
}
if (length < max) {
break;
}
first += max;
}
int count = 0;
for (String personId: personIds) {
gmsPersonDao.select(personId, true);
for (String field: fields) {
GmsAppdata[] appdatas = null;
appdatas = gmsAppdataDao.selectByAppHashIdAndGmsPersonIdAndName(appHashId, personId, field);
for (int ii=0,length=appdatas.length; ii<length; ii++) {
if (appId.equalsIgnoreCase(appdatas[ii].getApplicationId())) {
gmsAppdataDao.delete(appdatas[ii]);
count++;
break;
}
}
}
}
if (logger.isDebugEnabled()) {
logger.debug("[" + count + "]件削除しちゃった");
}
logger.info("deletePersonData終了"
+ "viewer:[" + ((viewer == null) ? "Guest" : viewer.getLoginId()) + "]:"
+ "userId:[" + userId + "]:"
+ "appId:[" + appId + "]:"
);
}


な感じ。

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


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

調べてみようっと。

.

0 コメント: