-
Notifications
You must be signed in to change notification settings - Fork 188
/
MObjectType.java
118 lines (105 loc) · 5.31 KB
/
MObjectType.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
* Copyright (C) 2010-2021 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.repo.sqale.qmodel.object;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import javax.xml.namespace.QName;
import org.jetbrains.annotations.NotNull;
import com.evolveum.midpoint.repo.sqale.qmodel.QObjectTemplate;
import com.evolveum.midpoint.repo.sqale.qmodel.accesscert.QAccessCertificationDefinition;
import com.evolveum.midpoint.repo.sqale.qmodel.cases.QCase;
import com.evolveum.midpoint.repo.sqale.qmodel.connector.QConnector;
import com.evolveum.midpoint.repo.sqale.qmodel.connector.QConnectorHost;
import com.evolveum.midpoint.repo.sqale.qmodel.focus.QFocus;
import com.evolveum.midpoint.repo.sqale.qmodel.focus.QGenericObject;
import com.evolveum.midpoint.repo.sqale.qmodel.focus.QUser;
import com.evolveum.midpoint.repo.sqale.qmodel.lookuptable.QLookupTable;
import com.evolveum.midpoint.repo.sqale.qmodel.node.QNode;
import com.evolveum.midpoint.repo.sqale.qmodel.object.QAssignmentHolderMapping.QAssignmentHolder;
import com.evolveum.midpoint.repo.sqale.qmodel.other.*;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReport;
import com.evolveum.midpoint.repo.sqale.qmodel.report.QReportData;
import com.evolveum.midpoint.repo.sqale.qmodel.resource.QResource;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QAbstractRole;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QArchetype;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QRole;
import com.evolveum.midpoint.repo.sqale.qmodel.role.QService;
import com.evolveum.midpoint.repo.sqale.qmodel.shadow.QShadow;
import com.evolveum.midpoint.repo.sqale.qmodel.system.QSecurityPolicy;
import com.evolveum.midpoint.repo.sqale.qmodel.system.QSystemConfiguration;
import com.evolveum.midpoint.repo.sqale.qmodel.system.QValuePolicy;
import com.evolveum.midpoint.repo.sqale.qmodel.task.QTask;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
public enum MObjectType {
// mapping of codes and schema types must be unique
ABSTRACT_ROLE(QAbstractRole.CLASS, AbstractRoleType.class),
ACCESS_CERTIFICATION_CAMPAIGN(null, AccessCertificationCampaignType.class), // TODO
ACCESS_CERTIFICATION_DEFINITION(
QAccessCertificationDefinition.class, AccessCertificationDefinitionType.class),
ARCHETYPE(QArchetype.class, ArchetypeType.class),
ASSIGNMENT_HOLDER(QAssignmentHolder.class, AssignmentHolderType.class),
CASE(QCase.class, CaseType.class),
CONNECTOR(QConnector.class, ConnectorType.class),
CONNECTOR_HOST(QConnectorHost.class, ConnectorHostType.class),
DASHBOARD(QDashboard.class, DashboardType.class),
FOCUS(QFocus.CLASS, FocusType.class),
FORM(QForm.class, FormType.class),
FUNCTION_LIBRARY(QFunctionLibrary.class, FunctionLibraryType.class),
GENERIC_OBJECT(QGenericObject.class, GenericObjectType.class),
LOOKUP_TABLE(QLookupTable.class, LookupTableType.class),
NODE(QNode.class, NodeType.class),
OBJECT(QObject.CLASS, ObjectType.class),
OBJECT_COLLECTION(QObjectCollection.class, ObjectCollectionType.class),
OBJECT_TEMPLATE(QObjectTemplate.class, ObjectTemplateType.class),
ORG(null, OrgType.class), // TODO
REPORT(QReport.class, ReportType.class),
REPORT_DATA(QReportData.class, ReportDataType.class),
RESOURCE(QResource.class, ResourceType.class),
ROLE(QRole.class, RoleType.class),
SECURITY_POLICY(QSecurityPolicy.class, SecurityPolicyType.class),
SEQUENCE(QSequence.class, SequenceType.class),
SERVICE(QService.class, ServiceType.class),
SHADOW(QShadow.class, ShadowType.class),
SYSTEM_CONFIGURATION(QSystemConfiguration.class, SystemConfigurationType.class),
TASK(QTask.class, TaskType.class),
USER(QUser.class, UserType.class),
VALUE_POLICY(QValuePolicy.class, ValuePolicyType.class);
private final Class<? extends QObject<?>> queryType;
private final Class<? extends ObjectType> schemaType;
MObjectType(Class<? extends QObject<?>> queryType, Class<? extends ObjectType> schemaType) {
this.queryType = queryType;
this.schemaType = schemaType;
}
// schema type QName -> enum conversion
public static final Map<Class<? extends ObjectType>, MObjectType> SCHEMA_TYPE_TO_ENUM =
new HashMap<>();
static {
for (MObjectType value : values()) {
if (SCHEMA_TYPE_TO_ENUM.put(value.schemaType, value) != null) {
throw new IllegalArgumentException("MObjectTypeMapping value " + value
+ " uses duplicate schema type: " + value.schemaType);
}
}
}
@NotNull
public static MObjectType fromTypeQName(QName typeQName) {
return fromSchemaType(ObjectTypes.getObjectTypeClass(typeQName));
}
@NotNull
public static MObjectType fromSchemaType(Class<? extends ObjectType> objectTypeClass) {
return Objects.requireNonNull(SCHEMA_TYPE_TO_ENUM.get(objectTypeClass),
"No MObjectTypeMapping found for object type " + objectTypeClass);
}
public Class<? extends QObject<?>> getQueryType() {
return queryType;
}
public Class<? extends ObjectType> getSchemaType() {
return schemaType;
}
}