package com.bls.mongodb.dao;
import com.bls.core.resetpwd.ResetPasswordToken;
import com.bls.dao.ResetPasswordTokenDao;
import com.bls.mongodb.core.ResetPasswordTokenMongodb;
import com.google.common.base.Optional;
import com.mongodb.DB;
import org.joda.time.DateTime;
import org.mongojack.DBQuery;
import javax.inject.Inject;
import java.util.List;
/**
* ResetpwdToken mongodb data provider
*/
public class ResetPasswordTokenMongodbDao extends CommonMongodbDao<ResetPasswordTokenMongodb,
ResetPasswordToken<String>, String> implements ResetPasswordTokenDao<ResetPasswordToken<String>> {
@Inject
public ResetPasswordTokenMongodbDao(final DB db) {
super(db);
}
@Override
protected Class<ResetPasswordTokenMongodb> getMongodbModelType() {
return ResetPasswordTokenMongodb.class;
}
@Override
public Optional<ResetPasswordToken> read(final String token) {
ResetPasswordTokenMongodb entity = dbCollection.findOne(DBQuery.is("token", token));
if (entity == null) return Optional.absent();
return Optional.of(convert2coreModel(entity));
}
@Override
public void expire(final ResetPasswordToken token) {
dbCollection.removeById(String.valueOf(token.getId()));
}
@Override
public void invalidateExpired() {
List<ResetPasswordTokenMongodb> tokensMongodb =
dbCollection.find(DBQuery.lessThan("expiryDate", DateTime.now().getMillis())).toArray();
for (ResetPasswordTokenMongodb tokenMongodb : tokensMongodb) {
ResetPasswordToken tokenCore = convert2coreModel(tokenMongodb);
if (tokenCore.checkExpired()) {
expire(tokenCore);
}
}
}
}