Package com.appspot.plucial.controller.account.ajax

Source Code of com.appspot.plucial.controller.account.ajax.UpdateUserProfileController

package com.appspot.plucial.controller.account.ajax;

import java.util.Date;
import java.util.List;

import org.slim3.controller.Navigation;

import com.appspot.plucial.Constants;
import com.appspot.plucial.model.UserModel;
import com.appspot.plucial.service.UserService;
import com.appspot.plucial.service.UserUrlsService;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.plus.Plus;
import com.google.api.services.plus.model.Person;
import com.google.api.services.plus.model.Person.Urls;
import com.google.appengine.api.datastore.Text;

/**
* ユーザー追加コントローラー
* @author takahara
*
*/
public class UpdateUserProfileController extends BaseController {

    @Override
    protected Navigation execute(UserModel userModel) throws Exception {

        // トークン情報の取得(アクセストークン、リフレッシュトークン・・・)
        GoogleCredential credential = new GoogleCredential.Builder()
        .setJsonFactory(JSON_FACTORY)
        .setTransport(TRANSPORT)
        .setClientSecrets(Constants.GOOGLE_PROJECT_CLIENT_ID, Constants.GOOGLE_PROJECT_CLIENT_SECRET).build()
        .setRefreshToken(userModel.getRefreshToken());

        // リフレッシュトークンを元にアクセストークンを更新
        credential.refreshToken();


        Plus plus = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential)
        .setApplicationName(Constants.GOOGLE_APPLICATION_NAME)
        .build();
        Person person = plus.people().get("me").execute();

        // 表示名
        if(person.getDisplayName() != null && !person.getDisplayName().isEmpty()) {
            userModel.setDisplayName(person.getDisplayName());
        }

        // 写真
        if(person.getImage() != null && !person.getImage().isEmpty()) {
            userModel.setImageUrl(new Text(person.getImage().getUrl()));
        }

        // キャッチ
        if(person.getTagline() != null && !person.getTagline().isEmpty()) {
            userModel.setTagline(new Text(person.getTagline()));
        }

        // 特技
        if(person.getBraggingRights() != null && !person.getBraggingRights().isEmpty()) {
            userModel.setBraggingRights(new Text(person.getBraggingRights()));
        }

        // About Me
        if(person.getAboutMe() != null && !person.getAboutMe().isEmpty()) {
            userModel.setAboutMe(new Text(person.getAboutMe()));
        }

        // 背景画像url
        if(person.getCover() != null
                && person.getCover().getCoverPhoto() != null
                && person.getCover().getCoverPhoto().getUrl() != null
                && !person.getCover().getCoverPhoto().getUrl().isEmpty()) {
            userModel.setCoverPhotoUrl(new Text(person.getCover().getCoverPhoto().getUrl()));
        }

        userModel.setUpdateCheckDate(new Date());
        UserService.put(userModel);

        // URLSを削除して再登録
        UserUrlsService.deleteAll(userModel);
        if(person.getUrls() != null && person.getUrls().size() > 0) {
            List<Urls> urlsList = person.getUrls();

            for(Urls urls: urlsList) {
                UserUrlsService.put(userModel, urls.getValue(), urls.getType(), urls.getLabel());
            }
        }

        return null;
    }
}
TOP

Related Classes of com.appspot.plucial.controller.account.ajax.UpdateUserProfileController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.