1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<?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="FeaturePub">
<typeAlias alias="FeaturePub"
type="org.gmod.schema.sequence.FeaturePub"/>
<resultMap id="map-featurepubs"
class="FeaturePub" >
<result property="feature.featureId" column="id"/>
<result property="pub.pubId" column="pub_id"/>
<result property="pub.title" column="title" />
<result property="pub.volumeTitle" column="volumetitle" />
<result property="pub.volume" column="volume" />
<result property="pub.seriesName" column="series_name" />
<result property="pub.issue" column="issue" />
<result property="pub.pyear" column="pyear"/>
<result property="pub.pages" column="pages"/>
<result property="pub.miniRef" column="miniref"/>
<result property="pub.uniqueName" column="uniquename" />
<result property="pub.obsolete" column="is_obsolete" />
<result property="pub.publisher" column="publisher" />
<result property="pub.pubPlace" column="pubplace" />
<result property="pub.cvTerm.cvTermId" column="type_id" />
</resultMap>
<select id="getFeaturePubsBySrcFeature" parameterClass="org.gmod.schema.sequence.Feature"
resultMap="map-featurepubs">
SELECT
f.feature_id AS id, pub.*
FROM feature f
INNER JOIN feature_pub fpub ON fpub.feature_id = f.feature_id
LEFT JOIN pub ON fpub.pub_id=pub.pub_id
WHERE f.feature_id IN
(SELECT feature_id FROM featureloc fl WHERE srcfeature_id=$featureId$
<isGreaterThan property="featureLoc.fmin" compareValue="0" prepend="AND">
<![CDATA[ fl.fmin > $featureLoc.fmin$ AND fl.fmax < $featureLoc.fmax$ ]]>
</isGreaterThan>)
ORDER BY f.uniquename
</select>
<select id="getFeaturePubsByFeature" parameterClass="org.gmod.schema.sequence.Feature"
resultMap="map-featurepubs">
SELECT
f.feature_id AS id, pub.*
FROM feature f
INNER JOIN feature_pub fpub ON fpub.feature_id = f.feature_id
LEFT JOIN pub ON fpub.pub_id=pub.pub_id
<isGreaterThan property="featureId" compareValue="0">
WHERE f.feature_id = $featureId$
</isGreaterThan>
<isEqual property="featureId" compareValue="0">
<isNotNull property="uniqueName">
WHERE f.uniquename=#uniqueName#
</isNotNull>
</isEqual>
</select>
<insert id="insertFeaturePub" parameterClass="FeaturePub">
INSERT INTO feature_pub
(feature_id, pub_id)
VALUES
( (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#),
$pub.pubId$)
</insert>
<delete id="deleteFeaturePub" parameterClass="FeaturePub">
DELETE FROM feature_pub WHERE
feature_pub_id=(
SELECT feature_pub_id FROM feature_pub WHERE
feature_id=(SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#) AND
pub_id =(SELECT pub_id FROM pub WHERE uniquename=#pub.uniqueName#) )
</delete>
</sqlMap>
|