diff --git a/uk/ac/sanger/artemis/chado/GmodDAO.java b/uk/ac/sanger/artemis/chado/GmodDAO.java index 69e733f19a2421f35313da4ad0c73c57f89b90f9..ba10e0aaa4f722c2c8b50ff37d65ab85dcfc881c 100644 --- a/uk/ac/sanger/artemis/chado/GmodDAO.java +++ b/uk/ac/sanger/artemis/chado/GmodDAO.java @@ -36,6 +36,7 @@ import org.gmod.schema.general.Db; import org.gmod.schema.general.DbXRef; import org.gmod.schema.organism.Organism; import org.gmod.schema.pub.Pub; +import org.gmod.schema.pub.PubDbXRef; import org.gmod.schema.sequence.Feature; import org.gmod.schema.sequence.FeatureCvTerm; import org.gmod.schema.sequence.FeatureCvTermDbXRef; @@ -48,7 +49,8 @@ import uk.ac.sanger.artemis.util.DatabaseDocument; public abstract class GmodDAO implements SequenceDaoI, SchemaDaoI, OrganismDaoI, CvDaoI, PubDaoI, GeneralDaoI { - + private static org.apache.log4j.Logger logger4j = + org.apache.log4j.Logger.getLogger(GmodDAO.class); public abstract List getOrganismsContainingSrcFeatures(); public abstract List getSimilarityMatchesByFeatureIds(final List featureIds); public abstract List getSimilarityMatches(final Integer srcFeatureId); @@ -472,11 +474,45 @@ public abstract class GmodDAO insertPub(pub); pubResult = getPubByUniqueName(pub); + + // add PubDbXRef + loadPubDbXRef(pubResult); } return pubResult; } + /** + * Create PubDbXRef for new Pub's and to handle links to + * links to eg, pubmed. + * @param pub + */ + private void loadPubDbXRef(final Pub pub) + { + try + { + int index = pub.getUniqueName().indexOf(':'); + if (index > -1) + { + DbXRef dbXRef = new DbXRef(); + dbXRef.setAccession(pub.getUniqueName().substring(index + 1)); + Db db = new Db(); + db.setName(pub.getUniqueName().substring(0, index)); + dbXRef.setDb(db); + dbXRef = loadDbXRef(dbXRef); + + PubDbXRef pubDbXRef = new PubDbXRef(); + pubDbXRef.setDbXRef(dbXRef); + pubDbXRef.setPub(pub); + insertPubDbXRef(pubDbXRef); + } + } + catch (Exception e) + { + logger4j.warn("GmodDAO.loadPubDbXRef() :: "+e.getMessage()); + } + } + /** * Insert a feature_cvterm and associated feature_cvtermprop's, * feature_cvterm_dbxref's and feature_cvterm_pub. @@ -547,6 +583,7 @@ public abstract class GmodDAO protected abstract void insertDbXRef(DbXRef dbXRef); protected abstract Pub getPubByUniqueName(Pub pub); protected abstract void insertPub(Pub pub); + protected abstract void insertPubDbXRef(PubDbXRef pubDbXRef); protected abstract void insertFeatureCvTerm(final FeatureCvTerm feature_cvterm); protected abstract int getCurrval(String seq_id); protected abstract void insertFeatureCvTermProp(FeatureCvTermProp featureCvTermProp); diff --git a/uk/ac/sanger/artemis/chado/IBatisDAO.java b/uk/ac/sanger/artemis/chado/IBatisDAO.java index 47ac96692a522a06b1200cde18d8a3851f979e06..e1f66ade5cdd8d8591a9b52500ca0781c96a747b 100644 --- a/uk/ac/sanger/artemis/chado/IBatisDAO.java +++ b/uk/ac/sanger/artemis/chado/IBatisDAO.java @@ -47,6 +47,7 @@ import org.gmod.schema.general.Db; import org.gmod.schema.general.DbXRef; import org.gmod.schema.organism.Organism; import org.gmod.schema.pub.Pub; +import org.gmod.schema.pub.PubDbXRef; import org.gmod.schema.analysis.AnalysisFeature; import org.gmod.schema.cv.Cv; import org.gmod.schema.cv.CvTerm; @@ -1236,6 +1237,11 @@ public class IBatisDAO extends GmodDAO sqlMap.insert("insertPub", pub); } + protected void insertPubDbXRef(PubDbXRef pubDbXRef) + { + sqlMap.insert("insertPubDbXRef", pubDbXRef); + } + public void startTransaction() throws SQLException { diff --git a/uk/ac/sanger/artemis/chado/JdbcDAO.java b/uk/ac/sanger/artemis/chado/JdbcDAO.java index 2d7c4d05edac73aaa06454ad2d92bbbeb8d72dce..a4b0b7975c5c0406c9cb3fc963bb7d360a83ed83 100644 --- a/uk/ac/sanger/artemis/chado/JdbcDAO.java +++ b/uk/ac/sanger/artemis/chado/JdbcDAO.java @@ -2285,8 +2285,9 @@ public class JdbcDAO extends GmodDAO throw new RuntimeException(sqle); } } - - - - + + protected void insertPubDbXRef(PubDbXRef pubDbXRef) + { + + } }