/*******************************************************************************
* Copyright (c) 2009, 2010 Dejan Spasic
* 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
*******************************************************************************/
package org.phpsrc.eclipse.pti.tools.phpmd.model;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
public class ViolationResource implements IViolation {
private IResource resource;
private String packageName;
private String className;
private String functionName;
private String methodName;
private int beginline;
private int endline;
private int priority;
private String description;
private URL externalInfoURL;
private String rule;
private String ruleSet;
public ViolationResource(IResource resource) {
this.resource = resource;
}
public IResource getResource() {
return resource;
}
public String getFileName() {
return resource.getLocation().lastSegment();
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getFunctionName() {
return functionName;
}
public void setFunctionName(String functionName) {
this.functionName = functionName;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public int getBeginline() {
return beginline;
}
public String getDescription() {
return new String(description);
}
public int getEndline() {
return endline;
}
public URL getExternalInfoURL() {
return externalInfoURL;
}
public int getPriority() {
return priority;
}
public String getRule() {
return rule;
}
public String getRuleSet() {
return ruleSet;
}
public void setBeginline(final int line) {
beginline = line;
}
public void setDescription(final String description) {
this.description = description;
}
public void setEndline(final int line) {
endline = line;
}
public void setExternalInfoURL(final String url) throws MalformedURLException {
setExternalInfoURL(new URL(url));
}
public void setExternalInfoURL(final URL url) {
externalInfoURL = url;
}
public void setPriority(final int priority) {
this.priority = priority;
}
public void setRule(final String rule) {
this.rule = rule;
}
public void setRuleSet(String ruleSet) {
this.ruleSet = ruleSet;
}
public String getInfo() {
if (null == resource)
return "";
return resource.getFullPath().toString();
}
public static ViolationResource loadViolationByInfo(String info) {
IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(info));
if (null == res)
return null;
return new ViolationResource(res);
}
public Object getAdapter(Class adapter) {
if (adapter.isInstance(resource))
return resource;
return Platform.getAdapterManager().getAdapter(this, adapter);
}
@Override
public String toString() {
return "Violation [priority=" + priority + ", rule=" + rule + ", ruleSet=" + ruleSet + ", filenam)="
+ getFileName() + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + beginline;
result = prime * result + endline;
result = prime * result + ((resource == null) ? 0 : resource.hashCode());
result = prime * result + ((rule == null) ? 0 : rule.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;
ViolationResource other = (ViolationResource) obj;
if (beginline != other.beginline)
return false;
if (endline != other.endline)
return false;
if (resource == null) {
if (other.resource != null)
return false;
} else if (!resource.equals(other.resource))
return false;
if (rule == null) {
if (other.rule != null)
return false;
} else if (!rule.equals(other.rule))
return false;
return true;
}
}