/** * Make sure that an interaction has a valid IMEX id in its xref. * * @param interaction an interaction to check on. * @return a collection of validator messages. */ public Collection<ValidatorMessage> check( InteractionEvidence interaction ) throws ValidatorException { // Check xRef return PublicationRuleUtils.checkImexInteractionId(interaction.getImexId(), interaction, this); }
@Override protected boolean hasIdentifiers(I object) { return super.hasIdentifiers(object) || object.getImexId() != null; } }
public String getImexId() { return getWrappedInteraction().getImexId(); }
@Override protected void writeOtherIdentifiers(I object) throws IOException { if (object.getImexId() != null){ Collection<Xref> imexIds = XrefUtils.collectAllXrefsHavingDatabaseAndId(object.getXrefs(), Xref.IMEX_MI, Xref.IMEX, object.getImexId()); if (!imexIds.isEmpty()){ MIJsonUtils.writeSeparator(getWriter()); getIdentifierWriter().write(imexIds.iterator().next()); } } }
@Transactional(value = "jamiTransactionManager", propagation = Propagation.REQUIRED) public List<String> collectExistingInteractionImexIdsForPublication(IntactPublication intactPublication){ InteractionEvidenceService intService = ApplicationContextProvider.getBean("interactionEvidenceService"); // fetch all interaction evidences Map<String, Object> parameters = new HashMap<String, Object>(1); parameters.put("publicationAc", intactPublication.getAc()); parameters.put("imex", Xref.IMEX_MI); parameters.put("imexPrimary", Xref.IMEX_PRIMARY_MI); // collect all interaction evidences attached to this publication and having an IMEx id Iterator<InteractionEvidence> interactionsIterator = intService.iterateAll( "select count(distinct i.ac) from IntactInteractionEvidence i join i.dbXrefs as x join i.dbExperiments as e join e.publication as p " + "where p.ac = :publicationAc " + "and x.database.identifier = :imex " + "and x.qualifier.identifier = :imexPrimary ", "select distinct i from IntactInteractionEvidence i join i.dbXrefs as x join i.dbExperiments as e join e.publication as p " + "where p.ac = :publicationAc " + "and x.database.identifier = :imex " + "and x.qualifier.identifier = :imexPrimary ", parameters); List<String> imexIds = new ArrayList<String>(); while(interactionsIterator.hasNext()){ InteractionEvidence interaction = interactionsIterator.next(); imexIds.add(interaction.getImexId()); } return imexIds; }
@Override protected void writeAllIdentifiers(I object) throws IOException { super.writeAllIdentifiers(object); if (object.getImexId() != null && object.getIdentifiers().isEmpty()){ Collection<Xref> imexIds = XrefUtils.collectAllXrefsHavingDatabaseAndId(object.getXrefs(), Xref.IMEX_MI, Xref.IMEX, object.getImexId()); if (!imexIds.isEmpty()){ MIJsonUtils.writeSeparator(getWriter()); getIdentifierWriter().write(imexIds.iterator().next()); } } }
/** * * @param ref * @param interaction * @return an array of String : first the database, then the interactionId */ public static String[] extractInteractionId(Xref ref, Interaction interaction){ String interactorId = null; String db = null; if (ref != null){ interactorId = JSONValue.escape(ref.getId()); db = JSONValue.escape(ref.getDatabase().getShortName()); } else if (interaction instanceof InteractionEvidence && ((InteractionEvidence)interaction).getImexId() != null){ interactorId = ((InteractionEvidence)interaction).getImexId(); db = "imex"; } else{ interactorId = Integer.toString(interaction.hashCode()); db = "generated"; } return new String[]{db, interactorId}; }
/** * * @param ref * @param interaction * @param number a suffix * @return an array of String : first the database, then the interactionId, then a number to append */ public static String[] extractBinaryInteractionId(Xref ref, BinaryInteraction interaction, Integer number){ String interactorId = null; String db = null; if (ref != null){ interactorId = JSONValue.escape(ref.getId())+(number != null ? "_"+number:""); db = JSONValue.escape(ref.getDatabase().getShortName()); } else if (interaction instanceof InteractionEvidence && ((InteractionEvidence)interaction).getImexId() != null){ interactorId = ((InteractionEvidence)interaction).getImexId()+(number != null ? "_"+number:""); db = "imex"; } else{ interactorId = Integer.toString(interaction.hashCode())+(number != null ? "_"+number:""); db = "generated"; } return new String[]{db, interactorId}; } }