view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/RankRemapper.java @ 7081:3c4efd4b2c19 generator-refactoring

Simplyfy / unify "invert axis" logic - DataUtil now can check if two datasets are in the same direction - In the case of WKM data a no means that the Water flows Right to Left - If the water flows from right to left do inversion of diagrams
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 20 Sep 2013 17:36:11 +0200
parents 8efef772a488
children 0a5239a1e46e
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.artifacts.model.fixings;

import java.util.IdentityHashMap;

import org.apache.log4j.Logger;

import gnu.trove.TIntIntHashMap;

public class RankRemapper {

    private static Logger log = Logger.getLogger(RankRemapper.class);

    private TIntIntHashMap                index2rank;
    private IdentityHashMap<QWI, Boolean> visited;

    public RankRemapper() {
        index2rank = new TIntIntHashMap();
        visited    = new IdentityHashMap<QWI, Boolean>();
    }

    public void toMap(int index) {
        index2rank.put(index, index2rank.size());
    }

    public <I extends QWI> void remap(I qwi) {
        if (!visited.containsKey(qwi)) {
            int idx = qwi.index;
            if (index2rank.containsKey(idx)) {
                qwi.index = index2rank.get(idx);
            } else if (log.isDebugEnabled()) {
                log.debug("Cannot remap " + idx);
            }
            visited.put(qwi, true);
        }
    }
}

http://dive4elements.wald.intevation.org