import java.util.Set;

import org.geotools.referencing.CRS;
import org.geotools.referencing.CRS.AxisOrder;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.crs.ProjectedCRS;

public class EpsgAxisOrder {

    public static void main(String[] args) throws Exception {
        Set<String> codes = CRS.getSupportedCodes("EPSG");
        int total = 0;
        int flipped = 0;
        int unknown = 0;
        for (String code : codes) {
            if (code.matches("\\d+")) {
                try {
                    CoordinateReferenceSystem crs = CRS.decode("EPSG:" + code);
                    if(crs instanceof ProjectedCRS) {
                        AxisOrder order = CRS.getAxisOrder(crs);
                        if (order == AxisOrder.NORTH_EAST) {
                            flipped++;
                            System.out.println("Flipped: " + code);
                        } else if(order == AxisOrder.INAPPLICABLE) {
                            unknown++;
                            System.out.println("Unknown: " + code);
                            
                        }
                        total++;
                    }
                } catch (Exception e) {
                    // fine
                }
            }
        }
        System.out.println(total);
        System.out.println(flipped);
        System.out.println(unknown);
    }
}
