/**
* Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET
* (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije
* informacijske druzbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE
* COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVACAO, SA (PTIN), IBM Corp.,
* INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM
* ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC))
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.societies.webapp.controller.privacy.prefs;
import java.util.List;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.societies.api.context.model.CtxAttributeTypes;
import org.societies.api.identity.util.DataTypeUtils;
import org.societies.api.internal.schema.privacytrust.privacyprotection.preferences.AccessControlPreferenceDetailsBean;
import org.societies.api.internal.schema.privacytrust.privacyprotection.preferences.DObfPreferenceDetailsBean;
import org.societies.api.internal.schema.privacytrust.privacyprotection.preferences.IDSPreferenceDetailsBean;
import org.societies.api.internal.schema.privacytrust.privacyprotection.preferences.PPNPreferenceDetailsBean;
import org.societies.api.internal.servicelifecycle.ServiceModelUtils;
import org.societies.api.schema.identity.RequestorBean;
import org.societies.api.schema.identity.RequestorCisBean;
import org.societies.api.schema.identity.RequestorServiceBean;
import org.societies.privacytrust.privacyprotection.api.IPrivacyPreferenceManager;
import org.societies.webapp.controller.BasePageController;
import org.societies.webapp.service.PrivacyUtilService;
import org.societies.webapp.service.UserService;
/**
* @author Eliza
*
*/
@ViewScoped
@ManagedBean(name="PrivacyPrefsController")
public class PrivacyPreferencesController extends BasePageController{
private final Logger logging = LoggerFactory.getLogger(getClass());
@ManagedProperty(value = "#{privPrefMgr}")
private IPrivacyPreferenceManager privPrefmgr;
@ManagedProperty(value = "#{userService}")
private UserService userService; // NB: MUST include public getter/setter
@ManagedProperty(value="#{privacyUtilService}")
private PrivacyUtilService privacyUtilService;
private PPNPreferenceDetailsBean selectedPPNDetail;
private AccessControlPreferenceDetailsBean selectedAccCtrlDetail;
private List<PPNPreferenceDetailsBean> ppnPreferenceDetails;
private List<AccessControlPreferenceDetailsBean> accCtrlPreferenceDetails;
private List<IDSPreferenceDetailsBean> idsPreferenceDetails;
private List<DObfPreferenceDetailsBean> dObfPreferenceDetails;
private String ppnUUID;
private String accCtrlUUID;
@PostConstruct
public void initController(){
this.retrievePPNPreferences();
this.retrieveAccCtrlPreferences();
this.retrieveDObfPreferences();
this.retrieveDObfPreferences();
ppnUUID = UUID.randomUUID().toString();
accCtrlUUID = UUID.randomUUID().toString();
}
public void retrievePPNPreferences() {
setPpnPreferenceDetails(privPrefmgr.getPPNPreferenceDetails());
}
public String storePPNDetailToUtils(){
this.logging.debug("Adding ppn preference details bean to util service");
this.privacyUtilService.setPpnPreferenceDetailsBean(ppnUUID, selectedPPNDetail);
return "privacy_ppn_edit.xhtml";
}
public String storeAccCtrlDetailToUtils(){
this.logging.debug("Adding accCtrl preference details bean to util service");
this.privacyUtilService.setAccessControlPreferenceDetailsBean(accCtrlUUID, selectedAccCtrlDetail);
return "privacy_accCtrl_edit.xhtml";
}
public void retrieveAccCtrlPreferences(){
setAccCtrlPreferenceDetails(privPrefmgr.getAccCtrlPreferenceDetails());
}
public void retrieveIDSPreferences(){
setIdsPreferenceDetails(privPrefmgr.getIDSPreferenceDetails());
}
public void retrieveDObfPreferences(){
setdObfPreferenceDetails(privPrefmgr.getDObfPreferenceDetails());
}
public String toStringDataType(String dataType) {
DataTypeUtils dataTypeUtils = new DataTypeUtils();
return dataTypeUtils.getFriendlyDescription(dataType).getFriendlyName();
}
public String toStringRequestor(RequestorBean requestor){
if (requestor instanceof RequestorCisBean){
return "CIS: "+((RequestorCisBean) requestor).getCisRequestorId();
}
if (requestor instanceof RequestorServiceBean){
String completeStr = ServiceModelUtils.serviceResourceIdentifierToString(((RequestorServiceBean) requestor).getRequestorServiceId());
if (null == completeStr) {
return "none";
}
String[] serviceIdParts = completeStr.split(" ");
if (null == serviceIdParts || serviceIdParts.length <= 0) {
return "none";
}
return "Service id: "+serviceIdParts[0]+(serviceIdParts.length > 1 ? " Instance id: "+serviceIdParts[1] : "");
}
return "none";
}
public IPrivacyPreferenceManager getPrivPrefmgr() {
return privPrefmgr;
}
public void setPrivPrefmgr(IPrivacyPreferenceManager privPrefmgr) {
this.privPrefmgr = privPrefmgr;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public AccessControlPreferenceDetailsBean getSelectedAccCtrlDetail() {
return selectedAccCtrlDetail;
}
public void setSelectedAccCtrlDetail(AccessControlPreferenceDetailsBean selectedAccCtrlDetail) {
this.selectedAccCtrlDetail = selectedAccCtrlDetail;
}
public PPNPreferenceDetailsBean getSelectedPPNDetail() {
return selectedPPNDetail;
}
public void setSelectedPPNDetail(PPNPreferenceDetailsBean selectedPPNDetail) {
this.logging.debug("Setting selectedPPNDetail: "+selectedPPNDetail.toString());
this.selectedPPNDetail = selectedPPNDetail;
}
public List<PPNPreferenceDetailsBean> getPpnPreferenceDetails() {
return ppnPreferenceDetails;
}
public void setPpnPreferenceDetails(List<PPNPreferenceDetailsBean> ppnPreferenceDetails) {
this.ppnPreferenceDetails = ppnPreferenceDetails;
}
public List<AccessControlPreferenceDetailsBean> getAccCtrlPreferenceDetails() {
return accCtrlPreferenceDetails;
}
public void setAccCtrlPreferenceDetails(List<AccessControlPreferenceDetailsBean> accCtrlPreferenceDetails) {
this.accCtrlPreferenceDetails = accCtrlPreferenceDetails;
}
public List<IDSPreferenceDetailsBean> getIdsPreferenceDetails() {
return idsPreferenceDetails;
}
public void setIdsPreferenceDetails(List<IDSPreferenceDetailsBean> idsPreferenceDetails) {
this.idsPreferenceDetails = idsPreferenceDetails;
}
public List<DObfPreferenceDetailsBean> getdObfPreferenceDetails() {
return dObfPreferenceDetails;
}
public void setdObfPreferenceDetails(List<DObfPreferenceDetailsBean> dObfPreferenceDetails) {
this.dObfPreferenceDetails = dObfPreferenceDetails;
}
public PrivacyUtilService getPrivacyUtilService() {
return privacyUtilService;
}
public void setPrivacyUtilService(PrivacyUtilService privacyUtilService) {
this.privacyUtilService = privacyUtilService;
}
public String getUuid() {
return ppnUUID;
}
public void setUuid(String uuid) {
this.ppnUUID = uuid;
}
public String getPpnUUID() {
return ppnUUID;
}
public void setPpnUUID(String ppnUUID) {
this.ppnUUID = ppnUUID;
}
public String getAccCtrlUUID() {
return accCtrlUUID;
}
public void setAccCtrlUUID(String accCtrlUUID) {
this.accCtrlUUID = accCtrlUUID;
}
}