code: public DJCrosstab build(){
  		if (crosstab.getMeasures().isEmpty()){
  			throw new LayoutException("Crosstabs must have at least one measure");
  		}
  		if (crosstab.getColumns().isEmpty()){
  			throw new LayoutException("Crosstabs must have at least one column");
  		}
  		if (crosstab.getRows().isEmpty()){
  			throw new LayoutException("Crosstabs must have at least one row");
  		}
  		
  		
  		//Ensure default dimension values
  		for (DJCrosstabColumn col : crosstab.getColumns()) {
  			if (col.getWidth() == -1 && cellWidth != -1)
  				col.setWidth(cellWidth);
  
  			if (col.getWidth() == -1 )
  				col.setWidth(DEFAULT_CELL_WIDTH);
  
  			if (col.getHeaderHeight() == -1 && columnHeaderHeight != -1)
  				col.setHeaderHeight(columnHeaderHeight);
  
  			if (col.getHeaderHeight() == -1)
  				col.setHeaderHeight(DEFAULT_COLUMN_HEADER_HEIGHT);
  		}
  
  		for (DJCrosstabRow row : crosstab.getRows()) {
  			if (row.getHeight() == -1 && cellHeight != -1)
  				row.setHeight(cellHeight);
  
  			if (row.getHeight() == -1 )
  				row.setHeight(DEFAULT_CELL_HEIGHT);
  
  			if (row.getHeaderWidth() == -1 && rowHeaderWidth != -1)
  				row.setHeaderWidth(rowHeaderWidth);
  
  			if (row.getHeaderWidth() == -1)
  				row.setHeaderWidth(DEFAULT_ROW_HEADER_WIDTH);
  
  		}
  		return crosstab;
  	}
docs: Build the crosstab. Throws LayoutException if anything is wrong
  @return