public Class<? extends ExternalReferenceSPI> getSourceType() { if (translators.isEmpty() == false) { return translators.get(0).getSourceReferenceType(); } else if (this.sourceReference != null) { return this.sourceReference.getClass(); } else { return null; } }
public Class<? extends ExternalReferenceSPI> getSourceType() { if (translators.isEmpty() == false) { return translators.get(0).getSourceReferenceType(); } else if (this.sourceReference != null) { return this.sourceReference.getClass(); } else { return null; } }
public Class<? extends ExternalReferenceSPI> getSourceType() { if (translators.isEmpty() == false) { return translators.get(0).getSourceReferenceType(); } else if (this.sourceReference != null) { return this.sourceReference.getClass(); } else { return null; } }
/** * Inject a list containing all known implementations of ExternalReferenceTranslatorSPI. * * @throws IllegalStateException * if this has already been set, the instance registries should only be set on bean * construction. */ public synchronized void setTranslators(List<ExternalReferenceTranslatorSPI<?, ?>> translators) { if (this.translators == null) { this.translators = translators; log.debug("* Translators injected :"); int counter = 0; for (ExternalReferenceTranslatorSPI<?, ?> translator : translators) { log.debug("* " + (++counter) + ") " + translator.getClass().getSimpleName() + ", translates " + translator.getSourceReferenceType().getSimpleName() + " to " + translator.getTargetReferenceType().getSimpleName()); } cacheValid = false; } else { log.error("Translator registry already injected, invalid operation"); throw new IllegalStateException("Can't inject the translator registry multiple times."); } }
+ translator.getClass().getSimpleName() + ", translates " + translator.getSourceReferenceType().getSimpleName() + " to " + translator.getTargetReferenceType().getSimpleName());
/** * Return a human readable representation of this translation path, used by the logging * methods to print trace information. */ @SuppressWarnings("unchecked") @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append(getPathCost() + " "); if (sourceReference != null && initialBuilder != null) { sb.append(sourceReference.toString() + "->bytes(" + sourceReference.getResolutionCost() + ")->"); String builderClassName = initialBuilder.getClass().getSimpleName(); String builtType = initialBuilder.getReferenceType().getSimpleName(); sb.append("builder:" + builderClassName + "(" + initialBuilder.getConstructionCost() + "):<" + builtType + ">"); } else if (translators.isEmpty() == false) { sb.append("<" + translators.get(0).getSourceReferenceType().getSimpleName() + ">"); } for (ExternalReferenceTranslatorSPI translator : translators) { sb.append("-" + translator.getClass().getSimpleName() + "(" + translator.getTranslationCost() + ")" + "-"); sb.append("<" + translator.getTargetReferenceType().getSimpleName() + ">"); } return sb.toString(); }
} else if (translators.isEmpty() == false) { sb.append("<" + translators.get(0).getSourceReferenceType() .getSimpleName() + ">");
+ translator.getClass().getSimpleName() + ", translates " + translator.getSourceReferenceType().getSimpleName() + " to " + translator.getTargetReferenceType().getSimpleName());
} else if (translators.isEmpty() == false) { sb.append("<" + translators.get(0).getSourceReferenceType() .getSimpleName() + ">");
@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; }
translators.get(0).getSourceReferenceType())) { currentReference = er; break;
translators.get(0).getSourceReferenceType())) { currentReference = er; break;
if (er.getClass().equals(translators.get(0).getSourceReferenceType())) { currentReference = er; break;
@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); } } } }
if (translationStep.getSourceReferenceType() .equals(er.getClass())) { overlapsExistingType = 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); } } } }
if (translationStep.getSourceReferenceType() .equals(er.getClass())) { overlapsExistingType = true;