blob: 96ccf228bc83b0cecda50c1f067b4b26d5e04260 [file] [log] [blame]
/*******************************************************************************
ac * Copyright (c) 2013-2020 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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* 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.constants;
import java.math.BigInteger;
import org.eclipse.om2m.commons.entities.AccessControlRuleEntity;
/**
* Constants for access control operations (CRUDDNA)
* Tools to retrieve operations and Access control rule
*
*/
public class AccessControl {
/** Originator authorizing any originator to use the privileges */
public static final String ORIGINATOR_ALL = "*";
/** Private constructor */
private AccessControl(){}
/** Big integer constant for CREATE operation */
public static final BigInteger CREATE = BigInteger.valueOf(1);
/** Big integer constant for RETRIEVE operation */
public static final BigInteger RETRIEVE = BigInteger.valueOf(2);
/** Big integer constant for UPDATE operation */
public static final BigInteger UPDATE = BigInteger.valueOf(4);
/** Big integer constant for DELETE operation */
public static final BigInteger DELETE = BigInteger.valueOf(8);
/** Big integer constant for NOTIFY operation */
public static final BigInteger NOTIFY = BigInteger.valueOf(16);
/** Big integer constant for DISCOVERY operation */
public static final BigInteger DISCOVERY = BigInteger.valueOf(32);
/** Big integer constant for ALL operations */
public static final BigInteger ALL = BigInteger.valueOf(63) ;
/**
* Retrieve the operation(s) (big integer) from access control rule
* @param ruleEntity
* @return operation(s)
*/
public static BigInteger getOperationFromACR(AccessControlRuleEntity ruleEntity){
int result = 0 ;
if (ruleEntity.isCreate()){
result += CREATE.intValue();
}
if (ruleEntity.isRetrieve()){
result += RETRIEVE.intValue();
}
if (ruleEntity.isUpdate()){
result += UPDATE.intValue();
}
if (ruleEntity.isDelete()){
result += DELETE.intValue();
}
if (ruleEntity.isDiscovery()){
result += DISCOVERY.intValue();
}
if (ruleEntity.isNotify()){
result += NOTIFY.intValue();
}
return BigInteger.valueOf(result);
}
/**
* Generate an Access Control Rule entity from operations big integer
* @param operations
* @return access control rule
*/
public static AccessControlRuleEntity getARCFromOperation(BigInteger operations){
AccessControlRuleEntity ruleEntity = new AccessControlRuleEntity();
int flags = operations.intValue();
if ((flags & CREATE.intValue()) == CREATE.intValue()){
ruleEntity.setCreate(true);
}
if ((flags & RETRIEVE.intValue()) == RETRIEVE.intValue()){
ruleEntity.setRetrieve(true);
}
if ((flags & UPDATE.intValue()) == UPDATE.intValue()){
ruleEntity.setUpdate(true);
}
if ((flags & DELETE.intValue()) == DELETE.intValue()){
ruleEntity.setDelete(true);
}
if ((flags & DISCOVERY.intValue()) == DISCOVERY.intValue()){
ruleEntity.setDiscovery(true);
}
if ((flags & NOTIFY.intValue()) == NOTIFY.intValue()){
ruleEntity.setNotify(true);
}
return ruleEntity;
}
}