package pl.touk.tola.spring.mvc.export.dao; import pl.touk.tola.spring.mvc.export.ExportDataGetter; import pl.touk.tola.spring.mvc.export.beans.ExportData; import org.springframework.beans.BeanUtils; import pl.touk.tola.gwt.shared.ExportParameters; import pl.touk.wonderfulsecurity.dao.WsecBaseDao; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; public class HibernateExportGetter implements ExportDataGetter { WsecBaseDao wsecBaseDao; public ExportData getData(ExportParameters parameters) throws Exception { return new ExportData(exportDataFromGivenTable(parameters), getFieldNames(parameters.getClazz())); } protected List<String> getFieldNames(String clazzName) throws ClassNotFoundException { Class clazz = Class.forName(clazzName); ArrayList<String> properties = new ArrayList<String>(); PropertyDescriptor propertyDescriptors[] = BeanUtils.getPropertyDescriptors(clazz); for (PropertyDescriptor field : propertyDescriptors) { if (!field.isHidden() && field.getReadMethod().getModifiers() == Method.DECLARED) { properties.add(field.getName()); } } return properties; } protected ArrayList exportDataFromGivenTable(ExportParameters exportParameters) throws ClassNotFoundException { return wsecBaseDao.fetchList(exportParameters.getParameters(), exportParameters.getSortColumn(), true, Class.forName(exportParameters.getClazz())); } public void setWsecBaseDao(WsecBaseDao wsecBaseDao) { this.wsecBaseDao = wsecBaseDao; } }