teichmann@6891: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@6891: * Software engineering by Intevation GmbH teichmann@6891: * teichmann@6891: * This file is Free Software under the GNU AGPL (>=v3) teichmann@6891: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@6891: * documentation coming with Dive4Elements River for details. teichmann@6891: */ teichmann@6891: teichmann@6891: package org.dive4elements.river.artifacts.model.fixings; teichmann@6891: teichmann@6891: import java.util.IdentityHashMap; teichmann@6891: teichmann@6891: import org.apache.log4j.Logger; teichmann@6891: teichmann@6891: import gnu.trove.TIntIntHashMap; teichmann@6891: teichmann@6891: public class RankRemapper { teichmann@6891: teichmann@6891: private static Logger log = Logger.getLogger(RankRemapper.class); teichmann@6891: teichmann@6891: private TIntIntHashMap index2rank; teichmann@6891: private IdentityHashMap visited; teichmann@6891: teichmann@6891: public RankRemapper() { teichmann@6891: index2rank = new TIntIntHashMap(); teichmann@6891: visited = new IdentityHashMap(); teichmann@6891: } teichmann@6891: teichmann@6891: public void toMap(int index) { teichmann@6891: index2rank.put(index, index2rank.size()); teichmann@6891: } teichmann@6891: teichmann@6891: public void remap(I qwi) { teichmann@6891: if (!visited.containsKey(qwi)) { teichmann@6891: int idx = qwi.index; teichmann@6891: if (index2rank.containsKey(idx)) { teichmann@6891: qwi.index = index2rank.get(idx); teichmann@6891: } else if (log.isDebugEnabled()) { teichmann@6891: log.debug("Cannot remap " + idx); teichmann@6891: } teichmann@6891: visited.put(qwi, true); teichmann@6891: } teichmann@6891: } teichmann@6891: }