blob: 7e5bf517743a5ef267fd3478414fd3e6ac2f0fe1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013-2016 LAAS-CNRS (www.laas.fr)
* 7 Colonel Roche 31077 Toulouse - France
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Initial Contributors:
* Thierry Monteil : Project manager, technical co-manager
* Mahdi Ben Alaya : Technical co-manager
* Samir Medjiah : Technical co-manager
* Khalil Drira : Strategy expert
* Guillaume Garzone : Developer
* François Aïssaoui : Developer
*
* New contributors :
*******************************************************************************/
package org.eclipse.om2m.commons.utils;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.om2m.commons.constants.AccessControl;
import org.eclipse.om2m.commons.entities.AccessControlContextEntity;
import org.eclipse.om2m.commons.entities.AccessControlOriginatorEntity;
import org.eclipse.om2m.commons.entities.AccessControlRuleEntity;
import org.eclipse.om2m.commons.resource.AccessControlRule;
import org.eclipse.om2m.commons.resource.AccessControlRule.AccessControlContexts;
import org.eclipse.om2m.commons.resource.AccessControlRule.AccessControlContexts.AccessControlIpAddresses;
import org.eclipse.om2m.commons.resource.SetOfAcrs;
/**
* Utils for ACP
*
*/
public class AcpUtils {
private AcpUtils(){}
/**
* Use to perform the mapping between a list of access control rule & set of
* acrs in the oneM2M norm.
*
* @param ruleEntities
* @return the set of acrs
*/
public static SetOfAcrs getSetOfArcsFromACRE(
List<AccessControlRuleEntity> ruleEntities) {
// Initializing result
SetOfAcrs result = new SetOfAcrs();
// For each rule entity
for (AccessControlRuleEntity ruleEntity : ruleEntities) {
AccessControlRule rule = new AccessControlRule();
rule.setAccessControlOperations(AccessControl
.getOperationFromACR(ruleEntity));
// For each originator in ACRE
for (AccessControlOriginatorEntity originatorEntity : ruleEntity
.getAccessControlOriginators()) {
rule.getAccessControlOriginators().add(
originatorEntity.getOriginatorID());
}
// For each context in ACRE
for (AccessControlContextEntity contextEntity : ruleEntity
.getAccessControlContexts()) {
AccessControlContexts context = new AccessControlContexts();
context.getAccessControlWindow().addAll(
contextEntity.getAccessControlWindow());
AccessControlIpAddresses addresses = new AccessControlIpAddresses();
addresses.getIpv4Addresses().addAll(
contextEntity.getIpv4Addresses());
addresses.getIpv6Addresses().addAll(
contextEntity.getIpv6Addresses());
context.setAccessControlIpAddresses(addresses);
context.setAccessControlLocationRegion(contextEntity
.getAccessControlLocationRegion());
rule.getAccessControlContexts().add(context);
}
result.getAccessControlRule().add(rule);
}
return result;
}
/**
* Use to perform the mapping between a SetOfAcrs (list of AccessControlRule)
* and a list of ACREntity for the database management.
* @param setOfAcrs to map
* @return the list of AccessControlRuleEntity
*/
public static List<AccessControlRuleEntity> getACREntityFromSetOfArcs(SetOfAcrs setOfAcrs){
// Initializing result
List<AccessControlRuleEntity> result = new ArrayList<>();
// For each ACR in SetOfAcrs
for (AccessControlRule rule : setOfAcrs.getAccessControlRule()){
AccessControlRuleEntity ruleEntity = AccessControl.
getARCFromOperation(rule.getAccessControlOperations());
// For each Constexts in ACR
for (AccessControlContexts context : rule.getAccessControlContexts()){
AccessControlContextEntity contextEntity = new AccessControlContextEntity();
contextEntity.getIpv4Addresses().addAll(context.getAccessControlIpAddresses().getIpv4Addresses());
contextEntity.getIpv6Addresses().addAll(context.getAccessControlIpAddresses().getIpv6Addresses());
contextEntity.setAccessControlLocationRegion(context.getAccessControlLocationRegion());
contextEntity.getAccessControlWindow().addAll(context.getAccessControlWindow());
ruleEntity.getAccessControlContexts().add(contextEntity);
}
// For each originator in ACR
for (String originator : rule.getAccessControlOriginators()){
for (String splitted: originator.split(" ")) {
AccessControlOriginatorEntity originatorEntity = new AccessControlOriginatorEntity(splitted);
ruleEntity.getAccessControlOriginators().add(originatorEntity);
}
}
result.add(ruleEntity);
}
return result;
}
}