blob: 1f93f49e58600cd085d1505d067db33a5629513d [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.entities;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import org.eclipse.om2m.commons.constants.DBEntities;
import org.eclipse.om2m.commons.constants.ShortName;
/**
* Access control policy JPA entity
*
*/
@Entity(name = DBEntities.ACCESSCONTROLPOLICY_ENTITY)
@Inheritance(strategy = InheritanceType.JOINED)
public class AccessControlPolicyEntity extends AnnounceableSubordinateEntity {
// Database link to selfPrivilege
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval=true, mappedBy="selfAccessControlPolicy")
@JoinTable(
name=DBEntities.ACPACR_SEFPRIVILEGES,
joinColumns={@JoinColumn(name=DBEntities.ACPID_COLUMN,referencedColumnName=ShortName.RESOURCE_ID)},
inverseJoinColumns={@JoinColumn(name=DBEntities.ACRID_COLUMN,referencedColumnName=DBEntities.ACCESSCONTROLRULE_ID)}
)
protected List<AccessControlRuleEntity> selfPrivileges;
// Database link to privileges
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval=true, mappedBy="accessControlPolicy")
@JoinTable(
name=DBEntities.ACPACR_PRIVILEGES,
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID,referencedColumnName=ShortName.RESOURCE_ID)},
inverseJoinColumns={@JoinColumn(name=DBEntities.ACRID_COLUMN,referencedColumnName=DBEntities.ACCESSCONTROLRULE_ID)}
)
protected List<AccessControlRuleEntity> privileges;
@ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedAccessControlPolicyEntities")
@JoinTable(
name=DBEntities.ACP_DAC_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.DAC_JOINID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<DynamicAuthorizationConsultationEntity> dynamicConsultationAuthorizations;
// Database link to the owner CSE
@ManyToOne(fetch=FetchType.LAZY, targetEntity=CSEBaseEntity.class)
@JoinTable(
name=DBEntities.CSEBCHILDACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.CSEB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected CSEBaseEntity parentCse ;
// Database link to the parent AE
@ManyToOne
@JoinTable(
name = DBEntities.AEACPCHILD_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.AE_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected AeEntity parentAE;
// Database link to parent Remote Cse
@ManyToOne(fetch=FetchType.LAZY, targetEntity = RemoteCSEEntity.class)
@JoinTable(
name=DBEntities.CSRACPCHILD_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.CSR_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected RemoteCSEEntity parentCsr;
@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, targetEntity = SubscriptionEntity.class, mappedBy="parentAcp")
@JoinTable(
name=DBEntities.ACPSUB_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.SUB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<SubscriptionEntity> childSubscriptions;
// // linked to RegularRessource
// @ManyToMany(fetch=FetchType.LAZY, targetEntity=RegularResourceEntity.class)
// @JoinTable(
// name = DBEntities.REGULARRESOURCE_ACP_JOIN,
// inverseJoinColumns = { @JoinColumn(name = DBEntities.REGULARRESOURCE_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
// joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
// )
// protected List<RegularResourceEntity> linkedRegularResources;
// Database link to CSE
@ManyToMany(fetch=FetchType.LAZY, targetEntity=CSEBaseEntity.class)
@JoinTable(
name=DBEntities.CSEBACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.CSEB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<CSEBaseEntity> linkedCses;
// Database link to AE
@ManyToMany
@JoinTable(
name = DBEntities.AEACP_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.AE_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected List<AeEntity> linkedAes;
// Database link to Container
@ManyToMany
@JoinTable(
name = DBEntities.CNTACP_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.CNT_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected List<ContainerEntity> linkedCnts;
// database link to DynamicAuthorizationConsultation
@ManyToMany
@JoinTable(
name=DBEntities.DAC_ACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.DAC_JOINID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<DynamicAuthorizationConsultationEntity> linkedDynamicAuthorizationConsultation;
// Database link to FlexContainer
@ManyToMany
@JoinTable(
name=DBEntities.FCNT_ACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.FCNT_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<FlexContainerEntity> linkedFlexCnts;
// @ManyToMany(fetch=FetchType.LAZY, targetEntity = AnnouncedResourceEntity.class)
// @JoinTable(
// name=DBEntities.ANNOUNCEDRESOURCE_ACP_JOIN,
// inverseJoinColumns={@JoinColumn(name=DBEntities.ANNOUNCEDRESOURCE_JOINID, referencedColumnName=ShortName.RESOURCE_ID)},
// joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
// )
// protected List<AnnouncedResourceEntity> linkedAnnouncedResources;
// Database link to FlexContainerAnnc
@ManyToMany()
@JoinTable(
name=DBEntities.FCNTA_ACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.FCNTA_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<FlexContainerAnncEntity> linkedFlexCntAs;
// database link to subscription
@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, targetEntity = SubscriptionEntity.class)
@JoinTable(
name=DBEntities.SUBACP_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.SUB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<SubscriptionEntity> linkedSubscription;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = PollingChannelEntity.class)
@JoinTable(
name=DBEntities.ACPPCH_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.PCH_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<PollingChannelEntity> linkedPch;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = NodeEntity.class)
@JoinTable(
name=DBEntities.ACP_NOD_JOIN,
inverseJoinColumns={@JoinColumn(name=DBEntities.NOD_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
joinColumns={@JoinColumn(name=DBEntities.ACP_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<NodeEntity> linkedNodes;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = AreaNwkInfoEntity.class)
@JoinTable(
name = DBEntities.ANI_ACP_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.ANI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected List<AreaNwkInfoEntity> areaNwkInfoEntities;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = AreaNwkDeviceInfoEntity.class)
@JoinTable(
name = DBEntities.ANDI_ACP_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.ANDI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected List<AreaNwkDeviceInfoEntity> areaNwkDeviceInfoEntities;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = DeviceInfoEntity.class)
@JoinTable(
name = DBEntities.DVI_ACP_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.DVI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
joinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
protected List<DeviceInfoEntity> deviceInfoEntities;
/**
* @return the privileges
*/
public List<AccessControlRuleEntity> getPrivileges() {
if (privileges == null){
privileges = new ArrayList<>();
}
return privileges;
}
/**
* @param privileges the privileges to set
*/
public void setPrivileges(List<AccessControlRuleEntity> privileges) {
this.privileges = privileges;
}
/**
* @return the selfPrivileges
*/
public List<AccessControlRuleEntity> getSelfPrivileges() {
if (selfPrivileges == null){
selfPrivileges = new ArrayList<>();
}
return selfPrivileges;
}
/**
* @param selfPrivileges the selfPrivileges to set
*/
public void setSelfPrivileges(List<AccessControlRuleEntity> selfPrivileges) {
this.selfPrivileges = selfPrivileges;
}
/**
* @return the parentCse
*/
public CSEBaseEntity getParentCse() {
return parentCse;
}
/**
* @param parentCse the parentCse to set
*/
public void setParentCse(CSEBaseEntity parentCse) {
this.parentCse = parentCse;
}
/**
* @return the parentAE
*/
public AeEntity getParentAE() {
return parentAE;
}
/**
* @param parentAE the parentAE to set
*/
public void setParentAE(AeEntity parentAE) {
this.parentAE = parentAE;
}
/**
* @return the parentCsr
*/
public RemoteCSEEntity getParentCsr() {
return parentCsr;
}
/**
* @param parentCsr the parentCsr to set
*/
public void setParentCsr(RemoteCSEEntity parentCsr) {
this.parentCsr = parentCsr;
}
/**
* @return the linkedCse
*/
public List<CSEBaseEntity> getLinkedCse() {
if (this.linkedCses == null) {
this.linkedCses = new ArrayList<>();
}
return linkedCses;
}
/**
* @param linkedCse the linkedCse to set
*/
public void setLinkedCse(List<CSEBaseEntity> linkedCse) {
this.linkedCses = linkedCse;
}
/**
* @return the linkedContainer
*/
public List<ContainerEntity> getLinkedContainers() {
if (this.linkedCnts == null) {
this.linkedCnts = new ArrayList<>();
}
return linkedCnts;
}
/**
* @param linkedContainer the linkedContainer to set
*/
public void setLinkedContainer(List<ContainerEntity> linkedContainer) {
this.linkedCnts = linkedContainer;
}
/**
* @return the linkedFlexContainer
*/
public List<FlexContainerEntity> getLinkedFlexContainers() {
if (this.linkedFlexCnts == null) {
this.linkedFlexCnts = new ArrayList<>();
}
return linkedFlexCnts;
}
/**
* @param linkedFlexContainer the linkedFlexContainer to set
*/
public void setLinkedFlexContainer(List<FlexContainerEntity> linkedFlexContainer) {
this.linkedFlexCnts = linkedFlexContainer;
}
/**
* @return the linkedFlexContainerA
*/
public List<FlexContainerAnncEntity> getLinkedFlexContainerAs() {
if (this.linkedFlexCntAs == null) {
this.linkedFlexCntAs = new ArrayList<>();
}
return linkedFlexCntAs;
}
/**
* @param linkedFlexContainer the linkedFlexContainer to set
*/
public void setLinkedFlexContainerA(List<FlexContainerAnncEntity> linkedFlexContainerA) {
this.linkedFlexCntAs = linkedFlexContainerA;
}
/**
* @return the linkedSubscription
*/
public List<SubscriptionEntity> getLinkedSubscription() {
if (this.linkedSubscription == null) {
this.linkedSubscription = new ArrayList<>();
}
return linkedSubscription;
}
/**
* @param linkedSubscription the linkedSubscription to set
*/
public void setLinkedSubscription(List<SubscriptionEntity> linkedSubscription) {
this.linkedSubscription = linkedSubscription;
}
/**
* @return the linkedPch
*/
public List<PollingChannelEntity> getLinkedPch() {
if (this.linkedPch == null) {
this.linkedPch = new ArrayList<>();
}
return linkedPch;
}
/**
* @param linkedPch the linkedPch to set
*/
public void setLinkedPch(List<PollingChannelEntity> linkedPch) {
this.linkedPch = linkedPch;
}
/**
* @return the linkedAes
*/
public List<AeEntity> getLinkedAes() {
if (this.linkedAes == null) {
this.linkedAes = new ArrayList<>();
}
return linkedAes;
}
/**
* @param linkedAes the linkedAes to set
*/
public void setLinkedAes(List<AeEntity> linkedAes) {
this.linkedAes = linkedAes;
}
/**
* @return the childSubscription
*/
public List<SubscriptionEntity> getChildSubscriptions() {
if (this.childSubscriptions == null) {
this.childSubscriptions = new ArrayList<>();
}
return childSubscriptions;
}
/**
* @param childSubscription the childSubscription to set
*/
public void setChildSubscriptions(List<SubscriptionEntity> childSubscription) {
this.childSubscriptions = childSubscription;
}
/**
* @return the linkedNodes
*/
public List<NodeEntity> getLinkedNodes() {
if (this.linkedNodes == null) {
this.linkedNodes = new ArrayList<>();
}
return linkedNodes;
}
/**
* @param linkedNodes the linkedNodes to set
*/
public void setLinkedNodes(List<NodeEntity> linkedNodes) {
this.linkedNodes = linkedNodes;
}
/**
* @return the areaNwkInfoEntities
*/
public List<AreaNwkInfoEntity> getAreaNwkInfoEntities() {
if (this.areaNwkInfoEntities == null) {
this.areaNwkInfoEntities = new ArrayList<>();
}
return areaNwkInfoEntities;
}
/**
* @param areaNwkInfoEntities the areaNwkInfoEntities to set
*/
public void setAreaNwkInfoEntities(List<AreaNwkInfoEntity> areaNwkInfoEntities) {
this.areaNwkInfoEntities = areaNwkInfoEntities;
}
/**
* @return the areaNwkDeviceInfoEntities
*/
public List<AreaNwkDeviceInfoEntity> getAreaNwkDeviceInfoEntities() {
if (this.areaNwkDeviceInfoEntities == null) {
this.areaNwkDeviceInfoEntities = new ArrayList<>();
}
return areaNwkDeviceInfoEntities;
}
/**
* @param areaNwkDeviceInfoEntities the areaNwkDeviceInfoEntities to set
*/
public void setAreaNwkDeviceInfoEntities(
List<AreaNwkDeviceInfoEntity> areaNwkDeviceInfoEntities) {
this.areaNwkDeviceInfoEntities = areaNwkDeviceInfoEntities;
}
/**
* @return the deviceInfoEntities
*/
public List<DeviceInfoEntity> getDeviceInfoEntities() {
if (this.deviceInfoEntities == null) {
this.deviceInfoEntities = new ArrayList<>();
}
return deviceInfoEntities;
}
/**
* @param deviceInfoEntities the deviceInfoEntities to set
*/
public void setDeviceInfoEntities(List<DeviceInfoEntity> deviceInfoEntities) {
this.deviceInfoEntities = deviceInfoEntities;
}
public List<MgmtObjEntity> getMgmtObjEntities() {
List<MgmtObjEntity> ret = new ArrayList<MgmtObjEntity>();
ret.addAll(getAreaNwkInfoEntities());
ret.addAll(getAreaNwkDeviceInfoEntities());
ret.addAll(getDeviceInfoEntities());
return ret;
}
public List<DynamicAuthorizationConsultationEntity> getLinkedDynamicAuthorizationConsultation() {
if (linkedDynamicAuthorizationConsultation == null) {
linkedDynamicAuthorizationConsultation = new ArrayList<>();
}
return linkedDynamicAuthorizationConsultation;
}
public void setLinkedDynamicAuthorizationConsultation(
List<DynamicAuthorizationConsultationEntity> linkedDynamicAuthorizationConsultation) {
this.linkedDynamicAuthorizationConsultation = linkedDynamicAuthorizationConsultation;
}
@Override
public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations() {
if (dynamicConsultationAuthorizations == null) {
dynamicConsultationAuthorizations = new ArrayList<>();
}
return dynamicConsultationAuthorizations;
}
@Override
public void setDynamicAuthorizationConsultations(List<DynamicAuthorizationConsultationEntity> list) {
dynamicConsultationAuthorizations = list;
}
@Override
public List<AccessControlPolicyEntity> getAccessControlPolicies() {
return null;
}
@Override
public void setAccessControlPolicies(
List<AccessControlPolicyEntity> accessControlPolicies) {
}
}