/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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.wso2.carbon.policy.mgt.core.dao;
import org.wso2.carbon.device.mgt.core.dto.Device;
import org.wso2.carbon.policy.mgt.common.*;
import java.sql.Date;
import java.util.List;
public interface PolicyDAO {
Policy addPolicy(Policy policy) throws PolicyManagerDAOException;
Policy addPolicy(String deviceType, Policy policy) throws PolicyManagerDAOException;
Policy addPolicyToRole(List<String> roleNames, Policy policy) throws PolicyManagerDAOException;
Policy addPolicyToUser(List<String> usernameList, Policy policy) throws PolicyManagerDAOException;
Policy addPolicyToDevice(List<Device> devices, Policy policy) throws PolicyManagerDAOException;
boolean updatePolicyPriorities(List<Policy> policies) throws PolicyManagerDAOException;
// Policy addDatesToPolicy(Date startDate, Date endDate, Policy policy) throws PolicyManagerDAOException;
//
// Policy addTimesToPolicy(int startTime, int endTime, Policy policy) throws PolicyManagerDAOException;
//
// Policy addLocationToPolicy(String latitude, String longitude, Policy policy) throws PolicyManagerDAOException;
Criterion addCriterion(Criterion criteria) throws PolicyManagerDAOException;
Criterion updateCriterion(Criterion criteria) throws PolicyManagerDAOException;
Criterion getCriterion(int id) throws PolicyManagerDAOException;
Criterion getCriterion(String name) throws PolicyManagerDAOException;
boolean checkCriterionExists(String name) throws PolicyManagerDAOException;
boolean deleteCriterion(Criterion criteria) throws PolicyManagerDAOException;
List<Criterion> getAllPolicyCriteria() throws PolicyManagerDAOException;
Policy addPolicyCriteria(Policy policy) throws PolicyManagerDAOException;
boolean addPolicyCriteriaProperties(List<PolicyCriterion> policyCriteria) throws PolicyManagerDAOException;
List<PolicyCriterion> getPolicyCriteria(int policyId) throws PolicyManagerDAOException;
Policy updatePolicy(Policy policy) throws PolicyManagerDAOException;
Policy getPolicy(int policyId) throws PolicyManagerDAOException;
Policy getPolicyByProfileID(int profileId) throws PolicyManagerDAOException;
List<Integer> getPolicyAppliedDevicesIds(int policyId) throws PolicyManagerDAOException;
List<Policy> getAllPolicies() throws PolicyManagerDAOException;
List<Policy> getPolicyOfDeviceType(String deviceType) throws PolicyManagerDAOException;
List<Integer> getPolicyIdsOfDevice(Device device) throws PolicyManagerDAOException;
List<Integer> getPolicyOfRole(String roleName) throws PolicyManagerDAOException;
List<Integer> getPolicyOfUser(String username) throws PolicyManagerDAOException;
boolean deletePolicy(Policy policy) throws PolicyManagerDAOException;
boolean deletePolicy(int policyId) throws PolicyManagerDAOException;
boolean deleteAllPolicyRelatedConfigs(int policyId) throws PolicyManagerDAOException;
List<String> getPolicyAppliedRoles(int policyId) throws PolicyManagerDAOException;
List<String> getPolicyAppliedUsers(int policyId) throws PolicyManagerDAOException;
// PolicyTimes getTimesOfPolicy(Policy policy) throws PolicyManagerDAOException;
//
// PolicyDates getDatesOfPolicy(Policy policy) throws PolicyManagerDAOException;
//
// PolicyLocations getLocationsOfPolicy(Policy policy) throws PolicyManagerDAOException;
void addEffectivePolicyToDevice(int deviceId, int policyId, List<ProfileFeature> profileFeatures)
throws PolicyManagerDAOException;
void setPolicyApplied(int deviceId) throws PolicyManagerDAOException;
void updateEffectivePolicyToDevice(int deviceId, int policyId, List<ProfileFeature> profileFeatures)
throws PolicyManagerDAOException;
boolean checkPolicyAvailable(int deviceId) throws PolicyManagerDAOException;
int getPolicyCount() throws PolicyManagerDAOException;
}