import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
import eu.etaxonomy.cdm.api.service.dto.SpecimenRowWrapperDTO;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.description.Character;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
private NatTable natTable;
- private Map<Integer, Feature> indexToFeatureMap = new HashMap<>();
+ private Map<Integer, Character> indexToCharacterMap = new HashMap<>();
private Map<Feature, List<State>> categoricalFeatureToStateMap = new HashMap<>();
private FreezeLayer freezeLayer;
- private List<Character> features;
+ private List<Character> characters;
private CharacterMatrixPart part;
natTable.doCommand(new ClientAreaResizeCommand(natTable));
}
- private List<Character> initFeatureList(FeatureNode node){
- List<Character> features = new ArrayList<>();
+ private List<Character> initCharacterList(FeatureNode node){
+ List<Character> characters = new ArrayList<>();
node.getChildNodes().forEach(childNode->
{
- DefinedTermBase feature = childNode.getTerm();
+ DefinedTermBase term = childNode.getTerm();
// FIXME #8146 this is currently checked via the termType of the tree
// in the init() method. This may be solved by adding generics to FeatureNode
// so that getTerm is typified. This would make this check obsolete
- if(feature.isInstanceOf(Character.class)){
- features.add((Character) feature);
+ if(term.isInstanceOf(Character.class)){
+ characters.add(HibernateProxyHelper.deproxy(term, Character.class));
}
- features.addAll(initFeatureList(childNode));
+ characters.addAll(initCharacterList(childNode));
});
- return features;
+ return characters;
}
public void initDescriptiveDataSet(DescriptiveDataSet descriptiveDataSet){
this.descriptiveDataSet = descriptiveDataSet;
//get features/columns stored in descriptive data set
FeatureTree tree = descriptiveDataSet.getDescriptiveSystem();
- features = initFeatureList(tree.getRoot());
+ characters = initCharacterList(tree.getRoot());
//init state data for categorical features
- features.forEach(feature->
+ characters.forEach(character->
{
- if(feature.isSupportsCategoricalData()){
+ if(character.isSupportsCategoricalData()){
List<State> supportedStates = new ArrayList<>();
- feature.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
- categoricalFeatureToStateMap.put(feature, supportedStates);
+ character.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
+ categoricalFeatureToStateMap.put(character, supportedStates);
}
});
descriptions = new BasicEventList<>();
propertyToLabelMap.put(COLLECTOR_COLUMN, Messages.CharacterMatrix_COLLECTOR_NO);
propertyToLabelMap.put(IDENTIFIER_COLUMN, Messages.CharacterMatrix_IDENTIFIER);
propertyToLabelMap.put(COUNTRY_COLUMN, Messages.CharacterMatrix_COUNTRY);
- for(int i=0;i<features.size();i++){
- Feature feature = features.get(i);
- initLabels(i, feature);
+ for(int i=0;i<characters.size();i++){
+ Character character = characters.get(i);
+ initLabels(i, character);
}
// layer for event handling of GlazedLists and PropertyChanges
//regoster labels with summary prefix for summary layer
ColumnOverrideLabelAccumulator summaryColumnLabelAccumulator =new ColumnOverrideLabelAccumulator(bodyDataLayer);
summaryRowLayer.setConfigLabelAccumulator(summaryColumnLabelAccumulator);
- for(int i=0;i<features.size();i++){
- Feature feature = features.get(i);
+ for(int i=0;i<characters.size();i++){
+ Character character = characters.get(i);
summaryColumnLabelAccumulator.registerColumnOverrides(
i+LEADING_COLUMN_COUNT,
- SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+ SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(character));
}
// because the horizontal dependency is the ViewportLayer
// we need to set the composite dependency to false
}
}
- private void initLabels(int index, Feature feature) {
- indexToFeatureMap.put(index+LEADING_COLUMN_COUNT, feature);
+ private void initLabels(int index, Character character) {
+ indexToCharacterMap.put(index+LEADING_COLUMN_COUNT, character);
- String featureLabel = feature.getLabel();
- String property = featureLabel;
+ String label = character.getLabel();
+ String property = label;
//show unit for quantitative data
- if(feature.isSupportsQuantitativeData()){
- Set<MeasurementUnit> recommendedMeasurementUnits = feature.getRecommendedMeasurementUnits();
+ if(character.isSupportsQuantitativeData()){
+ Set<MeasurementUnit> recommendedMeasurementUnits = character.getRecommendedMeasurementUnits();
if(recommendedMeasurementUnits.size()>1){
MessagingUtils.warningDialog(Messages.CharacterMatrix_INIT_PROBLEM, CharacterMatrix.class,
- String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, feature.getLabel()));
+ String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, character.getLabel()));
}
if(recommendedMeasurementUnits.size()==1){
MeasurementUnit unit = recommendedMeasurementUnits.iterator().next();
- featureLabel += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
+ label += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
- propertyToLabelMap.put(property, featureLabel);
+ propertyToLabelMap.put(property, label);
}
public void loadDescriptions(DescriptiveDataSet descriptiveDataSet) {
return categoricalFeatureToStateMap.get(feature);
}
- public Map<Integer, Feature> getIndexToFeatureMap() {
- return indexToFeatureMap;
+ public Map<Integer, Character> getIndexToCharacterMap() {
+ return indexToCharacterMap;
}
public LinkedMap<String, String> getPropertyToLabelMap() {
}
public List<Character> getFeatures() {
- return features;
+ return characters;
}
public Map<Feature, CategoricalDataHistogram> getFeatureToHistogramMap() {