/**
* Copyright 2014-2016 CyberVision, Inc.
*
* 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 org.kaaproject.kaa.server.common.nosql.mongo.dao;
import org.kaaproject.kaa.common.dto.credentials.CredentialsDto;
import org.kaaproject.kaa.common.dto.credentials.CredentialsStatus;
import org.kaaproject.kaa.server.common.dao.impl.CredentialsDao;
import org.kaaproject.kaa.server.common.nosql.mongo.dao.model.MongoCredentials;
import org.kaaproject.kaa.server.common.nosql.mongo.dao.model.MongoModelConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import java.nio.ByteBuffer;
import java.util.Optional;
/**
* @author Artur Joshi
* @author Bohdan Khablenko
*
* @since v0.9.0
*/
@Repository
public class CredentialsMongoDao extends AbstractMongoDao<MongoCredentials, ByteBuffer>
implements CredentialsDao<MongoCredentials> {
private static final Logger LOG = LoggerFactory.getLogger(CredentialsMongoDao.class);
@Override
protected String getCollectionName() {
return MongoModelConstants.CREDENTIALS;
}
@Override
protected Class<MongoCredentials> getDocumentClass() {
return MongoCredentials.class;
}
@Override
public MongoCredentials save(String applicationId, CredentialsDto credentials) {
LOG.debug("Saving credentials [{}] for application [{}]",
credentials.toString(), applicationId);
return this.save(new MongoCredentials(applicationId, credentials));
}
@Override
public Optional<MongoCredentials> find(String applicationId, String credentialsId) {
LOG.debug("Searching for credentials by application ID [{}] and credentials ID [{}]",
applicationId, credentialsId);
Query query = Query.query(Criteria.where(MongoModelConstants.CREDENTIALS_ID)
.is(credentialsId)
.and(MongoModelConstants.APPLICATION_ID)
.is(applicationId));
return Optional.ofNullable(this.findOne(query));
}
@Override
public Optional<MongoCredentials> updateStatus(String applicationId,
String credentialsId,
CredentialsStatus status) {
LOG.debug("Settings status [{}] for credentials [{}] in application [{}]",
status, credentialsId, applicationId);
updateFirst(
Query.query(Criteria.where(MongoModelConstants.CREDENTIALS_ID)
.is(credentialsId)
.and(MongoModelConstants.APPLICATION_ID)
.is(applicationId)),
Update.update(MongoModelConstants.CREDENTIAL_STATUS, status));
return this.find(applicationId, credentialsId);
}
@Override
public void remove(String applicationId, String credentialsId) {
LOG.debug("Removing credentials [{}] from application [{}]", credentialsId, applicationId);
Query query = Query.query(Criteria.where(MongoModelConstants.CREDENTIALS_ID)
.is(credentialsId)
.and(MongoModelConstants.APPLICATION_ID)
.is(applicationId));
this.remove(query);
}
}