/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.core.permit; import java.util.Map; import java.util.UUID; import org.apache.commons.lang.text.StrSubstitutor; import org.eclipse.skalli.services.permit.Permit; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("permit") public class PermitConfig { private UUID uuid; private String type; private String action; private String path; private int level; private boolean override; private String owner; private transient int pos; // do not remove: required by xstream public PermitConfig() { } public UUID getUuid() { return uuid; } public void setUuid(UUID uuid) { this.uuid = uuid; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public boolean isOverride() { return override; } public void setOverride(boolean override) { this.override = override; } public int getPos() { return pos; } public void setPos(int pos) { this.pos = pos; } public Permit asPermit() { return asPermit(null); } public Permit asPermit(Map<String,String> properties) { if (properties == null || properties.isEmpty()) { return new Permit(level, action, path); } StrSubstitutor subst = new StrSubstitutor(properties); return new Permit(level, action, subst.replace(path)); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((uuid == null) ? 0 : uuid.hashCode()); result = prime * result + ((type == null) ? 0 : type.hashCode()); result = prime * result + ((action == null) ? 0 : action.hashCode()); result = prime * result + ((path == null) ? 0 : path.hashCode()); result = prime * result + level; result = prime * result + ((owner == null) ? 0 : owner.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } PermitConfig other = (PermitConfig) obj; if (uuid != null && other.uuid != null) { return uuid.equals(other.uuid); } if (type == null) { if (other.type != null) { return false; } } else if (!type.equals(other.type)) { return false; } if (action == null) { if (other.action != null) { return false; } } else if (!action.equals(other.action)) { return false; } if (path == null) { if (other.path != null) { return false; } } else if (!path.equals(other.path)) { return false; } if (level != other.level) { return false; } if (owner == null) { if (other.owner != null) { return false; } } else if (!owner.equals(other.owner)) { return false; } return true; } @SuppressWarnings("nls") @Override public String toString() { return "PermitConfig [uuid=" + uuid + ", type=" + type + ", action=" + action + ", path=" + path + ", level=" + level + ", override=" + override + ", owner=" + owner + ", pos=" + pos + "]"; } }