1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.export;
17
18 import java.io.IOException;
19 import java.io.OutputStream;
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.kuali.rice.core.api.CoreApiServiceLocator;
24 import org.kuali.rice.core.api.impex.ExportDataSet;
25 import org.kuali.rice.kew.doctype.bo.DocumentType;
26 import org.kuali.rice.kew.help.HelpEntry;
27 import org.kuali.rice.kew.rule.RuleBaseValues;
28 import org.kuali.rice.kew.rule.RuleDelegation;
29 import org.kuali.rice.kew.rule.bo.RuleAttribute;
30 import org.kuali.rice.kew.rule.bo.RuleTemplate;
31 import org.kuali.rice.kim.api.group.Group;
32 import org.kuali.rice.kim.impl.group.GroupBo;
33 import org.kuali.rice.krad.bo.Exporter;
34 import org.kuali.rice.krad.exception.ExportNotSupportedException;
35 import org.kuali.rice.krad.util.KRADConstants;
36
37
38
39
40
41
42
43
44
45
46 public class DataExporter implements Exporter {
47
48 private List<String> supportedFormats = new ArrayList<String>();
49
50 public DataExporter() {
51 supportedFormats.add(KRADConstants.XML_FORMAT);
52 }
53
54
55
56
57 @Override
58 public List<String> getSupportedFormats(Class<?> dataObjectClass) {
59 return supportedFormats;
60 }
61
62
63
64
65 protected ExportDataSet buildExportDataSet(Class<?> dataObjectClass, List<? extends Object> dataObjects) {
66 KewExportDataSet dataSet = new KewExportDataSet();
67 for (Object dataObject : dataObjects) {
68 if (dataObjectClass.equals(RuleAttribute.class)) {
69 dataSet.getRuleAttributes().add((RuleAttribute)dataObject);
70 } else if (dataObjectClass.equals(RuleTemplate.class)) {
71 dataSet.getRuleTemplates().add((RuleTemplate)dataObject);
72 } else if (dataObjectClass.equals(DocumentType.class)) {
73 dataSet.getDocumentTypes().add((DocumentType)dataObject);
74 } else if (dataObjectClass.equals(HelpEntry.class)) {
75 dataSet.getHelp().add((HelpEntry)dataObject);
76 } else if (dataObjectClass.equals(RuleBaseValues.class)) {
77 dataSet.getRules().add((RuleBaseValues)dataObject);
78 } else if (dataObjectClass.equals(RuleDelegation.class)) {
79 dataSet.getRuleDelegations().add((RuleDelegation)dataObject);
80 } else if (dataObjectClass.equals(GroupBo.class)) {
81 dataSet.getGroups().add((Group)dataObject);
82 }
83 }
84
85 ExportDataSet exportDataSet = new ExportDataSet();
86 dataSet.populateExportDataSet(exportDataSet);
87 return exportDataSet;
88 }
89
90
91
92
93
94
95 @Override
96 public void export(Class<?> dataObjectClass, List<? extends Object> dataObjects, String exportFormat, OutputStream outputStream) throws IOException,
97 ExportNotSupportedException {
98 if (!KRADConstants.XML_FORMAT.equals(exportFormat)) {
99 throw new ExportNotSupportedException("The given export format of "
100 + exportFormat
101 + " is not supported by the KEW XML Exporter!");
102 }
103 ExportDataSet dataSet = buildExportDataSet(dataObjectClass, dataObjects);
104 outputStream.write(CoreApiServiceLocator.getXmlExporterService()
105 .export(dataSet));
106 outputStream.flush();
107
108 }
109 }