All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ars.database.service.SimpleExcelAdapter Maven / Gradle / Ivy

package ars.database.service;

import java.sql.Date;
import java.lang.reflect.Field;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;

import ars.util.Beans;
import ars.file.office.Excels;
import ars.invoke.Invokes;
import ars.invoke.request.Requester;
import ars.database.service.Service;
import ars.database.service.ExcelAdapter;

/**
 * Excel数据对象适配简单实现
 * 
 * @author yongqiangwu
 * 
 * @param 
 *            数据模型
 */
public class SimpleExcelAdapter implements ExcelAdapter {
	private String[] dateFormats = new String[] { "yyyy-MM-dd", "yyyy/MM/dd" };

	public String[] getDateFormats() {
		return dateFormats;
	}

	public void setDateFormats(String[] dateFormats) {
		this.dateFormats = dateFormats;
	}

	@Override
	public void begin(Requester requester, Service service) {

	}

	@Override
	public String[] getTitles(Requester requester, Service service) {
		return Invokes.getPropertyMessages(requester, service.getModel());
	}

	@Override
	public T read(Requester requester, Service service, Row row) {
		int count = 0; // 设置属性个数
		T entity = Beans.getInstance(service.getModel());
		Field[] fields = Beans.getFields(service.getModel());
		for (int i = 0; i < fields.length; i++) {
			Field field = fields[i];
			Cell cell = row.getCell(i);
			Class type = field.getType();
			Object value = Date.class.isAssignableFrom(type) ? Excels.getDate(cell, this.dateFormats)
					: Excels.getValue(cell, type);
			if (value == null) {
				continue;
			}
			Beans.setValue(entity, field, value);
			count++;
		}
		return count == 0 ? null : entity;
	}

	@Override
	public void write(Requester requester, Service service, T entity, Row row) {
		Excels.setObject(row, entity);
	}

	@Override
	public void complete(Requester requester, Service service) {

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy