Newer
Older
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Feature">
type="org.gmod.schema.sequence.Feature"/>
<parameterMap id="schema-cvlist"
class="Feature">
<parameter property="schema" javaType="java.lang.String"/>
<parameter property="featureCvTerms" javaType="java.util.List"/>
</parameterMap>
<resultMap id="select-feature"
class="Feature" groupBy="featureId">
<result property="timeLastModified" column="timelastmodified"/>
<result property="featureId" column="id"/>
<result property="featureRelationshipsForSubjectId"
resultMap="FeatureRelationship.feature_relationship" />
<result property="featureRelationship.featureByObjectId.featureId" column="object_id"/>
<result property="featureRelationship.cvTerm.cvTermId" column="relation_type_id"/>
<result property="featureRelationship.rank" column="rank"/>
<result property="featureLoc.strand" column="strand" nullValue="0"/>
<result property="featureLoc.fmin" column="fmin" nullValue="-1"/>
<result property="featureLoc.fmax" column="fmax" nullValue="0"/>
<result property="featureLoc.phase" column="phase"/>
<result property="uniqueName" column="uniquename"/>
<result property="cvTerm.cvTermId" column="type_id"/>
<result property="featureProps" resultMap="FeatureProp.featureprop" />
<result property="featureprop.cvTerm.cvTermId" column="prop_type_id" nullValue="0"/>
<result property="featureprop.value" column="value"/>
<result property="featureprop.rank" column="prop_rank" nullValue="0"/>
<!-- mapping for feature table and lazy loading of feature_dbxref, feature_relationship,
featureprop, organism tables -->
<resultMap id="select-feature-lazy"
class="Feature">
<result property="timeLastModified" column="timelastmodified"/>
<result property="featureId" column="id"/>
<result property="uniqueName" column="uniquename"/>
<result property="name" column="name"/>
<result property="residues" column="residues" />
<result property="seqLen" column="length" nullValue="-999" />
<result property="cvTerm" column="type_id" select="selectCvterm" />
<result property="dbXRef" column="dbXRefId"
select="selectDbXRef" />
<result property="featureLocsForFeatureId" column="{id=id}"
select="getFeatureLoc" />
<result property="featureProps" column="{feature_id=id}"
select="selectFeatureProp" />
<result property="featureDbXRefs" column="{featureId=id}"
select="getFeatureDbXRef" />
<result property="featureRelationshipsForObjectId" column="{object_id=id}"
select="getFeatureRelationship" />
<result property="featureRelationshipsForSubjectId" column="{subject_id=id}"
select="getFeatureRelationship" />
<result property="featureSynonyms" column="{feature.uniqueName=uniqueName}"
select="getLazyFeatureSynonymsByUniquename" />
<result property="organism" column="{organismId=organismId}"
select="getOrganism" />
</resultMap>
<resultMap id="select-similaritymatch"
class="Feature" groupBy="featureId">
<result property="timeLastModified" column="timelastmodified"/>
<result property="featureId" column="id"/>
<result property="uniqueName" column="uniquename"/>
<result property="name" column="name"/>
<result property="seqLen" column="length" nullValue="-999" />
<result property="residues" column="residues" />
<result property="cvTerm" column="type_id" select="selectCvterm" />
<result property="featureLocsForFeatureId" resultMap="FeatureLoc.select-location" />
<result property="featureProps" column="{feature_id=id}"
select="selectFeatureProp" />
<result property="analysisFeatures" column="{feature_id=id}"
select="selectAnalysisFeatures" />
</resultMap>
<resultMap id="select-feature-with-residues-result"
class="Feature">
<result property="name" column="name"/>
<result property="uniqueName" column="uniquename"/>
<result property="featureId" column="feature_id"/>
<result property="cvTerm.cvTermId" column="type_id"/>
</resultMap>
<select id="getFeature" parameterClass="Feature"
fr.rank,
fr.value AS relation_value,
fp.type_id AS prop_type_id,
fp.rank AS prop_rank,
FROM feature f
LEFT JOIN feature_relationship fr ON fr.subject_id = f.feature_id
LEFT JOIN featureprop fp ON fp.feature_id = f.feature_id
LEFT JOIN featureloc fl ON f.feature_id = fl.feature_id
<isGreaterThan property="featureLoc.featureBySrcFeatureId.featureId" compareValue="0">
srcfeature_id=$featureLoc.featureBySrcFeatureId.featureId$
<isNotNull property="uniqueName">
uniquename LIKE #uniqueName#
tjc
committed
</dynamic>
<select id="getLazyFeature" resultMap ="select-feature-lazy"
SELECT
timelastmodified,
f.feature_id AS id,
uniquename,
<dynamic>
<isNotNull property="cvTerm.name">
LEFT JOIN cvterm ON f.type_id=cvterm.cvterm_id
</isNotNull>
</dynamic>
<isGreaterThan property="featureId" compareValue="0">
f.feature_id=$featureId$ AND
<isNotNull property="featureSynonyms">
<iterate property="featureSynonyms" conjunction="OR" open="(" close=") OR">
f.feature_id=#featureSynonyms[].feature.featureId#
( uniquename LIKE #uniqueName# ESCAPE '/' OR f.name LIKE #uniqueName# ESCAPE '/') AND
<isGreaterThan property="cvTerm.cvTermId" compareValue="0">
<isNotNull property="cvTerm.name">
cvterm.name=#cvTerm.name# AND
</isNotNull>
<select id="getLazyFeatureById" resultMap ="select-feature-lazy" >
SELECT
timelastmodified,
f.feature_id AS id,
uniquename,
organism_id AS organismId,
f.name,
f.type_id,
seqlen AS length,
residues
FROM feature f
WHERE f.feature_id=$featureId$
</select>
<!-- Returns matches for all features on a given srcfeature -->
<select id="getLazySimilarityMatches" parameterClass="java.lang.Integer"
resultMap="select-similaritymatch">
SELECT
timelastmodified,
f.feature_id AS id,
f.uniquename,
f.type_id,
f.name,
f.seqlen AS length,
f.residues,
srcfeature_id, fmin, fmax, strand, phase, residue_info, locgroup, rank
FROM feature f
LEFT JOIN featureloc fl ON f.feature_id=fl.feature_id
WHERE f.feature_id IN
( SELECT feature_id FROM featureloc WHERE srcfeature_id IN
( SELECT feature_id FROM featureloc WHERE srcfeature_id=$value$) )
ORDER BY f.feature_id
</select>
<!-- Returns matches for a list of feature_id's -->
<select id="getLazySimilarityMatchesByFeatureIds" parameterClass="java.util.List"
resultMap="select-similaritymatch">
SELECT
timelastmodified,
f.feature_id AS id,
f.uniquename,
f.type_id,
f.name,
f.seqlen AS length,
f.residues,
srcfeature_id, fmin, fmax, strand, phase, residue_info, locgroup, rank
FROM feature f
LEFT JOIN featureloc fl ON f.feature_id=fl.feature_id
WHERE f.feature_id IN
( SELECT feature_id FROM featureloc WHERE srcfeature_id IN
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
)
ORDER BY f.feature_id
</select>
SELECT schema_name FROM information_schema.schemata WHERE schema_name=schema_owner
<select id="getResidueType" parameterClass="java.lang.String"
resultClass="java.lang.Long">
<select id="getResidueFeatures" parameterClass="java.util.Map"
resultMap="select-feature-with-residues-result">
SELECT
name,
FROM feature WHERE residues notnull AND residues NOT LIKE ''
<iterate prepend="AND" property="cvTermIds" conjunction="OR" open="(" close=")">
type_id=#cvTermIds[]#
<select id="currval" resultClass="java.lang.Integer"
parameterClass="java.lang.String">
<!-- WRITE BACK METHODS -->
<!-- UPDATE -->
<update id="updateFeature"
parameterClass="Feature">
UPDATE feature
SET uniquename=#uniqueName#
<isNotNull property="cvTerm.cvTermId">
, type_id=$cvTerm.cvTermId$
<isNotNull property="timeLastModified">
, timelastmodified=#timeLastModified#
parameterClass="uk.ac.sanger.artemis.chado.FeatureForUpdatingResidues">
UPDATE feature SET
residues=substring(residues from 1 for $startBase$) ||
<dynamic>
<isNotNull property="newSubSequence">
#newSubSequence# ||
</isNotNull>
</dynamic>
seqlen=$seqLen$
WHERE feature_id=$featureId$
( feature_id, organism_id, name, uniquename, type_id
<isGreaterThan property="seqLen" compareValue="0"> , seqlen </isGreaterThan>
<isNotNull property="dbXRef.dbXRefId"> , dbxref_id </isNotNull> )
$cvTerm.cvTermId$
<isGreaterThan property="seqLen" compareValue="0"> , $seqLen$ </isGreaterThan>
<isNotNull property="dbXRef.dbXRefId"> , $dbXRef.dbXRefId$ </isNotNull> )
<!--
<update id="updateRegionSequence"
parameterClass="Feature">
UPDATE feature SET
residues=substring(residues from 1 for $featureLoc.fmin$) ||
#residues,jdbcType=text# ||
substring(residues from $featureLoc.fmin$ for
(seqLen + $seqLen$)),
seqlen=(seqLen+$seqLen$)
WHERE feature_id=$featureLoc.featureBySrcFeatureId.featureId$
</update>
-->
<delete id="deleteFeatureById"
parameterClass="Feature">
DELETE FROM feature
WHERE feature_id=$featureId$
</delete>