Java tutorial
/* * Copyright 2013 Rgis Caspar <regis.caspar@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.rcaspar.fitbitbat.utils; import com.fitbit.api.client.FitbitApiCredentialsCache; import com.fitbit.api.client.LocalUserDetail; import com.fitbit.api.model.APIResourceCredentials; import com.google.common.collect.Iterators; import org.neodatis.odb.core.query.IQuery; import org.neodatis.odb.core.query.criteria.Where; import org.neodatis.odb.impl.core.query.criteria.CriteriaQuery; import org.springframework.stereotype.Component; /** * Custom implementation of FitbitApiCredentialsCache using ODB as backend. * * @author regis */ @Component("apiCredentialsCache") public class FitbitApiCredentialsCacheOdb implements FitbitApiCredentialsCache { /** * Our storage name. */ private static final String STORAGE_NAME = "fitbitbat"; /** * Name of the "localUserId" field of APIResourceCredentials. */ private static final String LOCAL_USER_ID_FIELD = "localUserId"; /** * Name of the "tempToken" field of APIResourceCredentials. */ private static final String TEMP_TOKEN_FIELD = "tempToken"; /** * ODB helper. */ public final ODBHelper<APIResourceCredentials> odbHelper; /** * Constructor. */ public FitbitApiCredentialsCacheOdb() { this(STORAGE_NAME); } /** * Constructor (testing purposes). * * @param storageName Name of the storage to use. */ protected FitbitApiCredentialsCacheOdb(final String storageName) { this.odbHelper = new ODBHelper<APIResourceCredentials>(storageName); } @Override public APIResourceCredentials getResourceCredentials(final LocalUserDetail user) { final IQuery query = new CriteriaQuery(APIResourceCredentials.class, Where.equal(LOCAL_USER_ID_FIELD, user.getUserId())); return Iterators.get(this.odbHelper.query(query), 0, null); } @Override public APIResourceCredentials getResourceCredentialsByTempToken(final String tempToken) { final IQuery query = new CriteriaQuery(APIResourceCredentials.class, Where.equal(TEMP_TOKEN_FIELD, tempToken)); return Iterators.get(this.odbHelper.query(query), 0, null); } @Override public APIResourceCredentials saveResourceCredentials(final LocalUserDetail user, final APIResourceCredentials resourceCredentials) { // cleanup this user token this.expireResourceCredentials(user); resourceCredentials.setLocalUserId(user.getUserId()); this.odbHelper.put(resourceCredentials); return resourceCredentials; } @Override public APIResourceCredentials expireResourceCredentials(final LocalUserDetail user) { final IQuery query = new CriteriaQuery(APIResourceCredentials.class, Where.equal(LOCAL_USER_ID_FIELD, user.getUserId())); final APIResourceCredentials credentials = this.getResourceCredentials(user); this.odbHelper.del(query); return credentials; } }