Skip to content
Snippets Groups Projects
FeatureProp.xml 3.75 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="FeatureProp">
    
         <typeAlias alias="FeatureProp"
            type="org.gmod.schema.sequence.FeatureProp"/>
    
    tjc's avatar
    tjc committed
         <resultMap id="map-featureprop-with-cvterm-lazy" 
    
                    class="FeatureProp">
            <result property="value" column="value" />
            <result property="rank" column="rank" />
            <result property="cvTerm" column="type_id" select="getCvtermByCvTermId" />
         </resultMap>
    	 
    
    tjc's avatar
    tjc committed
         <resultMap id="map-featureprop-with-cvterm" 
    
    tjc's avatar
    tjc committed
                    class="FeatureProp">
            <result property="value" column="value" />
            <result property="rank" column="rank" />
    
    tjc's avatar
    tjc committed
    		<result property="cvTerm" resultMap="CvTerm.lazy-cvterm" />
    
    tjc's avatar
    tjc committed
         </resultMap>
         
    
    tjc's avatar
    tjc committed
        <resultMap id="map-featureprop" 
    
    tjc's avatar
    tjc committed
                   class="FeatureProp" groupBy="featurePropId">
    		<result property="featurePropId" column="featureprop_id" />
    
    tjc's avatar
    tjc committed
            <result property="value" column="value" />
            <result property="rank"  column="prop_rank" />
            <result property="cvTerm.cvTermId" column="prop_type_id" />
        </resultMap>
    
    tjc's avatar
    tjc committed
    	
    	<resultMap id="map-feature-with-featureprops" 
                    class="org.gmod.schema.sequence.Feature" groupBy="featureId">
            <result property="featureId" column="feature_id" />
            <result property="featureProps" resultMap="FeatureProp.map-featureprop-with-cvterm" />
        </resultMap>
    
    tjc's avatar
    tjc committed
         
       <!-- select featureprops e.g. for lazy loading -->
    
    tjc's avatar
    tjc committed
         <select id="getFeaturePropByFeatureIdLazy" resultMap="map-featureprop-with-cvterm-lazy">
    
    tjc's avatar
    tjc committed
           SELECT type_id, value, rank 
           FROM featureprop
           WHERE feature_id=#feature_id#
         </select>
         
    
    tjc's avatar
    tjc committed
    	<select id="getFeaturePropByFeatureId" resultMap="map-featureprop-with-cvterm">
    
           SELECT value, rank, cvterm.* 
           FROM featureprop
    	   LEFY JOIN cvterm ON type_id=cvterm_id
           WHERE feature_id=#feature_id#
         </select>
    	
    
    tjc's avatar
    tjc committed
    	 <select id="getFeaturePropByFeatureIds" resultMap="map-feature-with-featureprops">
           SELECT f.feature_id, value, rank, cvterm.* 
           FROM feature f
    	   LEFT JOIN featureprop fp ON f.feature_id=fp.feature_id
           LEFT JOIN cvterm ON fp.type_id=cvterm_id
    	   WHERE f.feature_id IN <iterate open="(" close=")" conjunction=","> $[]$ </iterate>
         </select>
    	
    
    tjc's avatar
    tjc committed
        <update id="updateFeatureProp"
                parameterClass="FeatureProp">
          UPDATE featureprop
          SET value=#value#   
          WHERE rank=$rank$ AND type_id=$cvTerm.cvTermId$ AND 
                feature_id=(SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
        </update>
        
        <!--  INSERT  -->
        <insert id="insertFeatureProp"
                parameterClass="FeatureProp">
          INSERT INTO featureprop
          ( feature_id, type_id, value, rank )
          VALUES
    
    tjc's avatar
    tjc committed
          ( 
            <isGreaterThan property="feature.featureId" compareValue="0">
              $feature.featureId$,
            </isGreaterThan>
            <isLessEqual property="feature.featureId" compareValue="0">
              (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#),
            </isLessEqual>
    
    tjc's avatar
    tjc committed
            $cvTerm.cvTermId$, #value#, $rank$ )
        </insert>
        
        <!--  DELETE  -->
       <delete id="deleteFeatureProp"
               parameterClass="FeatureProp">
          DELETE FROM featureprop
          WHERE
            <isNotNull property="feature.uniqueName">
              feature_id=
                (SELECT feature_id FROM feature WHERE uniquename=#feature.uniqueName#)
              AND
            </isNotNull>
            <isGreaterThan property="rank" compareValue="-1">
               rank=$rank$ AND
            </isGreaterThan>
            <isNotNull property="value">
              value=#value# AND
            </isNotNull>
            type_id=$cvTerm.cvTermId$
       </delete>
        
    </sqlMap>