You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
7.2 KiB
294 lines
7.2 KiB
package de.superx.bianalysis.models; |
|
|
|
import java.util.Comparator; |
|
import java.util.List; |
|
import java.util.Objects; |
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnore; |
|
import com.fasterxml.jackson.databind.node.ArrayNode; |
|
|
|
import de.superx.bianalysis.metadata.Identifier; |
|
import de.superx.bianalysis.repository.dto.AttributeDto; |
|
|
|
public class DimensionAttribute { |
|
|
|
public static final List<String> SPECIAL_VALUES = List.of("n. v.", "k.A.", "k.a.", "unbekannt", "Unbekannt", "ungültig", "Ungültig"); |
|
|
|
public static final Comparator<String> SPECIAL_VALUE_COMPARATOR = (a1, a2) -> { |
|
if (a1.equals(a2)) { |
|
return 0; |
|
} |
|
if (DimensionAttribute.SPECIAL_VALUES.contains(a1)) { |
|
return -1; |
|
} |
|
if (DimensionAttribute.SPECIAL_VALUES.contains(a2)) { |
|
return 1; |
|
} |
|
return a1.compareTo(a2); |
|
}; |
|
|
|
public static String specialValueListForSql() { |
|
String result = String.join("', '", SPECIAL_VALUES); |
|
return "'" + result + "'"; |
|
} |
|
|
|
@JsonIgnore |
|
private AttributeDto attributeTable; |
|
|
|
@JsonIgnore |
|
private String dimCaption; |
|
|
|
@JsonIgnore |
|
private String dimId; |
|
|
|
@JsonIgnore |
|
private String dimConformedId; |
|
|
|
@JsonIgnore |
|
private String tablename; |
|
|
|
@JsonIgnore |
|
private String joincolumn; |
|
|
|
@JsonIgnore |
|
private boolean isHistorical; |
|
|
|
@JsonIgnore |
|
private String dimensionTableAlias; |
|
|
|
@JsonIgnore |
|
private String dimensionColumnAlias; |
|
|
|
private List<String> dimensionAttributeValues; |
|
|
|
private ArrayNode criteriaGroups; |
|
|
|
@JsonIgnore |
|
private String dimIdJoinColumn; |
|
|
|
@JsonIgnore |
|
private boolean isGrouping = false; |
|
|
|
@JsonIgnore |
|
private boolean isNullAttribute = false; |
|
|
|
public DimensionAttribute() { |
|
super(); |
|
} |
|
|
|
public DimensionAttribute(AttributeDto attributeTable) { |
|
this.attributeTable = attributeTable; |
|
} |
|
|
|
public void setDimension(Dimension dim) { |
|
this.dimCaption = dim.getCaption(); |
|
this.dimId = dim.getId().composedId; |
|
this.tablename = dim.getTablename(); |
|
this.joincolumn = dim.getJoincolumn(); |
|
this.isHistorical = dim.isHistorical(); |
|
this.dimIdJoinColumn = dim.getIdColumn(); |
|
if(dim.getAlias() != null){ |
|
this.dimensionTableAlias = dim.getAlias(); |
|
} else { |
|
this.dimensionTableAlias = generateDimensionTableAlias(joincolumn); |
|
} |
|
this.dimensionColumnAlias = getColumnname() + "_" + getId().value; |
|
} |
|
|
|
public static String generateDimensionTableAlias(String joincolumn) { |
|
if (joincolumn != null) { |
|
return joincolumn.replaceFirst("_(id|lid)$", ""); |
|
} |
|
return null; |
|
} |
|
|
|
@Override |
|
public int hashCode() { |
|
return Objects.hash(getId()); |
|
} |
|
|
|
@Override |
|
public boolean equals(Object obj) { |
|
if (this == obj) return true; |
|
if (obj == null) return false; |
|
if (getClass() != obj.getClass()) return false; |
|
DimensionAttribute other = (DimensionAttribute) obj; |
|
return Objects.equals(this.getId(), other.getId()); |
|
} |
|
|
|
public String getCaption() { |
|
return this.attributeTable.caption; |
|
} |
|
|
|
public boolean isHidden() { |
|
if(this.attributeTable.isHidden == null) { |
|
return false; |
|
} |
|
return this.attributeTable.isHidden.booleanValue(); |
|
} |
|
|
|
public boolean isCustom() { |
|
return this.attributeTable.isCustom != null && this.attributeTable.isCustom.booleanValue(); |
|
} |
|
|
|
public String getColumnname() { |
|
return this.attributeTable.columnname; |
|
} |
|
|
|
public String getSortOrderColumn() { |
|
return this.attributeTable.sortOrderColumn; |
|
} |
|
|
|
public String getFilterSelection() { |
|
return this.attributeTable.filterSelection; |
|
} |
|
|
|
public String getDimId() { |
|
return dimId; |
|
} |
|
|
|
public void setDimId(String dimId) { |
|
this.dimId = dimId; |
|
} |
|
|
|
public String getDimConformedId() { |
|
return dimConformedId; |
|
} |
|
|
|
public void setDimConformedId(String dimConformedId) { |
|
this.dimConformedId = dimConformedId; |
|
} |
|
|
|
public String getAttrConformedId() { |
|
return this.attributeTable.attrConformedId; |
|
} |
|
|
|
public Identifier getId() { |
|
return this.attributeTable.id; |
|
} |
|
|
|
@JsonIgnore |
|
public String getStringId() { |
|
return this.attributeTable.id.composedId; |
|
} |
|
|
|
public String getDimCaption() { |
|
return dimCaption; |
|
} |
|
|
|
public void setDimCaption(String dimCaption) { |
|
this.dimCaption = dimCaption; |
|
} |
|
|
|
public String getDimensionTableAlias() { |
|
return dimensionTableAlias; |
|
} |
|
|
|
public void setDimensionTableAlias(String dimensionTableAlias) { |
|
this.dimensionTableAlias = dimensionTableAlias; |
|
} |
|
|
|
public String getDimensionColumnAlias() { |
|
return dimensionColumnAlias; |
|
} |
|
|
|
public void setDimensionColumnAlias(String dimensionColumnAlias) { |
|
this.dimensionColumnAlias = dimensionColumnAlias; |
|
} |
|
|
|
public String getDescription() { |
|
return this.attributeTable.description; |
|
} |
|
|
|
public Identifier getDimensionId() { |
|
return this.attributeTable.dimensionId; |
|
} |
|
|
|
public String getTablename() { |
|
return tablename; |
|
} |
|
|
|
public void setTablename(String tablename) { |
|
this.tablename = tablename; |
|
} |
|
|
|
public String getJoincolumn() { |
|
return joincolumn; |
|
} |
|
|
|
public void setJoincolumn(String joincolumn) { |
|
this.joincolumn = joincolumn; |
|
} |
|
|
|
public boolean isHistorical() { |
|
return isHistorical; |
|
} |
|
|
|
public void setHistorical(boolean isHistorical) { |
|
this.isHistorical = isHistorical; |
|
} |
|
|
|
public boolean isHierarchicalFilter() { |
|
if(this.attributeTable.hierarchicalFilter == null) { |
|
return false; |
|
} |
|
return this.attributeTable.hierarchicalFilter.booleanValue(); |
|
} |
|
|
|
public List<String> getDimensionAttributeValues() { |
|
return dimensionAttributeValues; |
|
} |
|
|
|
public void setDimensionAttributeValues(List<String> dimensionAttributeValues) { |
|
this.dimensionAttributeValues = dimensionAttributeValues; |
|
} |
|
|
|
public void setDimIdJoinColumn(String idColumn) { |
|
this.dimIdJoinColumn = idColumn; |
|
} |
|
|
|
public String getDimIdJoinColumn() { |
|
return this.dimIdJoinColumn; |
|
} |
|
|
|
public void setAttrConformedId(String stringId) { |
|
this.attributeTable.attrConformedId = stringId; |
|
} |
|
|
|
public Integer getPosition() { |
|
return this.attributeTable.position; |
|
} |
|
|
|
public String getDefaultRelease() { |
|
return this.attributeTable.defaultRelease; |
|
} |
|
|
|
public ArrayNode getCriteriaGroups() { |
|
return this.attributeTable.criteriaGroups; |
|
} |
|
|
|
public void setCriteriaGroups(ArrayNode criteriaGroups) { |
|
this.criteriaGroups = criteriaGroups; |
|
} |
|
|
|
@JsonIgnore |
|
public boolean isGrouping() { |
|
return isGrouping; |
|
} |
|
|
|
@JsonIgnore |
|
public void setGrouping(boolean isGrouping) { |
|
this.isGrouping = isGrouping; |
|
} |
|
|
|
@JsonIgnore |
|
public boolean isNullAttribute() { |
|
return isNullAttribute; |
|
} |
|
|
|
@JsonIgnore |
|
public void setNullAttribute(boolean isNullAttribute) { |
|
this.isNullAttribute = isNullAttribute; |
|
} |
|
|
|
}
|
|
|