Browse Source

add the column CHARACTERISTICS.ENABLED

tags/2.6
simonbrandhof 13 years ago
parent
commit
690808781a

+ 1
- 1
sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java View File

public class SchemaMigration { public class SchemaMigration {


public final static int VERSION_UNKNOWN = -1; public final static int VERSION_UNKNOWN = -1;
public static final int LAST_VERSION = 138;
public static final int LAST_VERSION = 139;


public final static String TABLE_NAME = "schema_migrations"; public final static String TABLE_NAME = "schema_migrations";



+ 3
- 3
sonar-core/src/test/resources/org/sonar/core/qualitymodel/DefaultModelFinderTest/noDefinitionsToRegister-result.xml View File

<quality_models id="1" name="M1" /> <quality_models id="1" name="M1" />
<quality_models id="2" name="M2" /> <quality_models id="2" name="M2" />


<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]"/>
<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" enabled="true" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true"/>


<characteristic_edges child_id="2" parent_id="1"/> <characteristic_edges child_id="2" parent_id="1"/>
</dataset> </dataset>

+ 3
- 3
sonar-core/src/test/resources/org/sonar/core/qualitymodel/DefaultModelFinderTest/registerOnlyNewDefinitions-result.xml View File

<!-- NEW MODEL --> <!-- NEW MODEL -->
<quality_models id="3" name="NEWMODEL" /> <quality_models id="3" name="NEWMODEL" />


<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]"/>
<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" enabled="true" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true"/>


<characteristic_edges child_id="2" parent_id="1"/> <characteristic_edges child_id="2" parent_id="1"/>
</dataset> </dataset>

+ 6
- 6
sonar-core/src/test/resources/org/sonar/core/qualitymodel/DefaultModelFinderTest/reset-result.xml View File

<quality_models id="2" name="M2" /> <quality_models id="2" name="M2" />
<quality_models id="3" name="M1" /> <quality_models id="3" name="M1" />


<!--<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />-->
<!--<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]"/>-->
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="4" kee="NEWM1C1A" name="NEWM1C1A" quality_model_id="3" rule_id="[null]" characteristic_order="1" depth="2" description="[null]"/>
<characteristics id="5" kee="NEWM1C1" name="NEWM1C1" quality_model_id="3" rule_id="[null]" characteristic_order="1" depth="1" description="[null]"/>
<characteristics id="6" kee="NEWM1C2" name="NEWM1C2" quality_model_id="3" rule_id="[null]" characteristic_order="2" depth="1" description="[null]"/>
<!--<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />-->
<!--<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" enabled="true"/>-->
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
<characteristics id="4" kee="NEWM1C1A" name="NEWM1C1A" quality_model_id="3" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" enabled="true"/>
<characteristics id="5" kee="NEWM1C1" name="NEWM1C1" quality_model_id="3" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true"/>
<characteristics id="6" kee="NEWM1C2" name="NEWM1C2" quality_model_id="3" rule_id="[null]" characteristic_order="2" depth="1" description="[null]" enabled="true"/>


<!--<characteristic_edges child_id="2" parent_id="1"/>--> <!--<characteristic_edges child_id="2" parent_id="1"/>-->
<characteristic_edges child_id="4" parent_id="5"/> <characteristic_edges child_id="4" parent_id="5"/>

+ 3
- 3
sonar-core/src/test/resources/org/sonar/core/qualitymodel/DefaultModelFinderTest/shared.xml View File

<quality_models id="1" name="M1" /> <quality_models id="1" name="M1" />
<quality_models id="2" name="M2" /> <quality_models id="2" name="M2" />


<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]"/>
<characteristics id="1" kee="M1C1" name="M1C1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
<characteristics id="2" kee="M1C2" name="M1C2" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="2" description="[null]" enabled="true" />
<characteristics id="3" kee="M2C1" name="M2C1" quality_model_id="2" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true"/>


<characteristic_edges child_id="2" parent_id="1"/> <characteristic_edges child_id="2" parent_id="1"/>
</dataset> </dataset>

+ 1
- 1
sonar-core/src/test/resources/org/sonar/core/qualitymodel/ModelTest/saveModelAndCharacteristics.xml View File

<dataset> <dataset>
<quality_models id="1" name="initial" /> <quality_models id="1" name="initial" />
<characteristics id="1" kee="FAKE" name="fake" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="1" kee="FAKE" name="fake" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
</dataset> </dataset>

+ 2
- 2
sonar-core/src/test/resources/org/sonar/core/qualitymodel/ModelTest/testGraphOfCharacteristics.xml View File

<dataset> <dataset>
<quality_models id="1" name="initial" /> <quality_models id="1" name="initial" />
<characteristics id="1" kee="FAKE1" name="fake1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]"/>
<characteristics id="2" kee="FAKE2" name="fake2" quality_model_id="1" rule_id="[null]" characteristic_order="2" depth="1" description="[null]" />
<characteristics id="1" kee="FAKE1" name="fake1" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true"/>
<characteristics id="2" kee="FAKE2" name="fake2" quality_model_id="1" rule_id="[null]" characteristic_order="2" depth="1" description="[null]" enabled="true" />


<characteristic_edges child_id="2" parent_id="1"/> <characteristic_edges child_id="2" parent_id="1"/>
</dataset> </dataset>

+ 1
- 1
sonar-core/src/test/resources/org/sonar/core/qualitymodel/ModelTest/testTreeOfCharacteristics.xml View File

<dataset> <dataset>
<quality_models id="1" name="initial" /> <quality_models id="1" name="initial" />
<characteristics id="1" kee="FAKE" name="fake" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" />
<characteristics id="1" kee="FAKE" name="fake" quality_model_id="1" rule_id="[null]" characteristic_order="1" depth="1" description="[null]" enabled="true" />
<characteristic_edges child_id="1" parent_id="1"/> <characteristic_edges child_id="1" parent_id="1"/>
</dataset> </dataset>

+ 12
- 0
sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java View File

@Column(name = "description", nullable = true, length = 4000) @Column(name = "description", nullable = true, length = 4000)
private String description; private String description;


@Column(name = "enabled", updatable = true, nullable = true)
private Boolean enabled = Boolean.TRUE;

@ManyToMany @ManyToMany
@JoinTable( @JoinTable(
name = "characteristic_edges", name = "characteristic_edges",
return this; return this;
} }


public Boolean getEnabled() {
return enabled;
}

public Characteristic setEnabled(Boolean b) {
this.enabled = b;
return this;
}

public Characteristic addChildren(Characteristic... list) { public Characteristic addChildren(Characteristic... list) {
if (list != null) { if (list != null) {
for (Characteristic c : list) { for (Characteristic c : list) {

+ 34
- 8
sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java View File

*/ */
package org.sonar.api.qualitymodel; package org.sonar.api.qualitymodel;


import com.google.common.collect.Lists;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle; import org.apache.commons.lang.builder.ToStringStyle;
private String name; private String name;


@OneToMany(mappedBy = "model", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @OneToMany(mappedBy = "model", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Characteristic> characteristics = new ArrayList<Characteristic>();
private List<Characteristic> characteristics = Lists.newArrayList();


/** /**
* Use the factory method <code>Model</code> * Use the factory method <code>Model</code>
return c; return c;
} }


/**
* @return enabled characteristics
*/
public List<Characteristic> getCharacteristics() { public List<Characteristic> getCharacteristics() {
return characteristics;
return getCharacteristics(true);
}

public List<Characteristic> getCharacteristics(boolean onlyEnabled) {
if (!onlyEnabled) {
return characteristics;
}
List<Characteristic> result = Lists.newArrayList();
for (Characteristic characteristic : characteristics) {
if (characteristic.getEnabled()) {
result.add(characteristic);
}
}
return result;
} }


/**
* Search for an ENABLED characteristic by its key.
*/
public Characteristic getCharacteristicByKey(String key) { public Characteristic getCharacteristicByKey(String key) {
for (Characteristic characteristic : getCharacteristics()) {
if (StringUtils.equals(key, characteristic.getKey())) {
for (Characteristic characteristic : characteristics) {
if (characteristic.getEnabled() && StringUtils.equals(key, characteristic.getKey())) {
return characteristic; return characteristic;
} }
} }
return null; return null;
} }


/**
* Search for ENABLED characteristics by their depth.
*/
public List<Characteristic> getCharacteristicsByDepth(int depth) { public List<Characteristic> getCharacteristicsByDepth(int depth) {
List<Characteristic> result = new ArrayList<Characteristic>();
List<Characteristic> result = Lists.newArrayList();
for (Characteristic c : characteristics) { for (Characteristic c : characteristics) {
if (c.getDepth()==depth) {
if (c.getEnabled() && c.getDepth()==depth) {
result.add(c); result.add(c);
} }
} }
return result; return result;
} }


/**
* Search for an ENABLED characteristic by its name.
*/
public Characteristic getCharacteristicByName(String name) { public Characteristic getCharacteristicByName(String name) {
for (Characteristic characteristic : getCharacteristics()) {
if (StringUtils.equals(name, characteristic.getName())) {
for (Characteristic characteristic : characteristics) {
if (characteristic.getEnabled() && StringUtils.equals(name, characteristic.getName())) {
return characteristic; return characteristic;
} }
} }

+ 4
- 0
sonar-server/src/main/webapp/WEB-INF/app/models/characteristic.rb View File



belongs_to :rule belongs_to :rule
belongs_to :quality_model belongs_to :quality_model
validates_uniqueness_of :name, :scope => :quality_model_id, :case_sensitive => false, :if => Proc.new { |c| c.rule_id.nil? }
validates_length_of :name, :in => 1..100, :allow_blank => false, :if => Proc.new { |c| c.rule_id.nil? }
validates_presence_of :quality_model


def root? def root?
depth==1 depth==1

+ 0
- 1
sonar-server/src/main/webapp/WEB-INF/db/migrate/138_add_characteristic_description.rb View File



def self.up def self.up
add_column 'characteristics', 'description', :string, :null => true, :limit => 4000 add_column 'characteristics', 'description', :string, :null => true, :limit => 4000
Characteristic.reset_column_information
end end


end end

+ 27
- 0
sonar-server/src/main/webapp/WEB-INF/db/migrate/139_add_characteristic_enabled.rb View File

#
# Sonar, entreprise quality control 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
#
class AddCharacteristicEnabled < ActiveRecord::Migration

def self.up
add_column 'characteristics', 'enabled', :boolean, :null => true
Characteristic.reset_column_information
end

end

Loading…
Cancel
Save