1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kns.lookup;
17
18 import java.io.IOException;
19 import java.io.OutputStream;
20 import java.io.Writer;
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.apache.commons.lang.StringUtils;
25 import org.directwebremoting.util.WriterOutputStream;
26 import org.displaytag.model.Row;
27 import org.displaytag.model.TableModel;
28 import org.kuali.rice.kns.util.KNSGlobalVariables;
29 import org.kuali.rice.kns.web.struts.form.KualiForm;
30 import org.kuali.rice.kns.web.struts.form.LookupForm;
31 import org.kuali.rice.kns.web.ui.ResultRow;
32 import org.kuali.rice.krad.bo.BusinessObject;
33 import org.kuali.rice.krad.bo.Exporter;
34 import org.kuali.rice.krad.datadictionary.BusinessObjectEntry;
35 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
36 import org.kuali.rice.krad.exception.ExportNotSupportedException;
37 import org.kuali.rice.krad.util.GlobalVariables;
38
39
40
41
42
43
44
45
46
47
48 public class ExportViewHelper {
49
50 private BusinessObjectEntry businessObjectEntry;
51 private List<BusinessObject> businessObjects;
52
53 public ExportViewHelper(TableModel tableModel) {
54 this.businessObjectEntry = loadBusinessObjectEntry();
55 this.businessObjects = loadBusinessObjects(tableModel);
56 }
57
58 protected BusinessObjectEntry loadBusinessObjectEntry() {
59 KualiForm kualiForm = KNSGlobalVariables.getKualiForm();
60 if (kualiForm instanceof LookupForm) {
61 LookupForm lookupForm = (LookupForm) kualiForm;
62 if (!StringUtils.isBlank(lookupForm.getBusinessObjectClassName())) {
63 return KRADServiceLocatorWeb.getDataDictionaryService().getDataDictionary().getBusinessObjectEntry(lookupForm.getBusinessObjectClassName());
64 }
65 }
66 return null;
67 }
68
69 protected List<BusinessObject> loadBusinessObjects(TableModel tableModel) {
70 List<BusinessObject> businessObjects = new ArrayList<BusinessObject>();
71 List<Row> rowList = tableModel.getRowListFull();
72 for (Row row : rowList) {
73 ResultRow resultRow = (ResultRow)row.getObject();
74 if (resultRow.getBusinessObject() != null) {
75 businessObjects.add(resultRow.getBusinessObject());
76 }
77 }
78 return businessObjects;
79 }
80
81 public BusinessObjectEntry getBusinessObjectEntry() {
82 return businessObjectEntry;
83 }
84
85 public List<BusinessObject> getBusinessObjects() {
86 return businessObjects;
87 }
88
89 public boolean attemptCustomExport(OutputStream outputStream, String exportFormat) throws IOException {
90 if (getBusinessObjectEntry() != null && getBusinessObjectEntry().getExporterClass() != null) {
91 final Exporter exporter;
92 try {
93 exporter = getBusinessObjectEntry().getExporterClass().newInstance();
94 } catch (Exception e) {
95 throw new ExportNotSupportedException("Failed to load export class: " + businessObjectEntry.getExporterClass(),e);
96 }
97 List<String> supportedFormats = exporter.getSupportedFormats(businessObjectEntry.getBusinessObjectClass());
98 if (supportedFormats.contains(exportFormat)) {
99 exporter.export(businessObjectEntry.getBusinessObjectClass(), getBusinessObjects(), exportFormat, outputStream);
100 return true;
101 }
102 }
103 return false;
104 }
105
106 public boolean attemptCustomExport(Writer writer, String exportFormat) throws IOException {
107 return attemptCustomExport(new WriterOutputStream(writer), exportFormat);
108 }
109
110 }