/*
* Copyright (c) 2010-2014 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.web.component.wizard.resource.dto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceAttributeDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectAssociationType;
import org.jetbrains.annotations.NotNull;
import javax.xml.namespace.QName;
import java.io.Serializable;
import java.util.List;
/**
* @author shood
* */
public class SchemaHandlingDto implements Serializable {
public static final String F_OBJECT_TYPE_DTO_LIST = "objectTypeDtoList";
public static final String F_SELECTED_OBJECT_TYPE_DTO = "selectedObjectTypeDto";
public static final String F_SELECTED_ATTRIBUTE = "selectedAttribute";
public static final String F_SELECTED_ASSOCIATION = "selectedAssociation";
public static final String F_OBJECT_CLASS_NAME = "objectClassName";
@NotNull private final List<ResourceObjectTypeDefinitionTypeDto> objectTypeDtoList;
@NotNull private final List<QName> objectClassList;
private ResourceObjectTypeDefinitionTypeDto selectedObjectTypeDto;
private String objectClassName;
private ResourceAttributeDefinitionType selectedAttribute;
private ResourceObjectAssociationType selectedAssociation;
public SchemaHandlingDto(@NotNull List<ResourceObjectTypeDefinitionTypeDto> list, @NotNull List<QName> objectClasses) {
this.objectTypeDtoList = list;
this.objectClassList = objectClasses;
}
@NotNull
public List<ResourceObjectTypeDefinitionTypeDto> getObjectTypeDtoList() {
return objectTypeDtoList;
}
public ResourceObjectTypeDefinitionTypeDto getSelectedObjectTypeDto() {
return selectedObjectTypeDto;
}
public void setSelectedObjectTypeDto(ResourceObjectTypeDefinitionTypeDto selectedObjectTypeDto) {
this.selectedObjectTypeDto = selectedObjectTypeDto;
setObjectClassNameFrom(selectedObjectTypeDto);
}
private void setObjectClassNameFrom(ResourceObjectTypeDefinitionTypeDto objectType) {
if (objectType == null) {
objectClassName = null;
} else {
QName oc = objectType.getObjectType().getObjectClass();
objectClassName = oc != null ? oc.getLocalPart() : null;
}
}
@NotNull
public List<QName> getObjectClassList() {
return objectClassList;
}
@SuppressWarnings("unused")
public String getObjectClassName() {
return objectClassName;
}
@SuppressWarnings("unused")
public void setObjectClassName(String objectClassName) {
this.objectClassName = objectClassName;
if (selectedObjectTypeDto != null) {
selectedObjectTypeDto.getObjectType().setObjectClass(findObjectClassQName(objectClassName)); // update object class in selected objectType container
}
}
private QName findObjectClassQName(String localName) {
if (localName == null) {
return null;
}
for (QName q: objectClassList) {
if (localName.equals(q.getLocalPart())) {
return q;
}
}
return null;
//throw new IllegalStateException("No " + localName + " in object class list: " + objectClassList);
}
public ResourceAttributeDefinitionType getSelectedAttribute() {
return selectedAttribute;
}
public void setSelectedAttribute(ResourceAttributeDefinitionType selectedAttribute) {
this.selectedAttribute = selectedAttribute;
}
public ResourceObjectAssociationType getSelectedAssociation() {
return selectedAssociation;
}
public void setSelectedAssociation(ResourceObjectAssociationType selectedAssociation) {
this.selectedAssociation = selectedAssociation;
}
}