Skip to content
Snippets Groups Projects
FeatureDbXRef.xml 3.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • tjc's avatar
    tjc committed
    <?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="FeatureDbXRef"> 
     
      <typeAlias alias="FeatureDbXRef"
            type="org.gmod.schema.sequence.FeatureDbXRef"/>
            
    
    tjc's avatar
    tjc committed
      <resultMap id="map-feature-dbxref" 
    
    tjc's avatar
    tjc committed
                   class="FeatureDbXRef">
        <result property="feature.featureId"  column="feature_id"/>
        <result property="dbXRef.db.name"     column="name"/>
        <result property="dbXRef.accession"   column="accession"/>
        <result property="dbXRef.version"     column="version"/>
        <result property="dbXRef.description" column="description"/>
    
    tjc's avatar
    tjc committed
        <result property="current"            column="is_current" nullValue="false"/>
    
    tjc's avatar
    tjc committed
      </resultMap>
      
    
    tjc's avatar
    tjc committed
      <resultMap id="map-feature-of-feature-dbxref" 
                   class="Feature" groupBy="featureId">
        <result property="featureId" column="feature_id"/>
        <result property="featureDbXRefs" resultMap="FeatureDbXRef.map-feature-dbxref" />
      </resultMap>
    	
    
    tjc's avatar
    tjc committed
      <select id="getFeatureDbXRef" 
              parameterClass="org.gmod.schema.sequence.Feature"
    
    tjc's avatar
    tjc committed
              resultMap="map-feature-dbxref">
    
    tjc's avatar
    tjc committed
       	SELECT db.name, dbx.accession, dbx.version, dbx.description,
       	       dbx_f.feature_id, dbx_f.is_current
     	FROM feature_dbxref dbx_f 
            LEFT JOIN dbxref dbx ON dbx.dbxref_id=dbx_f.dbxref_id
            LEFT JOIN db ON db.db_id=dbx.db_id 
    
    tjc's avatar
    tjc committed
            <!--LEFT JOIN feature f ON dbx_f.feature_id=f.feature_id-->
    
    tjc's avatar
    tjc committed
            <isNotNull property="uniqueName"> 
    
    tjc's avatar
    tjc committed
              WHERE dbx_f.feature_id=(SELECT feature_id FROM feature where uniquename=#uniqueName#)
    
    tjc's avatar
    tjc committed
            </isNotNull>
            <isGreaterThan property="featureId" compareValue="0">
              WHERE dbx_f.feature_id=$featureId$
            </isGreaterThan>
    
    tjc's avatar
    tjc committed
            ORDER BY feature_id
    
    tjc's avatar
    tjc committed
      </select>
    	
    
    tjc's avatar
    tjc committed
      <select id="getFeatureDbXRefsByFeatureId" resultMap="map-feature-of-feature-dbxref">
       	SELECT db.name, dbx.accession, dbx.version, dbx.description,
    
    tjc's avatar
    tjc committed
       	       dbx_f.feature_id, dbx_f.is_current
    
    tjc's avatar
    tjc committed
     	FROM feature_dbxref dbx_f 
        LEFT JOIN dbxref dbx ON dbx.dbxref_id=dbx_f.dbxref_id
        LEFT JOIN db ON db.db_id=dbx.db_id 
    
    tjc's avatar
    tjc committed
        <!-- RIGHT JOIN feature f ON dbx_f.feature_id=f.feature_id -->
        WHERE dbx_f.feature_id IN <iterate open="(" close=")" conjunction=","> $[]$ </iterate>
        ORDER BY dbx_f.feature_id
    
    tjc's avatar
    tjc committed
      </select>
    
      <select id="getFeatureDbXRefsBySrcFeature" 
              parameterClass="org.gmod.schema.sequence.Feature"
    
    tjc's avatar
    tjc committed
              resultMap="map-feature-dbxref">
    
    	SELECT db.name, dbx.accession, dbx.version, dbx.description, 
    	       dbx_f.feature_id, dbx_f.is_current   
    	FROM featureloc fl 
    	RIGHT JOIN feature_dbxref dbx_f ON fl.feature_id = dbx_f.feature_id  
    	LEFT JOIN dbxref dbx ON dbx.dbxref_id=dbx_f.dbxref_id     
    	LEFT JOIN db ON db.db_id=dbx.db_id    
    	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 fl.feature_id, dbx.accession , db.name;
    
    tjc's avatar
    tjc committed
      </select>
    
    tjc's avatar
    tjc committed
      
      <!-- WRITE BACK -->
      <delete id="deleteFeatureDbXRef" parameterClass="FeatureDbXRef">
         DELETE FROM feature_dbxref 
         WHERE dbxref_id=
               (SELECT dbxref_id FROM dbxref WHERE accession=#dbXRef.accession#
                AND db_id=(SELECT db_id FROM db WHERE name=#dbXRef.db.name#))
         AND feature_id=
               (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
      </delete>
      
      <insert id="insertFeatureDbXRef" parameterClass="FeatureDbXRef">
        INSERT INTO feature_dbxref 
               (feature_id, dbxref_id, is_current)
               VALUES
               ($feature.featureId$, $dbXRef.dbXRefId$, $current$)
      </insert>
            
    </sqlMap>