001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kew.docsearch;
017
018import org.kuali.rice.kew.routeheader.DocumentRouteHeaderValue;
019import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
020
021import javax.persistence.CascadeType;
022import javax.persistence.Column;
023import javax.persistence.Entity;
024import javax.persistence.FetchType;
025import javax.persistence.GeneratedValue;
026import javax.persistence.Id;
027import javax.persistence.Inheritance;
028import javax.persistence.InheritanceType;
029import javax.persistence.JoinColumn;
030import javax.persistence.ManyToOne;
031import javax.persistence.NamedQueries;
032import javax.persistence.NamedQuery;
033import javax.persistence.Transient;
034
035@Entity
036@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
037@NamedQueries({
038        @NamedQuery(name="SearchableAttributeValue.HasSearchableAttributeValue",
039                query = "SELECT sa from SearchableAttributeBase sa WHERE "
040                        + "(sa.searchableAttributeKey = :searchableAttributeKey AND sa.documentId = :documentId)"),
041        @NamedQuery(name="SearchableAttributeValue.FindSearchableAttributesByDocumentId",
042        query = "SELECT sa FROM SearchableAttributeBase sa WHERE sa.documentId = :documentId")
043})
044public abstract class SearchableAttributeBase implements SearchableAttributeValue {
045
046    @Id
047    @GeneratedValue(generator = "KREW_SRCH_ATTR_S")
048    @PortableSequenceGenerator(name = "KREW_SRCH_ATTR_S")
049    @Column(name="DOC_HDR_EXT_ID")
050    private String searchableAttributeValueId;
051
052    @Column(name="KEY_CD")
053    private String searchableAttributeKey;
054
055    @Column(name="DOC_HDR_ID")
056    private String documentId;
057    @ManyToOne(fetch= FetchType.EAGER, cascade={CascadeType.PERSIST})
058    @JoinColumn(name="DOC_HDR_ID", insertable=false, updatable=false)
059    private DocumentRouteHeaderValue routeHeader;
060
061    @Transient
062    protected String ojbConcreteClass; // attribute needed for OJB polymorphism - do not alter!
063
064    @Override
065    public String getDocumentId() {
066        return documentId;
067    }
068
069    @Override
070    public void setDocumentId(String documentId) {
071        this.documentId = documentId;
072    }
073
074    @Override
075    public String getSearchableAttributeValueId() {
076        return searchableAttributeValueId;
077    }
078
079    @Override
080    public void setSearchableAttributeValueId(String searchableAttributeValueId) {
081        this.searchableAttributeValueId = searchableAttributeValueId;
082    }
083
084    @Override
085    public String getSearchableAttributeKey() {
086        return searchableAttributeKey;
087    }
088
089    @Override
090    public void setSearchableAttributeKey(String searchableAttributeKey) {
091        this.searchableAttributeKey = searchableAttributeKey;
092    }
093
094    @Override
095    public String getOjbConcreteClass() {
096        return ojbConcreteClass;
097    }
098
099    @Override
100    public void setOjbConcreteClass(String ojbConcreteClass) {
101        this.ojbConcreteClass = ojbConcreteClass;
102    }
103
104    @Override
105    public DocumentRouteHeaderValue getRouteHeader() {
106        return routeHeader;
107    }
108
109    @Override
110    public void setRouteHeader(DocumentRouteHeaderValue routeHeader) {
111        this.routeHeader = routeHeader;
112    }
113
114}