- Blog Xebia France - http://blog.xebia.fr -

Java Puzzler

Posted By Nabil Gasri On Mercredi 28 décembre 2011 @ 8:42 In Java / JEE | 22 Comments

Avant de commencer l’année 2012, je vous propose un petit quiz adapté d’un cas réel.

Un programme standalone parse un fichier et insère les données parsées dans une base de données. Le même programme est exécuté dans trois régions différentes à savoir l’Europe, l’Amérique et l’Asie. Les entités persistées ont toutes un champ uid unique. La valeur de ce champ doit être sous la forme ‘E-1234′ ce qui est interprété comme l’enregistrement n° 1234 d’Europe. La base de données est la même pour les trois régions.

Lorsqu’on lance le programme dans les trois régions en parallèle, une exception est levée, laquelle et pourquoi est-elle levée ?

La solution sera détaillée sur cette même page dans les jours à venir.

N.B. certaines parties du code ont été omises pour garder la simplicité.

public class Region {
        public static final char EUROPE = 'E';
        public static final char AMERICA = 'U';
        public static final char ASIA = 'A';
}
public class UIDGenerator {
    private static Map<Character, Integer> ids = new HashMap<Character, Integer>();
        public static String generateRegionUid(char regionCode) {
            Integer lastId = 0;
            if(ids.containsKey(regionCode)) {
                lastId = ids.get(regionCode);
            }
            int nextId = lastId++;
            ids.put(regionCode, nextId);
            return new StringBuilder(regionCode).append('-').append(nextId).toString();
        }
        public static void main(String[] args) {
            String ordersFileName = args[1];
            char region = getRegion(args);
            List<Object> parsedOrders = parseOrder(ordersFileName );
            for(Order order:parsedOrders) {
                order.setUid(UIDGenerator.generateRegionUid(region));
            }
            //persist orders into dataBase.
    }
}

Article printed from Blog Xebia France: http://blog.xebia.fr

URL to article: http://blog.xebia.fr/2011/12/28/java-puzzler/