⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csvview.java

📁 ecside jsp前途分页的标签 实现ajax 增删改查等
💻 JAVA
字号:
/*
 * Copyright 2004 original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * 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 License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ecside.view;

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.ecside.core.TableModel;
import org.ecside.core.bean.Column;
import org.ecside.core.bean.Export;
import org.ecside.core.context.ContextUtils;
import org.ecside.table.calc.CalcResult;
import org.ecside.table.calc.CalcUtils;
import org.ecside.util.ExportViewUtils;
import org.ecside.util.ExtremeUtils;

/**
 * For producing a delimited datafile view of the table. Default delimiter is
 * comma.
 * 
 * @author Wei Zijun
 */
public class CsvView implements View {
    public final static String DELIMITER = "delimiter";
    final static String DEFAULT_DELIMITER = ",";
//    private StringBuffer plainData = new StringBuffer();
    private OutputStream outputStream ;
    
    private OutputStream outputStreamOut;
    
    private StringBuffer rowBuffer =null;
    
    private PrintWriter out =null;
    
    private String delimiter;

    
    public void beforeBody(TableModel model) {
    	
		outputStream=ContextUtils.getResponseOutputStream(model.getContext());
		
		outputStreamOut=null;
		if (outputStream==null){
			outputStream=new ByteArrayOutputStream();
			outputStreamOut=outputStream;
		}
		out=new PrintWriter(outputStream);
        Export export = model.getExportHandler().getCurrentExport();
        delimiter = export.getAttributeAsString(DELIMITER);
        
    	List columns = model.getColumnHandler().getHeaderColumns();
        if (StringUtils.isBlank(delimiter)) {
            delimiter = DEFAULT_DELIMITER;
        }
        boolean isFirstColumn=true;
        
        rowBuffer = new StringBuffer();
        for (Iterator iter = columns.iterator(); iter.hasNext();) {
            Column column = (Column) iter.next();
            
            String value = ExportViewUtils.parseCSV(column.getCellDisplay());
            if (!isFirstColumn){
            	rowBuffer.append(delimiter);
            }
            rowBuffer.append(value);
            isFirstColumn=false;            
        }
        if (columns.size()>0){
        	rowBuffer.append(ExportViewUtils.BR);
            writeToOutputStream(rowBuffer.toString());
        }
        

    }

    
    public void body(TableModel model, Column column) {
 
        String value = ExportViewUtils.parseCSV(column.getCellDisplay());
        rowBuffer.append(value);
        if (column.isLastColumn()) {
        	rowBuffer.append(ExportViewUtils.BR);
        	writeToOutputStream(rowBuffer.toString());
        }else{
        	rowBuffer.append(delimiter);
        }
   	 	
    }

    public Object afterBody(TableModel model) {
    	totals(model);
    	out.flush();
    	out.close();
        return outputStreamOut;
    }
    
    public void totals(TableModel model) {
    	
    	rowBuffer = new StringBuffer();
    	
        Column firstCalcColumn = model.getColumnHandler().getFirstCalcColumn();

        if (firstCalcColumn != null) {
            int rows = firstCalcColumn.getCalc().length;
            for (int i = 0; i < rows; i++) {

                for (Iterator iter = model.getColumnHandler().getColumns().iterator(); iter.hasNext();) {

                    Column column = (Column) iter.next();
                    if (column.isFirstColumn()) {
                        String calcTitle = CalcUtils.getFirstCalcColumnTitleByPosition(model, i);
                        rowBuffer.append(ExportViewUtils.parseCSV(calcTitle) );
                        continue;
                    }
                    rowBuffer.append(delimiter);
                    if (column.isCalculated()) {
                        CalcResult calcResult = CalcUtils.getCalcResultsByPosition(model, column, i);
                        java.lang.Number value = calcResult.getValue();
                        if (value != null){
                        	if (StringUtils.isNotBlank(column.getFormat())){
                        		rowBuffer.append(ExportViewUtils.parseCSV(ExtremeUtils.formatNumber(column.getFormat(), value, model.getLocale())));
                        	}else{
                        		rowBuffer.append(ExportViewUtils.parseCSV(value.toString()) );
                        	}
                        } else {
                        	rowBuffer.append(ExportViewUtils.parseCSV(""));
                        }
                    } else {
                    	rowBuffer.append(ExportViewUtils.parseCSV(""));
                    }
                }
                
                rowBuffer.append(ExportViewUtils.BR);
                writeToOutputStream(rowBuffer.toString());
            }
        }

    }


    public void writeToOutputStream(String rowContent){
    		out.print(rowContent);
			rowBuffer = new StringBuffer();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -