Skip to content

Commit

Permalink
Preliminary implementation of CaseType object.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Apr 5, 2017
1 parent 514def4 commit 1d66cc6
Show file tree
Hide file tree
Showing 20 changed files with 629 additions and 15 deletions.
Expand Up @@ -77,7 +77,9 @@ public enum ObjectTypeGuiDescriptor {

SEQUENCE(ObjectTypes.SEQUENCE, "ObjectTypeGuiDescriptor.sequence", "", ""),

SERVICE(ObjectTypes.SERVICE, "ObjectTypeGuiDescriptor.service", GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON_COLORED, GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON);
SERVICE(ObjectTypes.SERVICE, "ObjectTypeGuiDescriptor.service", GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON_COLORED, GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON),

CASE(ObjectTypes.CASE, "ObjectTypeGuiDescriptor.case", "", ""); // TODO icons

public static final String ERROR_ICON = "silk-error";
public static final String ERROR_LOCALIZATION_KEY = "ObjectTypeGuiDescriptor.unknown";
Expand Down
Expand Up @@ -618,6 +618,7 @@ ObjectTypeGuiDescriptor.systemConfiguration=System configuration
ObjectTypeGuiDescriptor.task=Task
ObjectTypeGuiDescriptor.user=User
ObjectTypeGuiDescriptor.service=Service
ObjectTypeGuiDescriptor.case=Case
ObjectTypeGuiDescriptor.valuePolicy=Value policy
operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test
operation.com.evolveum.midpoint.common.operation.import.object=Import object
Expand Down
1 change: 1 addition & 0 deletions infra/schema-pure-jaxb/src/compile/resources/catalog.xml
Expand Up @@ -34,6 +34,7 @@ Used when building via xjc.
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-notifications-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-workflows-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-policy-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-case-management-3.xsd" />

<!-- WSDLs -->
<public publicId="http://midpoint.evolveum.com/xml/ns/public/model/model-3" uri="../../../target/midpoint-schema/xml/ns/public/model/model-3.wsdl" />
Expand Down
Expand Up @@ -97,6 +97,9 @@ public enum ObjectTypes {
SERVICE(ServiceType.COMPLEX_TYPE, SchemaConstantsGenerated.C_SERVICE, ServiceType.class, ObjectManager.MODEL,
"services"),

CASE(CaseType.COMPLEX_TYPE, SchemaConstantsGenerated.C_CASE, CaseType.class, ObjectManager.MODEL,
"cases"),

// this should be at end, because otherwise it presents itself as entry for all subtypes of ObjectType
OBJECT(SchemaConstants.C_OBJECT_TYPE, SchemaConstants.C_OBJECT, ObjectType.class, ObjectManager.MODEL, "objects");

Expand All @@ -114,8 +117,8 @@ public ObjectTypes superType() {
return getObjectTypeIfKnown(classDefinition.getSuperclass());
}

public static enum ObjectManager {
PROVISIONING, TASK_MANAGER, MODEL, WORKFLOW, REPOSITORY;
public enum ObjectManager {
PROVISIONING, TASK_MANAGER, MODEL, WORKFLOW, REPOSITORY
}

private QName type;
Expand Down
Expand Up @@ -51,6 +51,7 @@ Notes:
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3" uri="../xml/ns/public/common/common-notifications-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3" uri="../xml/ns/public/common/common-workflows-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3" uri="../xml/ns/public/common/common-policy-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3" uri="../xml/ns/public/common/common-case-management-3.xsd" />

<!-- WSDLs -->
<public publicId="http://midpoint.evolveum.com/xml/ns/public/model/model-3" uri="../xml/ns/public/model/model-3.wsdl" />
Expand Down
Expand Up @@ -102,5 +102,6 @@
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3"/>
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3"/>
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3"/>
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3"/>

</xsd:schema>

Large diffs are not rendered by default.

Expand Up @@ -42,6 +42,7 @@
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3" />
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3" />
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3" />
<xsd:include schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3" />

<!-- ################################## -->
<!-- ## Common Schema Layer ## -->
Expand Down
Expand Up @@ -34,6 +34,7 @@ Used when building via xjc.
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-notifications-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-workflows-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-policy-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3" uri="../../../target/midpoint-schema/xml/ns/public/common/common-case-management-3.xsd" />

<!-- WSDLs -->
<public publicId="http://midpoint.evolveum.com/xml/ns/public/model/model-3" uri="../../../target/midpoint-schema/xml/ns/public/model/model-3.wsdl" />
Expand Down
Expand Up @@ -34,6 +34,7 @@ Used at run time by SOAP clients.
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-notifications-3" uri="../xml/ns/public/common/common-notifications-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-workflows-3" uri="../xml/ns/public/common/common-workflows-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-policy-3" uri="../xml/ns/public/common/common-policy-3.xsd" />
<system systemId="http://midpoint.evolveum.com/xml/ns/public/common/common-case-management-3" uri="../xml/ns/public/common/common-case-management-3.xsd" />

<!-- WSDLs -->
<public publicId="http://midpoint.evolveum.com/xml/ns/public/model/model-3" uri="../xml/ns/public/model/model-3.wsdl" />
Expand Down
1 change: 1 addition & 0 deletions repo/repo-sql-impl-test/sql-procedures/mysql.sql
Expand Up @@ -68,6 +68,7 @@ DETERMINISTIC
DELETE FROM m_focus;
DELETE FROM m_security_policy;
DELETE FROM m_form;
DELETE FROM m_case;
DELETE FROM m_object;

UPDATE hibernate_sequence SET next_val = 1;
Expand Down
1 change: 1 addition & 0 deletions repo/repo-sql-impl-test/sql-procedures/postgresql.sql
Expand Up @@ -61,6 +61,7 @@ BEGIN
TRUNCATE TABLE m_focus RESTART IDENTITY CASCADE;
TRUNCATE TABLE m_security_policy RESTART IDENTITY CASCADE;
TRUNCATE TABLE m_form RESTART IDENTITY CASCADE;
TRUNCATE TABLE m_case RESTART IDENTITY CASCADE;
TRUNCATE TABLE m_object RESTART IDENTITY CASCADE;

ALTER SEQUENCE hibernate_sequence RESTART WITH 1;
Expand Down
1 change: 1 addition & 0 deletions repo/repo-sql-impl-test/sql-procedures/sqlserver.sql
Expand Up @@ -72,6 +72,7 @@ AS
DELETE FROM m_focus;
DELETE FROM m_security_policy;
DELETE FROM m_form;
DELETE FROM m_case;
DELETE FROM m_object;

UPDATE hibernate_sequence SET next_val = 1;
Expand Down
Expand Up @@ -335,8 +335,7 @@ public void test002modifyOrgStructAddRef() throws Exception {

for (String ancestorOid : ancestors) {
orgClosure = getOrgClosure(ancestorOid, MODIFY_ORG_ADD_REF_OID, session);
LOGGER.info("=> A: {}, D: {}", new Object[]{orgClosure.get(0).getAncestor().toJAXB(prismContext, null),
orgClosure.get(0).getDescendant().toJAXB(prismContext, null)});
LOGGER.info("=> A: {}, D: {}", orgClosure.get(0).getAncestor(), orgClosure.get(0).getDescendant());

AssertJUnit.assertEquals(1, orgClosure.size());
AssertJUnit.assertEquals(ancestorOid, orgClosure.get(0).getAncestor().getOid());
Expand Down Expand Up @@ -484,8 +483,7 @@ public void test004modifyOrgStructAddUser() throws Exception {
LOGGER.info("==============CLOSURE TABLE==========");

for (ROrgClosure o : orgClosure) {
LOGGER.info("=> A: {}, D: {}", new Object[]{o.getAncestor().toJAXB(prismContext, null),
o.getDescendant().toJAXB(prismContext, null)});
LOGGER.info("=> A: {}, D: {}", o.getAncestor(), o.getDescendant());
}
} finally {
close(session);
Expand Down Expand Up @@ -538,8 +536,7 @@ public void test007searchOrgStructOrgDepth() throws Exception {

LOGGER.info("==============CLOSURE TABLE==========");
for (ROrgClosure o : orgClosure) {
LOGGER.info("=> A: {}, D: {}", new Object[]{o.getAncestor().toJAXB(prismContext, null),
o.getDescendant().toJAXB(prismContext, null)});
LOGGER.info("=> A: {}, D: {}", o.getAncestor(), o.getDescendant());
}
AssertJUnit.assertEquals(1, orgClosure.size());
session.getTransaction().commit();
Expand Down
Expand Up @@ -1971,7 +1971,7 @@ public void test530queryUserSubstringName() throws Exception {
.build();
objectQuery.setUseNewQueryInterpreter(true);
count = repositoryService.countObjects(ObjectType.class, objectQuery, result);
assertEquals(20, count);
assertEquals(21, count);

} finally {
close(session);
Expand Down
4 changes: 4 additions & 0 deletions repo/repo-sql-impl-test/src/test/resources/basic/objects.xml
Expand Up @@ -1662,4 +1662,8 @@
</automaticallyApproved>
</service>

<case version="1">
<name>case1</name>
</case>

</objects>
@@ -0,0 +1,89 @@
/*
* Copyright (c) 2010-2017 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.repo.sql.data.common;

import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.repo.sql.data.RepositoryContext;
import com.evolveum.midpoint.repo.sql.data.common.embedded.RPolyString;
import com.evolveum.midpoint.repo.sql.util.DtoTranslationException;
import com.evolveum.midpoint.repo.sql.util.IdGeneratorResult;
import com.evolveum.midpoint.repo.sql.util.MidPointJoinedPersister;
import com.evolveum.midpoint.repo.sql.util.RUtil;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FormType;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Persister;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import java.util.Collection;
import java.util.Objects;

/**
* TODO fill-in relevant data
*
* @author mederly
*/
@Entity
@ForeignKey(name = "fk_case")
@Table(uniqueConstraints = @UniqueConstraint(name = "uc_case_name", columnNames = {"name_norm"}))
@Persister(impl = MidPointJoinedPersister.class)
public class RCase extends RObject<CaseType> {

private RPolyString name;

@Embedded
public RPolyString getName() {
return name;
}

public void setName(RPolyString name) {
this.name = name;
}

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof RCase))
return false;
if (!super.equals(o))
return false;
RCase rForm = (RCase) o;
return Objects.equals(name, rForm.name);
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), name);
}

public static void copyFromJAXB(CaseType jaxb, RCase repo, RepositoryContext repositoryContext,
IdGeneratorResult generatorResult) throws DtoTranslationException {
RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult);
}

@Override
public CaseType toJAXB(PrismContext prismContext, Collection<SelectorOptions<GetOperationOptions>> options)
throws DtoTranslationException {
throw new UnsupportedOperationException("Shouldn't be needed anymore.");
}
}
Expand Up @@ -32,7 +32,8 @@ public enum RObjectType {
ACCESS_CERTIFICATION_CAMPAIGN(RAccessCertificationCampaign.class, AccessCertificationCampaignType.class),
SEQUENCE(RSequence.class, SequenceType.class),
SERVICE(RService.class, ServiceType.class),
FORM(RForm.class, FormType.class);
FORM(RForm.class, FormType.class),
CASE(RCase.class, CaseType.class);

private Class<? extends RObject> clazz;
private Class<? extends ObjectType> jaxbClass;
Expand Down
Expand Up @@ -184,7 +184,6 @@ public <T extends ObjectType> PrismObject<T> getObjectInternal(Session session,
RObject obj = (RObject) criteria.uniqueResult();

if (obj != null) {
obj.toJAXB(prismContext, null).asPrismObject();
fullObject = new GetObjectResult(obj.getFullObject(), obj.getStringsCount(), obj.getLongsCount(),
obj.getDatesCount(), obj.getReferencesCount(), obj.getPolysCount(), obj.getBooleansCount());
}
Expand Down
Expand Up @@ -66,11 +66,13 @@ private ClassMapper() {
types.put(ObjectTypes.SEQUENCE, RObjectType.SEQUENCE);
types.put(ObjectTypes.SERVICE, RObjectType.SERVICE);
types.put(ObjectTypes.FORM, RObjectType.FORM);
types.put(ObjectTypes.CASE, RObjectType.CASE);

for (ObjectTypes type : ObjectTypes.values()) {
if (!types.containsKey(type)) {
throw new IllegalStateException("Not all object types are mapped by sql repo impl. Found '"
+ type + "' unmapped.");
String message = "Not all object types are mapped by sql repo impl. Found '" + type + "' unmapped.";
System.err.println(message);
throw new IllegalStateException(message);
}
}
}
Expand All @@ -79,7 +81,7 @@ public static Class<? extends RObject> getHQLTypeClass(Class<? extends ObjectTyp
Validate.notNull(clazz, "Class must not be null.");

ObjectTypes type = ObjectTypes.getObjectType(clazz);
Class<? extends RObject> hqlType = (Class<? extends RObject>) types.get(type).getClazz();
Class<? extends RObject> hqlType = types.get(type).getClazz();
if (hqlType == null) {
throw new IllegalStateException("Couldn't find DB type for '" + clazz + "'.");
}
Expand Down

0 comments on commit 1d66cc6

Please sign in to comment.