package eu.musesproject.server.scheduler; /* * #%L * MUSES Server * %% * Copyright (C) 2013 - 2015 Sweden Connectivity * %% * 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. * #L% */ import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; import org.apache.log4j.Level; import org.apache.log4j.Logger; import eu.musesproject.server.db.handler.DBManager; import eu.musesproject.server.entity.LegalAspects; import eu.musesproject.server.entity.SimpleEvents; public class SchedulerImpl implements Scheduler { private Logger logger = Logger.getLogger(SchedulerImpl.class.getName()); private static final String MUSES_TAG = "MUSES_TAG"; private DBManager dbManager; public SchedulerImpl() { dbManager = new DBManager(ModuleType.ERASER); } @Override public void erase() { List<SimpleEvents> simpleEvents = dbManager.getEvent(); for (SimpleEvents event: simpleEvents){ boolean [] results = checkHardLimit(event); boolean isKRSAllowed = results[0]; boolean isEPAllowed = results[1]; boolean isRT2AEAllowed = results[2]; if (!isKRSAllowed && !isEPAllowed && !isRT2AEAllowed) { try { logger.log(Level.INFO, MUSES_TAG + " Hard limit expired for all allowed components, cleaning up the event:" + event.getEventId()); dbManager.deleteSimpleEventByEventId(event.getEventId()); } catch (Exception e) { e.printStackTrace(); } } else { event.setKRS_can_access(isKRSAllowed?1:0); event.setEP_can_access(isEPAllowed?1:0); event.setRT2AE_can_access(isRT2AEAllowed?1:0); try { logger.log(Level.INFO, MUSES_TAG + " Update component mask for event:" + event.getEventId()); dbManager.updateSimpleEvent(event); } catch (Exception e) { e.printStackTrace(); } } } } private boolean [] checkHardLimit(SimpleEvents simpleEvent){ boolean [] accessDBallowed = {true,true,true}; LegalAspects legalAspect = dbManager.getLegalAspect(); if (legalAspect != null){ int numberOfdaysAllowedToStoreDataInKRS = legalAspect.getKRS_hard_limit(); int numberOfdaysAllowedToStoreDataInEP = legalAspect.getEP_hard_limit(); int numberOfdaysAllowedToStoreDataInRT2AE = legalAspect.getRT2AE_hard_limit(); Date now = new Date(); long timeDiff = now.getTime() - simpleEvent.getDate().getTime(); long daysInBetween = TimeUnit.DAYS.convert(timeDiff, TimeUnit.MILLISECONDS); if (daysInBetween > numberOfdaysAllowedToStoreDataInKRS) { accessDBallowed[0]=false; } else { accessDBallowed[0]=true; } if (daysInBetween > numberOfdaysAllowedToStoreDataInEP) { accessDBallowed[1]=false; } else { accessDBallowed[1]=true; } if (daysInBetween > numberOfdaysAllowedToStoreDataInRT2AE) { accessDBallowed[2]=false; } else { accessDBallowed[2]=true; } } return accessDBallowed; } }