1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.rice.kim.impl.jaxb;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.io.OutputStream;
24 import java.util.Collections;
25 import java.util.List;
26
27 import org.kuali.rice.core.framework.impex.xml.XmlLoader;
28 import org.kuali.rice.kim.api.permission.PermissionContract;
29 import org.kuali.rice.kim.api.role.RoleContract;
30 import org.kuali.rice.krad.bo.Exporter;
31 import org.kuali.rice.krad.exception.ExportNotSupportedException;
32 import org.kuali.rice.krad.util.KRADConstants;
33
34
35
36
37
38
39
40
41
42
43 public class KimImporterAndExporter implements XmlLoader, Exporter {
44
45 private final List<String> supportedFormats = Collections.singletonList(KRADConstants.XML_FORMAT);
46
47
48
49
50 @Override
51 public void loadXml(InputStream inputStream, String principalId) {
52 KimXmlUtil.parseKimXml(inputStream);
53 }
54
55
56
57
58 @Override
59 public void export(Class<?> dataObjectClass, List<? extends Object> dataObjects, String exportFormat,
60 OutputStream outputStream) throws IOException, ExportNotSupportedException {
61 if (!supportedFormats.contains(exportFormat)) {
62 throw new ExportNotSupportedException("The KimImporterAndExporter does not support the \"" + exportFormat + "\" export format");
63 }
64
65 if (PermissionContract.class.isAssignableFrom(dataObjectClass)) {
66 KimXmlUtil.exportKimXml(outputStream, dataObjects, null);
67 } else if (RoleContract.class.isAssignableFrom(dataObjectClass)) {
68 KimXmlUtil.exportKimXml(outputStream, null, dataObjects);
69 } else {
70 throw new ExportNotSupportedException("The KimImporterAndExporter cannot export non-permission and non-role objects");
71 }
72
73 }
74
75
76
77
78 @Override
79 public List<String> getSupportedFormats(Class<?> dataObjectClass) {
80 return supportedFormats;
81 }
82 }