SuperX-Kernmodul
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

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;
}
}