/**
* Copyright (c) Istituto Nazionale di Fisica Nucleare (INFN). 2006-2016
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.glite.security.voms.admin.taglib;
import java.io.IOException;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.glite.security.voms.admin.operations.VOMSPermission;
public class PrintPermissionTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String SHORT_HEADER = "short";
public static final String LONG_HEADER = "long";
private static final Logger log = LoggerFactory
.getLogger(PrintPermissionTag.class);
String header;
String var;
private static final String[] headerNames = { "Container", "Membership",
"ACL", "Attributes", "Requests", "Suspend" };
private static final String[] shortHeaderNames = { "Cont.", "Memb.", "ACL",
"Attr.", "Req." };
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
private void printLongHeader() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.println("<table class='table' cellpadding='0' cellspacing='0'>");
out.println("<tr class='tableHeaderRow'>");
for (int i = 0; i < headerNames.length; i++)
out.println("<td>" + headerNames[i] + "</td>");
out.println("</tr>");
} catch (IOException e) {
throw new JspTagException(e.getMessage());
}
}
private void printShortHeader() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.println("<table class='table' cellpadding='0' cellspacing='0'>");
out.println("<tr class='tableHeaderRow'>");
for (int i = 0; i < shortHeaderNames.length; i++)
out.println("<td>" + shortHeaderNames[i] + "</td>");
out.println("</tr>");
} catch (IOException e) {
throw new JspTagException(e.getMessage());
}
}
private void printPermissions(VOMSPermission p) throws JspException {
JspWriter out = pageContext.getOut();
try {
// out.println( "<tr class='tableRow'>" );
// CONTAINER permissions
out.write("<td>");
if (p.hasContainerReadPermission())
out.write("r");
if (p.hasContainerWritePermission())
out.write("w");
out.write("</td>");
// MEMBERSHIP permissions
out.write("<td>");
if (p.hasMembershipReadPermission())
out.write("r");
if (p.hasMembershipWritePermission())
out.write("w");
out.write("</td>");
// ACL permissions
out.write("<td>");
if (p.hasACLReadPermission())
out.write("r");
if (p.hasACLWritePermission())
out.write("w");
if (p.hasACLDefaultPermission())
out.write("d");
out.write("</td>");
// ATTRIBUTES permissions
out.write("<td>");
if (p.hasAttributeReadPermission())
out.write("r");
if (p.hasAttributeWritePermission())
out.write("w");
out.write("</td>");
// REQUESTS permissions
out.write("<td>");
if (p.hasRequestReadPermission())
out.write("r");
if (p.hasRequestWritePermission())
out.write("w");
out.write("</td>");
// PERSONAL INFO
out.write("<td>");
if (p.hasPersonalInfoReadPermission())
out.write("r");
if (p.hasPersonalInfoWritePermission())
out.write("w");
out.write("</td>");
// SUSPEND permission
out.write("<td>");
if (p.hasSuspendPermission())
out.write("yes");
out.write("</td>");
// out.println( "</tr>" );
} catch (IOException e) {
throw new JspTagException(e.getMessage());
}
}
private void printFooter() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.write("</table>");
} catch (IOException e) {
throw new JspTagException(e.getMessage());
}
}
public int doStartTag() throws JspException {
// Look in request context
Object o = pageContext.getAttribute(getVar());
VOMSPermission p;
if (o instanceof Map.Entry) {
p = (VOMSPermission) ((Map.Entry) o).getValue();
} else
p = (VOMSPermission) o;
if (header == null)
header = SHORT_HEADER;
// if ( SHORT_HEADER.equals( header ) )
// printShortHeader();
// if ( LONG_HEADER.equals( header ) )
// printLongHeader();
printPermissions(p);
// printFooter();
return SKIP_BODY;
}
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
}