@SuppressWarnings("unchecked") protected synchronized final void update() { if (builders == null || translators == null || cacheValid) { return; } log.debug("# Refreshing shortest path cache"); knownReferenceTypes.clear(); solvers.clear(); adjacencySets.clear(); for (ExternalReferenceBuilderSPI erb : builders) { knownReferenceTypes.add(erb.getReferenceType()); } for (ExternalReferenceTranslatorSPI ert : translators) { knownReferenceTypes.add(ert.getSourceReferenceType()); knownReferenceTypes.add(ert.getTargetReferenceType()); getNeighbours(ert.getTargetReferenceType()).add(ert); } for (Class<ExternalReferenceSPI> type : knownReferenceTypes) { try { solvers.put(type, new ShortestPathSolver(type)); } catch (Throwable t) { log.error(t); if (t instanceof RuntimeException) { throw (RuntimeException) t; } } } log.debug("# Path cache refresh done"); cacheValid = true; }
@SuppressWarnings("unchecked") protected synchronized final void update() { if (builders == null || translators == null || cacheValid) { return; } log.debug("# Refreshing shortest path cache"); knownReferenceTypes.clear(); solvers.clear(); adjacencySets.clear(); for (ExternalReferenceBuilderSPI erb : builders) { knownReferenceTypes.add(erb.getReferenceType()); } for (ExternalReferenceTranslatorSPI ert : translators) { knownReferenceTypes.add(ert.getSourceReferenceType()); knownReferenceTypes.add(ert.getTargetReferenceType()); getNeighbours(ert.getTargetReferenceType()).add(ert); } for (Class<ExternalReferenceSPI> type : knownReferenceTypes) { try { solvers.put(type, new ShortestPathSolver(type)); } catch (Throwable t) { t.printStackTrace(); if (t instanceof RuntimeException) { throw (RuntimeException) t; } } } log.debug("# Path cache refresh done"); cacheValid = true; }
@SuppressWarnings("unchecked") protected synchronized final void update() { if (builders == null || translators == null || cacheValid) { return; } log.debug("# Refreshing shortest path cache"); knownReferenceTypes.clear(); solvers.clear(); adjacencySets.clear(); for (ExternalReferenceBuilderSPI erb : builders) { knownReferenceTypes.add(erb.getReferenceType()); } for (ExternalReferenceTranslatorSPI ert : translators) { knownReferenceTypes.add(ert.getSourceReferenceType()); knownReferenceTypes.add(ert.getTargetReferenceType()); getNeighbours(ert.getTargetReferenceType()).add(ert); } for (Class<ExternalReferenceSPI> type : knownReferenceTypes) { try { solvers.put(type, new ShortestPathSolver(type)); } catch (Throwable t) { t.printStackTrace(); if (t instanceof RuntimeException) { throw (RuntimeException) t; } } } log.debug("# Path cache refresh done"); cacheValid = true; }
@SuppressWarnings("unchecked") private void relaxNeighbours(Class<ExternalReferenceSPI> u) { log.trace("# relaxing node " + u.getSimpleName()); Set<Class<ExternalReferenceSPI>> alreadySeen = new HashSet<Class<ExternalReferenceSPI>>(); for (ExternalReferenceTranslatorSPI ert : getNeighbours(u)) { // all the translators that translate *to* u Class<ExternalReferenceSPI> v = ert.getSourceReferenceType(); log.trace("# translator found from from '" + v + "' : " + ert.getClass().getSimpleName()); if (alreadySeen.contains(v) == false && isSettled(v) == false) { // Avoid duplicate edges, always take the first one where // such duplicates exist alreadySeen.add(v); if (getShortestDistance(v) > getShortestDistance(u) + ert.getTranslationCost()) { setShortestDistance(v, getShortestDistance(u) + ert.getTranslationCost()); setPredecessor(v, u, ert); unsettledNodes.add(v); } } } }
@SuppressWarnings("unchecked") private void relaxNeighbours(Class<ExternalReferenceSPI> u) { log.trace("# relaxing node " + u.getSimpleName()); Set<Class<ExternalReferenceSPI>> alreadySeen = new HashSet<Class<ExternalReferenceSPI>>(); for (ExternalReferenceTranslatorSPI ert : getNeighbours(u)) { // all the translators that translate *to* u Class<ExternalReferenceSPI> v = ert.getSourceReferenceType(); log.trace("# translator found from from '" + v + "' : " + ert.getClass().getSimpleName()); if (alreadySeen.contains(v) == false && isSettled(v) == false) { // Avoid duplicate edges, always take the first one where // such duplicates exist alreadySeen.add(v); if (getShortestDistance(v) > getShortestDistance(u) + ert.getTranslationCost()) { setShortestDistance(v, getShortestDistance(u) + ert.getTranslationCost()); setPredecessor(v, u, ert); unsettledNodes.add(v); } } } }
@SuppressWarnings("unchecked") private void relaxNeighbours(Class<ExternalReferenceSPI> u) { log.trace("# relaxing node " + u.getSimpleName()); Set<Class<ExternalReferenceSPI>> alreadySeen = new HashSet<Class<ExternalReferenceSPI>>(); for (ExternalReferenceTranslatorSPI ert : getNeighbours(u)) { // all the translators that translate *to* u Class<ExternalReferenceSPI> v = ert.getSourceReferenceType(); log.trace("# translator found from from '" + v + "' : " + ert.getClass().getSimpleName()); if (alreadySeen.contains(v) == false && isSettled(v) == false) { // Avoid duplicate edges, always take the first one where // such duplicates exist alreadySeen.add(v); if (getShortestDistance(v) > getShortestDistance(u) + ert.getTranslationCost()) { setShortestDistance(v, getShortestDistance(u) + ert.getTranslationCost()); setPredecessor(v, u, ert); unsettledNodes.add(v); } } } }