package org.genedb.web.mvc.model.load; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.genedb.web.mvc.model.types.DtoStringArrayField; import org.genedb.web.mvc.model.types.FeaturePropType; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; public class TranscriptFeaturePropLoader { static Logger logger = Logger.getLogger(TranscriptFeaturePropLoader.class); /** * Load transcript_featureprop records * @param pep * @param template * @throws Exception */ public static void load(int transcriptId, FeatureMapper pep, SimpleJdbcTemplate template) throws Exception{ //Get the comments for polypeptide List<FeaturePropType> featurePropTypes = template.query( FeaturePropMapper.SQL, new FeaturePropMapper(), pep.getFeatureId()); for(FeaturePropType featurePropType: featurePropTypes){ Map<String, Object> args = new HashMap<String, Object>(); try{ args.put("transcript_id", transcriptId); args.put("feature_prop_id", featurePropType.getFeaturePropId()); args.put("polypeptide_id", pep.getFeatureId()); //Get the CV Name args.put("cv_name", featurePropType.getCvName()); //Get the Type Name args.put("cvterm_name", featurePropType.getCvtName()); //Get the value args.put("featureprop_value", featurePropType.getValue()); //Get publications logger.debug("Getting ...pubNames"); List<String> pubNames = template.query( PubNameMapper.FEATURE_PROP_SQL, new PubNameMapper(), featurePropType.getFeaturePropId()); args.put("pubs", new DtoStringArrayField(pubNames)); //insert logger.debug("Inserting ..."); insert(args, template); }catch(Exception e){ String message = null; for(String key : args.keySet()){ message = message + String.format("%s: %s\n", key, args.get(key)); } logger.error(message, e); throw e; } } } private static int insert(Map<String, Object> args, SimpleJdbcTemplate template){ if (logger.isInfoEnabled()){ for(String key : args.keySet()){ logger.info(String.format("%s: %s", key, args.get(key))); } } int update = template.update("insert into transcript_featureprop " + "(" + "feature_prop_id," + "polypeptide_id," + "cv_name," + "cvterm_name," + "featureprop_value," + "pubs," + "transcript_id" + ") values(" + ":feature_prop_id," + ":polypeptide_id," + ":cv_name," + ":cvterm_name," + ":featureprop_value," + ":pubs," + ":transcript_id" + ") ", args); logger.debug("trans prop loaded......"); logger.debug("\n"); return update; } }