001/** 002 * Copyright 2005-2017 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}