/* (c) 2017 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.geofence.rest.xml;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.geoserver.geofence.core.model.AdminRule;
import org.geoserver.geofence.core.model.IPAddressRange;
import org.geoserver.geofence.core.model.enums.AdminGrantType;
@XmlRootElement(name = "AdminRule")
public class JaxbAdminRule {
private Long id;
private Long priority;
private String userName;
private String roleName;
private String addressRange;
private String workspace;
private String access;
public JaxbAdminRule() {
}
public JaxbAdminRule(AdminRule rule) {
id = rule.getId();
priority = rule.getPriority();
userName = rule.getUsername();
roleName = rule.getRolename();
addressRange = rule.getAddressRange() == null? null : rule.getAddressRange().getCidrSignature();
workspace = rule.getWorkspace();
access = rule.getAccess().toString();
}
@XmlAttribute
public Long getId() {
return id;
}
@XmlElement
public Long getPriority() {
return priority;
}
public void setPriority(Long priority) {
this.priority = priority;
}
@XmlElement
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@XmlElement
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getAddressRange() {
return addressRange;
}
public void setAddressRange(String addressRange) {
this.addressRange = addressRange;
}
@XmlElement
public String getWorkspace() {
return workspace;
}
public void setWorkspace(String workspace) {
this.workspace = workspace;
}
@XmlElement
public String getAccess() {
return access;
}
public void setAccess(String access) {
this.access = access;
}
public AdminRule toRule() {
AdminRule rule = new AdminRule();
if (getPriority() != null) {
rule.setPriority(getPriority());
}
rule.setAccess(AdminGrantType.valueOf(getAccess()));
rule.setUsername(getUserName());
rule.setRolename(getRoleName());
rule.setAddressRange(getAddressRange() == null? null: new IPAddressRange(getAddressRange()));
rule.setWorkspace(getWorkspace());
rule.setId(id);
return rule;
}
public AdminRule toRule(AdminRule rule) {
if (getPriority() != null) {
rule.setPriority(getPriority());
}
if (getAccess() != null) {
rule.setAccess(AdminGrantType.valueOf(getAccess()));
}
if (getUserName() != null) {
rule.setUsername(convertAny(getUserName()));
}
if (getRoleName() != null) {
rule.setRolename(convertAny(getRoleName()));
}
if (getAddressRange() != null) {
rule.setAddressRange(new IPAddressRange(getAddressRange()));
}
if (getWorkspace() != null) {
rule.setWorkspace(convertAny(getWorkspace()));
}
if (id != null) {
rule.setId(id);
}
return rule;
}
protected static String convertAny(String s) {
if ("".equals(s) || "*".equals(s))
return null;
else return s;
}
}