/*
* Copyright (C) 2011 Marius Giepz
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package org.saiku.adhoc.model.master;
import java.util.ArrayList;
import java.util.List;
import org.pentaho.metadata.model.LogicalColumn;
import org.pentaho.metadata.model.concept.types.AggregationType;
import org.pentaho.metadata.model.concept.types.Alignment;
/**
* @author mgie
*
* org.pentaho.reporting.engine.classic.wizard.model.
* DetailFieldDefinition.class
*
*/
public class SaikuColumn implements SaikuElement{
private SaikuElementFormat columnHeaderFormat;
private SaikuElementFormat columnFormat;
private String id, name, description;
private List<String> aggTypes = new ArrayList<String>();
private String defaultAggType;
private String selectedAggType;
private String selectedSummaryType;
private String fieldType;
private String formula;
private String category;
private String formatMask;
private String uid;
private String sort;
private String layoutId;
//private boolean forGroupOnly;
private boolean hideRepeating;
private boolean hideOnReport;
public SaikuColumn() {
//this.forGroupOnly = false;
this.hideRepeating = false;
this.sort = "NONE";
}
public SaikuColumn(LogicalColumn logicalColumn) {
final List<AggregationType> aggregationList = logicalColumn.getAggregationList();
this.aggTypes = new ArrayList<String>();
for (AggregationType aggregationType : aggregationList) {
this.aggTypes.add(aggregationType.name());
}
if(!this.aggTypes.contains(AggregationType.NONE.name())){
this.aggTypes.add(AggregationType.NONE.name());
}
final String none = AggregationType.NONE.name();
if(this.aggTypes.isEmpty()){
this.aggTypes.add(none);
}
String defAggType = logicalColumn.getAggregationType().name()!=null?
logicalColumn.getAggregationType().name(): none;
this.defaultAggType = defAggType;
final String locale = "en_En";
this.description = logicalColumn.getDescription(locale);
this.name = logicalColumn.getName(locale);
this.columnFormat = new SaikuElementFormat();
this.columnHeaderFormat = new SaikuElementFormat();
Alignment propAlignment = (Alignment) logicalColumn.getProperty("alignment");
if(propAlignment!=null){
if(propAlignment==Alignment.LEFT){
this.columnHeaderFormat.setHorizontalAlignment("LEFT");
this.columnFormat.setHorizontalAlignment("LEFT");
}else if (propAlignment==Alignment.RIGHT){
this.columnHeaderFormat.setHorizontalAlignment("RIGHT");
this.columnFormat.setHorizontalAlignment("RIGHT");
}else if (propAlignment==Alignment.CENTERED){
this.columnHeaderFormat.setHorizontalAlignment("CENTER");
this.columnFormat.setHorizontalAlignment("CENTER");
}
}
String propMask = (String) logicalColumn.getProperty("mask");
if(propMask!=null){
this.formatMask = propMask;
}
this.fieldType = logicalColumn.getDataType().getName();
//this.forGroupOnly = false;
this.sort = "NONE";
}
public SaikuElementFormat getElementFormat() {
return columnFormat;
}
public void setElementFormat(SaikuElementFormat elementFormat) {
this.columnFormat = elementFormat;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<String> getAggTypes() {
return aggTypes;
}
public void setAggTypes(List<String> aggTypes) {
this.aggTypes = aggTypes;
}
public String getDefaultAggType() {
return defaultAggType;
}
public void setDefaultAggType(String defaultAggType) {
this.defaultAggType = defaultAggType;
}
public String getSelectedAggType() {
return selectedAggType;
}
public void setSelectedAggType(String selectedAggType) {
this.selectedAggType = selectedAggType;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getFormatMask() {
return formatMask;
}
public void setFormatMask(String formatMask) {
this.formatMask = formatMask;
}
/*
public void setForGroupOnly(boolean forGroupOnly) {
this.forGroupOnly = forGroupOnly;
}
public boolean isForGroupOnly() {
return forGroupOnly;
}
*/
public void setUid(String uid) {
this.uid = uid;
}
public String getUid() {
return uid;
}
@Override
public String toString() {
return "SaikuColumn [id=" + id + ", name=" + name + ", description="
+ description + ", selectedAggType=" + selectedAggType
+ ", fieldType=" + fieldType + ", uid=" + uid + "]";
}
public void setSort(String sort) {
this.sort = sort;
}
public String getSort() {
return sort;
}
public void setColumnHeaderFormat(SaikuElementFormat columnHeaderFormat) {
this.columnHeaderFormat = columnHeaderFormat;
}
public SaikuElementFormat getColumnHeaderFormat() {
return columnHeaderFormat;
}
public void setSelectedSummaryType(String selectedSummaryType) {
this.selectedSummaryType = selectedSummaryType;
}
public String getSelectedSummaryType() {
return selectedSummaryType;
}
public void setFormula(String formula) {
this.formula = formula;
}
public String getFormula() {
return formula;
}
public void setHideRepeating(boolean hideRepeating) {
this.hideRepeating = hideRepeating;
}
public boolean isHideRepeating() {
return hideRepeating;
}
public void setLayoutId(String layoutId) {
this.layoutId = layoutId;
}
public String getLayoutId() {
return layoutId;
}
public void setHideOnReport(boolean hideOnReport) {
this.hideOnReport = hideOnReport;
}
public boolean isHideOnReport() {
return hideOnReport;
}
}