/* * Copyright (c) 2010-2013 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.embedded; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.repo.sql.data.RepositoryContext; import com.evolveum.midpoint.repo.sql.data.common.enums.RActivationStatus; import com.evolveum.midpoint.repo.sql.data.common.enums.RTimeIntervalStatus; import com.evolveum.midpoint.repo.sql.query.definition.JaxbType; import com.evolveum.midpoint.repo.sql.util.DtoTranslationException; import com.evolveum.midpoint.repo.sql.util.RUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; import org.apache.commons.lang.Validate; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.xml.datatype.XMLGregorianCalendar; /** * @author lazyman */ @Embeddable @JaxbType(type = ActivationType.class) public class RActivation { private RActivationStatus administrativeStatus; private RActivationStatus effectiveStatus; private XMLGregorianCalendar validFrom; private XMLGregorianCalendar validTo; private RTimeIntervalStatus validityStatus; private XMLGregorianCalendar disableTimestamp; private XMLGregorianCalendar enableTimestamp; private XMLGregorianCalendar archiveTimestamp; private XMLGregorianCalendar validityChangeTimestamp; private String disableReason; @Column(nullable = true) public XMLGregorianCalendar getArchiveTimestamp() { return archiveTimestamp; } @Column(nullable = true) public XMLGregorianCalendar getDisableTimestamp() { return disableTimestamp; } @Column(nullable = true) public XMLGregorianCalendar getEnableTimestamp() { return enableTimestamp; } @Column(nullable = true) public XMLGregorianCalendar getValidityChangeTimestamp() { return validityChangeTimestamp; } @Column(nullable = true) @Enumerated(EnumType.ORDINAL) public RTimeIntervalStatus getValidityStatus() { return validityStatus; } @Column(nullable = true) @Enumerated(EnumType.ORDINAL) public RActivationStatus getAdministrativeStatus() { return administrativeStatus; } @Column(nullable = true) @Enumerated(EnumType.ORDINAL) public RActivationStatus getEffectiveStatus() { return effectiveStatus; } @Column(nullable = true) public XMLGregorianCalendar getValidTo() { return validTo; } @Column(nullable = true) public XMLGregorianCalendar getValidFrom() { return validFrom; } public String getDisableReason() { return disableReason; } public void setDisableReason(String disableReason) { this.disableReason = disableReason; } public void setValidityStatus(RTimeIntervalStatus validityStatus) { this.validityStatus = validityStatus; } public void setAdministrativeStatus(RActivationStatus administrativeStatus) { this.administrativeStatus = administrativeStatus; } public void setEffectiveStatus(RActivationStatus effectiveStatus) { this.effectiveStatus = effectiveStatus; } public void setValidFrom(XMLGregorianCalendar validFrom) { this.validFrom = validFrom; } public void setValidTo(XMLGregorianCalendar validTo) { this.validTo = validTo; } public void setArchiveTimestamp(XMLGregorianCalendar archiveTimestamp) { this.archiveTimestamp = archiveTimestamp; } public void setDisableTimestamp(XMLGregorianCalendar disableTimestamp) { this.disableTimestamp = disableTimestamp; } public void setEnableTimestamp(XMLGregorianCalendar enableTimestamp) { this.enableTimestamp = enableTimestamp; } public void setValidityChangeTimestamp(XMLGregorianCalendar validityChangeTimestamp) { this.validityChangeTimestamp = validityChangeTimestamp; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; RActivation that = (RActivation) o; if (validFrom != null ? !validFrom.equals(that.validFrom) : that.validFrom != null) return false; if (validTo != null ? !validTo.equals(that.validTo) : that.validTo != null) return false; if (administrativeStatus != null ? !administrativeStatus.equals(that.administrativeStatus) : that.administrativeStatus != null) return false; if (effectiveStatus != null ? !effectiveStatus.equals(that.effectiveStatus) : that.effectiveStatus != null) return false; if (validityStatus != null ? !validityStatus.equals(that.validityStatus) : that.validityStatus != null) return false; if (archiveTimestamp != null ? !archiveTimestamp.equals(that.archiveTimestamp) : that.archiveTimestamp != null) return false; if (disableTimestamp != null ? !disableTimestamp.equals(that.disableTimestamp) : that.disableTimestamp != null) return false; if (enableTimestamp != null ? !enableTimestamp.equals(that.enableTimestamp) : that.enableTimestamp != null) return false; if (validityChangeTimestamp != null ? !validityChangeTimestamp.equals(that.validityChangeTimestamp) : that.validityChangeTimestamp != null) return false; if (disableReason != null ? !disableReason.equals(that.disableReason) : that.disableReason != null) return false; return true; } @Override public int hashCode() { int result = validFrom != null ? validFrom.hashCode() : 0; result = 31 * result + (validTo != null ? validTo.hashCode() : 0); result = 31 * result + (administrativeStatus != null ? administrativeStatus.hashCode() : 0); result = 31 * result + (effectiveStatus != null ? effectiveStatus.hashCode() : 0); result = 31 * result + (validityStatus != null ? validityStatus.hashCode() : 0); result = 31 * result + (archiveTimestamp != null ? archiveTimestamp.hashCode() : 0); result = 31 * result + (disableTimestamp != null ? disableTimestamp.hashCode() : 0); result = 31 * result + (enableTimestamp != null ? enableTimestamp.hashCode() : 0); result = 31 * result + (validityChangeTimestamp != null ? validityChangeTimestamp.hashCode() : 0); result = 31 * result + (disableReason != null ? disableReason.hashCode() : 0); return result; } @Override public String toString() { return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE); } public static void copyFromJAXB(ActivationType jaxb, RActivation repo, RepositoryContext repositoryContext) throws DtoTranslationException { Validate.notNull(jaxb, "JAXB object must not be null."); Validate.notNull(repo, "Repo object must not be null."); repo.setAdministrativeStatus(RUtil.getRepoEnumValue(jaxb.getAdministrativeStatus(), RActivationStatus.class)); repo.setEffectiveStatus(RUtil.getRepoEnumValue(jaxb.getEffectiveStatus(), RActivationStatus.class)); repo.setValidityStatus(RUtil.getRepoEnumValue(jaxb.getValidityStatus(), RTimeIntervalStatus.class)); repo.setValidFrom(jaxb.getValidFrom()); repo.setValidTo(jaxb.getValidTo()); repo.setDisableReason(jaxb.getDisableReason()); repo.setArchiveTimestamp(jaxb.getArchiveTimestamp()); repo.setDisableTimestamp(jaxb.getDisableTimestamp()); repo.setEnableTimestamp(jaxb.getEnableTimestamp()); repo.setValidityChangeTimestamp(jaxb.getValidityChangeTimestamp()); } public static void copyToJAXB(RActivation repo, ActivationType jaxb, PrismContext prismContext) { Validate.notNull(jaxb, "JAXB object must not be null."); Validate.notNull(repo, "Repo object must not be null."); if (repo.getAdministrativeStatus() != null) { jaxb.setAdministrativeStatus(repo.getAdministrativeStatus().getSchemaValue()); } if (repo.getEffectiveStatus() != null) { jaxb.setEffectiveStatus(repo.getEffectiveStatus().getSchemaValue()); } if (repo.getValidityStatus() != null) { jaxb.setValidityStatus(repo.getValidityStatus().getSchemaValue()); } jaxb.setValidFrom(repo.getValidFrom()); jaxb.setValidTo(repo.getValidTo()); jaxb.setDisableReason(repo.getDisableReason()); jaxb.setArchiveTimestamp(repo.getArchiveTimestamp()); jaxb.setDisableTimestamp(repo.getDisableTimestamp()); jaxb.setEnableTimestamp(repo.getEnableTimestamp()); jaxb.setValidityChangeTimestamp(repo.getValidityChangeTimestamp()); } public ActivationType toJAXB(PrismContext prismContext) throws DtoTranslationException { ActivationType activation = new ActivationType(); RActivation.copyToJAXB(this, activation, prismContext); return activation; } }