001package org.biopax.paxtools.impl.level3; 002 003import org.biopax.paxtools.model.BioPAXElement; 004import org.biopax.paxtools.model.level3.ChemicalStructure; 005import org.biopax.paxtools.model.level3.StructureFormatType; 006import org.hibernate.annotations.Cache; 007import org.hibernate.annotations.CacheConcurrencyStrategy; 008import org.hibernate.annotations.DynamicInsert; 009import org.hibernate.annotations.DynamicUpdate; 010import org.hibernate.annotations.Proxy; 011import org.hibernate.search.annotations.Analyze; 012import org.hibernate.search.annotations.Field; 013import org.hibernate.search.annotations.Indexed; 014 015import javax.persistence.Column; 016import javax.persistence.Entity; 017import javax.persistence.Enumerated; 018import javax.persistence.Transient; 019 020@Entity 021@Proxy(proxyClass= ChemicalStructure.class) 022@Indexed 023@DynamicUpdate @DynamicInsert 024@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 025public class ChemicalStructureImpl extends L3ElementImpl implements ChemicalStructure 026{ 027 private StructureFormatType structureFormat; 028 029 private String structureData; 030 031 public ChemicalStructureImpl() { 032 } 033 034 @Transient 035 public Class<? extends ChemicalStructure> getModelInterface() 036 { 037 return ChemicalStructure.class; 038 } 039 040 protected boolean semanticallyEquivalent(BioPAXElement element) 041 { 042 if(!(element instanceof ChemicalStructure)) 043 return false; 044 045 final ChemicalStructure that = (ChemicalStructure) element; 046 047 return 048 (structureData != null ? 049 structureData.equals(that.getStructureData()) : 050 that.getStructureData() == null) 051 && 052 053 (structureFormat != null ? 054 structureFormat.equals(that.getStructureFormat()) : 055 that.getStructureFormat() == null); 056 } 057 058 public int equivalenceCode() 059 { 060 int result = 061 29 + (structureFormat != null ? structureFormat.hashCode() : 0); 062 result = 29 * result + 063 (structureData != null ? structureData.hashCode() : 0); 064 return result; 065 } 066 067 // 068 // ChemicalStructure interface implementation 069 // 070 ///////////////////////////////////////////////////////////////////////////// 071 072 @Field(name=FIELD_KEYWORD, analyze=Analyze.YES) 073 @Column(columnDefinition="LONGTEXT") 074 public String getStructureData() 075 { 076 return structureData; 077 } 078 079 public void setStructureData(String structureData) 080 { 081 this.structureData = structureData; 082 } 083 084 @Enumerated 085 @Field(name=FIELD_KEYWORD, analyze=Analyze.YES) 086 public StructureFormatType getStructureFormat() 087 { 088 return structureFormat; 089 } 090 091 public void setStructureFormat(StructureFormatType structureFormat) 092 { 093 this.structureFormat = structureFormat; 094 } 095}