Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.sonar.api.database.model.ResourceModel Maven / Gradle / Ivy
/*
* Sonar, open source software quality management tool.
* Copyright (C) 2009 SonarSource SA
* mailto:contact AT sonarsource DOT com
*
* Sonar is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* Sonar is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
package org.sonar.api.database.model;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.hibernate.annotations.BatchSize;
import org.sonar.api.database.BaseIdentifiable;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.resources.ProjectLink;
import org.sonar.api.resources.Resource;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
@Entity
@Table(name = "projects")
public class ResourceModel extends BaseIdentifiable implements Cloneable {
public static final String SCOPE_PROJECT = "PRJ";
public static final String QUALIFIER_PROJECT_TRUNK = "TRK";
public static final int DESCRIPTION_COLUMN_SIZE = 2000;
public static final int NAME_COLUMN_SIZE = 256;
public static final int KEY_SIZE = 230;
@Column(name = "name", updatable = true, nullable = true, length = NAME_COLUMN_SIZE)
private String name;
@Column(name = "description", updatable = true, nullable = true, length = DESCRIPTION_COLUMN_SIZE)
private String description;
@Column(name = "enabled", updatable = true, nullable = false)
private Boolean enabled = Boolean.TRUE;
@Column(name = "scope", updatable = true, nullable = false, length = 3)
private String scope;
@Column(name = "qualifier", updatable = true, nullable = false, length = 3)
private String qualifier;
@Column(name = "kee", updatable = false, nullable = false, length = KEY_SIZE)
private String key;
@Column(name = "language", updatable = true, nullable = true, length = 5)
private String languageKey;
@Column(name = "root_id", updatable = true, nullable = true)
private Integer rootId;
@Column(name = "copy_resource_id", updatable = true, nullable = true)
private Integer copyResourceId;
@OneToMany(mappedBy = "resource", fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE})
@BatchSize(size = 8)
private List projectLinks = new ArrayList();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "profile_id", updatable = true, nullable = true)
private RulesProfile rulesProfile;
public ResourceModel() {
}
public ResourceModel(String scope, String key, String qualifier, Integer rootId, String name) {
this.scope = scope;
this.key = key;
this.rootId = rootId;
this.name = name;
this.qualifier = qualifier;
}
public List getProjectLinks() {
return projectLinks;
}
public void setProjectLinks(List projectLinks) {
this.projectLinks = projectLinks;
}
public ProjectLink getProjectLink(String key) {
for (ProjectLink projectLink : projectLinks) {
if (key.equals(projectLink.getKey())) {
return projectLink;
}
}
return null;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = StringUtils.abbreviate(description, DESCRIPTION_COLUMN_SIZE);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = StringUtils.abbreviate(name, NAME_COLUMN_SIZE);
}
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getKey() {
return key;
}
public String getLanguageKey() {
return languageKey;
}
public void setLanguageKey(String lang) {
this.languageKey = lang;
}
public Integer getCopyResourceId() {
return copyResourceId;
}
public void setCopyResourceId(Integer copyResourceId) {
this.copyResourceId = copyResourceId;
}
public void setKey(String key) {
if (key.length() > KEY_SIZE) {
throw new IllegalArgumentException("Resource key is too long, max is " + KEY_SIZE + " characters. Got : " + key);
}
this.key = key;
}
public Integer getRootId() {
return rootId;
}
public void setRootId(Integer rootId) {
this.rootId = rootId;
}
public RulesProfile getRulesProfile() {
return rulesProfile;
}
public void setRulesProfile(RulesProfile rulesProfile) {
this.rulesProfile = rulesProfile;
}
public String getQualifier() {
return qualifier;
}
public void setQualifier(String qualifier) {
this.qualifier = qualifier;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ResourceModel)) {
return false;
}
if (this == obj) {
return true;
}
ResourceModel other = (ResourceModel) obj;
return new EqualsBuilder()
.append(key, other.key)
.append(enabled, other.enabled)
.append(rootId, other.rootId)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(key)
.append(enabled)
.append(rootId)
.toHashCode();
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.append("key", key)
.append("scope", scope)
.append("qualifier", qualifier)
.append("name", name)
.append("lang", languageKey)
.append("enabled", enabled)
.append("rootId", rootId)
.append("copyResourceId", copyResourceId)
.toString();
}
@Override
public Object clone() {
ResourceModel clone = new ResourceModel(getScope(), getKey(), getQualifier(), getRootId(), getName());
clone.setDescription(getDescription());
clone.setEnabled(getEnabled());
clone.setProjectLinks(getProjectLinks());
clone.setRulesProfile(getRulesProfile());
clone.setLanguageKey(getLanguageKey());
clone.setCopyResourceId(getCopyResourceId());
return clone;
}
public static ResourceModel build(Resource resource) {
ResourceModel model = new ResourceModel();
model.setEnabled(Boolean.TRUE);
model.setDescription(resource.getDescription());
model.setKey(resource.getKey());
if (resource.getLanguage() != null) {
model.setLanguageKey(resource.getLanguage().getKey());
}
model.setName(resource.getName());
model.setQualifier(resource.getQualifier());
model.setScope(resource.getScope());
return model;
}
}