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.data.common.enums.RExportType; import com.evolveum.midpoint.repo.sql.data.common.enums.ROrientationType; 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.ReportType; import org.hibernate.annotations.ForeignKey; import org.hibernate.annotations.Index; import org.hibernate.annotations.Persister; import javax.persistence.*; import java.util.Collection; @Entity @Table(uniqueConstraints = @UniqueConstraint(name = "uc_report_name", columnNames = {"name_norm"})) @ForeignKey(name = "fk_report") @Persister(impl = MidPointJoinedPersister.class) public class RReport extends RObject<ReportType> { private RPolyString name; private ROrientationType orientation; private RExportType export; private Boolean parent; private Boolean useHibernateSession; @Embedded public RPolyString getName() { return name; } public void setName(RPolyString name) { this.name = name; } @Enumerated(EnumType.ORDINAL) @Column(nullable = true) public ROrientationType getOrientation() { return orientation; } public void setOrientation(ROrientationType orientation) { this.orientation = orientation; } @Enumerated(EnumType.ORDINAL) @Column(nullable = true) public RExportType getExport() { return export; } public void setExport(RExportType export) { this.export = export; } @Index(name = "iReportParent") public Boolean getParent() { return parent; } public Boolean getUseHibernateSession() { return useHibernateSession; } public void setParent(Boolean parent) { this.parent = parent; } public void setUseHibernateSession(Boolean useHibernateSession) { this.useHibernateSession = useHibernateSession; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; RReport rReport = (RReport) o; if (name != null ? !name.equals(rReport.name) : rReport.name != null) return false; if (orientation != null ? !orientation.equals(rReport.orientation) : rReport.orientation != null) return false; if (export != null ? !export.equals(rReport.export) : rReport.export != null) return false; if (parent != null ? !parent.equals(rReport.parent) : rReport.parent != null) return false; if (useHibernateSession != null ? !useHibernateSession.equals(rReport.useHibernateSession) : rReport.useHibernateSession != null) return false; return true; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (orientation != null ? orientation.hashCode() : 0); result = 31 * result + (export != null ? export.hashCode() : 0); result = 31 * result + (parent != null ? parent.hashCode() : 0); result = 31 * result + (useHibernateSession != null ? useHibernateSession.hashCode() : 0); return result; } public static void copyFromJAXB(ReportType jaxb, RReport repo, RepositoryContext repositoryContext, IdGeneratorResult generatorResult) throws DtoTranslationException { RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult); repo.setName(RPolyString.copyFromJAXB(jaxb.getName())); repo.setOrientation(RUtil.getRepoEnumValue(jaxb.getOrientation(), ROrientationType.class)); repo.setExport(RUtil.getRepoEnumValue(jaxb.getExport(), RExportType.class)); repo.setParent(jaxb.isParent()); repo.setUseHibernateSession(jaxb.isUseHibernateSession()); } @Override public ReportType toJAXB(PrismContext prismContext, Collection<SelectorOptions<GetOperationOptions>> options) throws DtoTranslationException { ReportType object = new ReportType(); RUtil.revive(object, prismContext); RReport.copyToJAXB(this, object, prismContext, options); return object; } }