/* (c) 2015 - 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.IPAddressRange; import org.geoserver.geofence.core.model.Rule; import org.geoserver.geofence.core.model.enums.GrantType; @XmlRootElement(name = "Rule") public class JaxbRule { private Long id; private Long priority; private String userName; private String roleName; private String addressRange; private String workspace; private String layer; private String service; private String request; private String access; public JaxbRule() { } public JaxbRule(Rule rule) { id = rule.getId(); priority = rule.getPriority(); userName = rule.getUsername(); roleName = rule.getRolename(); addressRange = rule.getAddressRange() == null? null : rule.getAddressRange().getCidrSignature(); workspace = rule.getWorkspace(); layer = rule.getLayer(); service = rule.getService() == null ? null : rule.getService().toUpperCase(); request = rule.getRequest(); 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 getLayer() { return layer; } public void setLayer(String layer) { this.layer = layer; } @XmlElement public String getService() { return service; } public void setService(String service) { this.service = service; } @XmlElement public String getRequest() { return request; } public void setRequest(String request) { this.request = request; } @XmlElement public String getAccess() { return access; } public void setAccess(String access) { this.access = access; } public Rule toRule() { Rule rule = new Rule(); if (getPriority() != null) { rule.setPriority(getPriority()); } rule.setAccess(GrantType.valueOf(getAccess())); rule.setUsername(getUserName()); rule.setRolename(getRoleName()); rule.setAddressRange(getAddressRange() == null? null: new IPAddressRange(getAddressRange())); rule.setService(getService()); rule.setRequest(getRequest()); rule.setWorkspace(getWorkspace()); rule.setLayer(getLayer()); rule.setId(id); return rule; } public Rule toRule(Rule rule) { if (getPriority() != null) { rule.setPriority(getPriority()); } if (getAccess() != null) { rule.setAccess(GrantType.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 (getService() != null) { rule.setService(convertAny(getService())); } if (getRequest() != null) { rule.setRequest(convertAny(getRequest())); } if (getWorkspace() != null) { rule.setWorkspace(convertAny(getWorkspace())); } if (getLayer() != null) { rule.setLayer(convertAny(getLayer())); } if (id != null) { rule.setId(id); } return rule; } protected static String convertAny(String s) { if ("".equals(s) || "*".equals(s)) return null; else return s; } }