quota-manager/src/main/java/org/gcube/resource/management/quota/manager/check/MyAppManager.java

90 lines
2.9 KiB
Java

package org.gcube.resource.management.quota.manager.check;
import java.util.Timer;
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.resource.management.quota.manager.persistence.QuotaDBPersistence;
import org.gcube.resource.management.quota.manager.util.Constants;
import org.gcube.resource.management.quota.manager.util.DiscoveryConfiguration;
import org.gcube.smartgears.ApplicationManager;
import org.gcube.smartgears.ContextProvider;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* MyApp Manager
*
* @author Alessandro Pieve (alessandro.pieve@isti.cnr.it)
*
*/
public class MyAppManager implements ApplicationManager {
private static Logger logger = LoggerFactory.getLogger(MyAppManager.class);
ApplicationContext ctx = ContextProvider.get();
Timer timer = null;
public String dbName;
private QuotaUsage quotaUsage;
private QuotaDBPersistence quotaDbPersistence;
@Override
public void onInit() {
//do something on init
logger.info("QuotaCheckTask on init");
String token = SecurityTokenProvider.instance.get();
String context = ScopeProvider.instance.get();
logger.info("QuotaCheckTask on discovery");
DiscoveryConfiguration discoveryCheck =new DiscoveryConfiguration(context);
logger.info("QuotaCheckTask DiscoveryConfiguration complete");
dbName=discoveryCheck.getDbname();
quotaDbPersistence= new QuotaDBPersistence(discoveryCheck.getDatabasePath(),discoveryCheck.getDbname(),
discoveryCheck.getUsernameDb(),discoveryCheck.getPwdnameDb());
quotaUsage =new QuotaUsage(discoveryCheck);
AccountingPersistenceQuery apq = AccountingPersistenceQueryFactory.getInstance();
QuotaCheckTask task = new QuotaCheckTask(context, token,quotaUsage,quotaDbPersistence,apq);
Integer refreshTimeQuotaConfiguration=discoveryCheck.getRefreshTimeQuota();
Long refreshTimeQuota;
if (refreshTimeQuotaConfiguration==0){
refreshTimeQuota=Constants.TIME_SCHEDULE_CHECK;
}
else{
refreshTimeQuota=(long) (refreshTimeQuotaConfiguration*60*1000);
}
timer = new Timer(true);
timer.scheduleAtFixedRate(task,Constants.DELAY_SCHEDULE_CHECK, refreshTimeQuota);
logger.info("QuotaCheckTask started in context {}", context);
logger.info("QuotaCheckTask schedule task on:{} milliseconds", refreshTimeQuota);
logger.info("QuotaCheckTask notifierUser :{} notifierAdmin:{}", discoveryCheck.getNotifierUser(),discoveryCheck.getNotifierAdmin());
}
@Override
public void onShutdown() {
timer.cancel();
}
public QuotaUsage getQuotaUsage() {
return quotaUsage;
}
public QuotaDBPersistence getQuotaDbPersistence() {
return quotaDbPersistence;
}
}