diff --git a/artemis_sqlmap/Feature.xml b/artemis_sqlmap/Feature.xml index 8d2d04acfcfd7072c449d9737489c8b8316c7ae0..e010f6fd14b02a41467dfc33c539a0c6a3a3437d 100644 --- a/artemis_sqlmap/Feature.xml +++ b/artemis_sqlmap/Feature.xml @@ -12,7 +12,11 @@ <cacheModel id="feature-cache" type ="LRU" readOnly="true"> <flushInterval hours="24"/> - <property name="cache-size" value="4" /> + <flushOnExecute statement="insertFeature"/> + <flushOnExecute statement="updateFeature"/> + <flushOnExecute statement="deleteFeature"/> + <flushOnExecute statement="deleteFeatureById"/> + <property name="cache-size" value="10" /> </cacheModel> <parameterMap id="schema-cvlist" @@ -110,18 +114,21 @@ <result property="featureLoc.strand" column="strand" nullValue="0" /> <result property="featureLoc.phase" column="phase" nullValue="0" /> </resultMap> - - <resultMap id="map-similaritymatch" class="Feature" + + + <resultMap id="map-similaritymatch-lazy" class="Feature" groupBy="featureId" extends="map-basicfeature"> <result property="cvTerm.cvTermId" column="type_id" /> - <result property="featureLocsForFeatureId" resultMap="FeatureLoc.map-location" /> + <result property="featureLocsForFeatureId" column="{id=id}" + select="getFeatureLoc" /> <result property="featureProps" column="{feature_id=id}" select="getFeaturePropByFeatureId" /> <result property="featureDbXRefs" column="{featureId=id}" select="getFeatureDbXRef" /> <result property="dbXRef" column="dbXRefId" select="getDbXRefByDbXRefId" /> - <result property="analysisFeatures" resultMap="AnalysisFeature.map-analysisfeature" /> + <result property="analysisFeatures" column="{feature_id=id}" + select="getAnalysisFeaturesByFeatureId" /> </resultMap> @@ -224,34 +231,34 @@ LEFT JOIN cvterm ON f.type_id=cvterm.cvterm_id </isNotNull> </dynamic> - WHERE - <dynamic> + + <dynamic prepend="WHERE"> <isGreaterThan property="featureId" compareValue="0"> - f.feature_id=$featureId$ AND + f.feature_id=$featureId$ </isGreaterThan> - <isNotNull property="uniqueName"> + <isNotNull property="uniqueName" prepend="AND"> <isNotNull property="featureSynonyms"> <iterate property="featureSynonyms" conjunction="OR" open="(" close=") OR"> f.feature_id=#featureSynonyms[].feature.featureId# </iterate> </isNotNull> - ( uniquename LIKE #uniqueName# ESCAPE '/' OR f.name LIKE #uniqueName# ESCAPE '/') AND + ( uniquename=#uniqueName# ) </isNotNull> - <isGreaterThan property="cvTerm.cvTermId" compareValue="0"> - f.type_id=$cvTerm.cvTermId$ AND + <isGreaterThan property="cvTerm.cvTermId" compareValue="0" prepend="AND"> + f.type_id=$cvTerm.cvTermId$ </isGreaterThan> - <isNotNull property="cvTerm.name"> - cvterm.name=#cvTerm.name# AND + <isNotNull property="cvTerm.name" prepend="AND"> + cvterm.name=#cvTerm.name# </isNotNull> </dynamic> - f.feature_id > 0 </select> - <select id="getLazyFeatureNoResiduesById" resultMap ="map-feature-lazy-no-residues" > + <select id="getLazyFeatureNoResiduesById" resultMap ="map-feature-lazy-no-residues" + cacheModel="feature-cache"> SELECT timelastmodified, f.feature_id AS id, @@ -343,20 +350,17 @@ f.dbxref_id AS dbXRefId, f.name AS feature_name, f.seqlen, - f.residues, - srcfeature_id, fmin, fmax, strand, phase, residue_info, locgroup, fl.rank, - rawscore, normscore, significance, identity, a.analysis_id, - a.name, description, program, programversion, algorithm, sourcename, sourceversion,sourceuri, timeexecuted - FROM feature f - LEFT JOIN featureloc fl ON f.feature_id=fl.feature_id + f.residues + FROM feature f + <!--LEFT JOIN featureloc fl ON f.feature_id=fl.feature_id LEFT JOIN analysisfeature af ON f.feature_id=af.feature_id - LEFT JOIN analysis a ON af.analysis_id=a.analysis_id + LEFT JOIN analysis a ON af.analysis_id=a.analysis_id--> WHERE f.feature_id IN </sql> <!-- Returns matches for all features on a given srcfeature --> <select id="getLazySimilarityMatches" parameterClass="java.lang.Integer" - resultMap="map-similaritymatch"> + resultMap="map-similaritymatch-lazy"> <include refid="selectSimilarityMatch"/> ( SELECT feature_id FROM featureloc WHERE srcfeature_id IN ( SELECT feature_id FROM featureloc WHERE srcfeature_id=$value$) ) @@ -365,7 +369,7 @@ <!-- Returns matches for a list of feature_id's --> <select id="getLazySimilarityMatchesByFeatureIds" parameterClass="java.util.List" - resultMap="map-similaritymatch"> + resultMap="map-similaritymatch-lazy"> <include refid="selectSimilarityMatch"/> ( SELECT feature_id FROM featureloc WHERE srcfeature_id IN <iterate open="(" close=")" conjunction=","> $[]$ </iterate>