/* * (C) Copyright IBM Corp. 2009 * * LICENSE: Eclipse Public License v1.0 * http://www.eclipse.org/legal/epl-v10.html */ package com.ibm.gaiandb.plugins.wpml.schema; import java.util.List; /** * The context of the query for policies to base their decisions on * * A placeholder for now * * @author pzerfos@us.ibm.com * */ public class QueryContext { // Use PROPRIETARY notice if class contains a main() method, otherwise use COPYRIGHT notice. public static final String COPYRIGHT_NOTICE = "(c) Copyright IBM Corp. 2009"; String logicalTable = null; String forwardingNode = null; List<String> forwardingPath = null; List<String> accessClustersAtOriginNode = null; String requestor = null; String affiliation = null; String securityClearance = null; // Local node properties - can be useful in shared policy situations - so that each policy can have a notion of ownership/perspective // e.g. "Allow US assets to send classified data to Kish", rather than just: "Allow Kish to receive classified queries" String localAffiliation = null; public QueryContext() { this(null, null, null, null, null, null, null, null); } public String toString() { return "Logical Table: " + check(logicalTable) + ", user: " + check(requestor) + ", affiliation: " + check(affiliation) + ", clearance: " + check(securityClearance) + ", forwardingPath: " + check(forwardingPath) + ", accessClustersAtOriginNode: " + check(accessClustersAtOriginNode) + ", localAffiliation: " + check(localAffiliation); } private String check( String a ) { return null == a || 0 == a.length() ? "<undefined>" : a; } private String check( List<String> a ) { return null == a || 0 == a.size() ? "<undefined>" : a.toString(); } public QueryContext(String user, String affiliation, String securityClearance, String logicalTable, String forwardingNode, List<String> forwardingPath, List<String> accessClustersAtOriginNode, String localAffiliation) { this.requestor = user; this.affiliation = affiliation; this.securityClearance = securityClearance; this.logicalTable = logicalTable; this.forwardingNode = forwardingNode; this.forwardingPath = forwardingPath; this.accessClustersAtOriginNode = accessClustersAtOriginNode; this.localAffiliation = localAffiliation; } // public QueryContext(String user) { // this(user, "", "", ""); // } public String getLocalAffiliation() { return localAffiliation; } public void setLocalAffiliation(String localAffiliation) { this.localAffiliation = localAffiliation; } public String getRequestor() { return (requestor == null ? "" : requestor); } public void setRequestor(String user) { this.requestor = user; } public String getAffiliation() { return (affiliation == null ? "" : affiliation); } public void setAffiliation(String affil) { this.affiliation = affil; } public String getSecurityClearance() { return securityClearance; } public void setSecurityClearance(String securityClearance) { this.securityClearance = securityClearance; } public String getLogicalTable() { return logicalTable; } public void setLogicalTable(String logicalTable) { this.logicalTable = logicalTable; } public String getForwardingNode() { return forwardingNode; } public void setForwardingNode(String forwardingNode) { this.forwardingNode = forwardingNode; } public List<String> getForwardingPath() { return forwardingPath; } public void setForwardingPath(List<String> forwardingPath) { this.forwardingPath = forwardingPath; } public List<String> getAccessClustersAtOriginNode() { return accessClustersAtOriginNode; } public void setAccessClustersAtOriginNode(List<String> accessClustersAtOriginNode) { this.accessClustersAtOriginNode = accessClustersAtOriginNode; } }