AccountingRepositoryImpl.java
package com.tradecloud.repository.impl;
import com.tradecloud.authentication.MultiTenantUtil;
import com.tradecloud.authentication.User;
import com.tradecloud.domain.model.accounting.Snapshot;
import com.tradecloud.repository.AccountingRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
/**
* Accounting Repository.
*/
@Repository(value = "accountingRepository")
public class AccountingRepositoryImpl extends RepositoryBaseImpl<Snapshot, Object> implements AccountingRepository {
Logger logger = Logger.getLogger(AccountingRepositoryImpl.class);
private static final long serialVersionUID = 1L;
@Override
public void storeSnapshot(Snapshot snapshot) {
saveOrUpdate(snapshot);
}
@Override
public Snapshot getSnapshot(String reference, Snapshot.SnapshotType snapshotType) {
User user = MultiTenantUtil.getActiveUser();
@SuppressWarnings("unchecked")
List<Snapshot> results =
(List<Snapshot>) getNamedQueryAndNamedParam("findSnapshots",
new String[]{"reference", "consumerTag", "snapshotType"},
Arrays.asList(reference, user.getUsername(), snapshotType).toArray());
return results.isEmpty() ? null : results.iterator().next();
}
@Override
public void removeSnapshot(String reference, Snapshot.SnapshotType snapshotType) {
Snapshot snapshot = getSnapshot(reference, snapshotType);
if (snapshot != null) {
delete(snapshot);
} else {
logger.info("No Snapshot (" + snapshotType.name() + ") found to delete: " + reference);
}
}
}