Package com.apelle.acsv.annotations

Examples of com.apelle.acsv.annotations.CSVCase


        cases = new TreeMap<Integer, CaseHolder>();
        streams = new HashMap<Integer, OutputStream>();


        for (Method m : methods) {
            CSVCase csvCase = m.getAnnotation(CSVCase.class);

            if (csvCase != null) {
                if (csvCase.defaultCase()) {
                    defaultMethod = new CaseHolder(csvCase, m);
                    defaultCounter++;
                } else {
                    cases.put(csvCase.caseNum(), new CaseHolder(csvCase, m));
                }

                if (defaultCounter > 1) {
                    LOGGER.fatal("Only one Method could be used as default case");
                    throw new RuntimeException("One one Method could be used as default case");
                }

                if (csvCase.type().equals(CSVCase.OutputType.FILE)) {
                    streams.put(csvCase.caseNum(), new FileOutputStream(new File(csvCase.file())));
                }
            }

            if (m.getAnnotation(CSVBegin.class) != null) {
                beginMethod = m;
View Full Code Here


        while ((line = br.readLine()) != null) {
            String[] records = unpackLine(line);

            boolean isMatch = false;
            for (CaseHolder caseHolder : cases.values()) {
                CSVCase csvCase = caseHolder.getCsvCase();
                isMatch = false;


                Pattern p = Pattern.compile(csvCase.regexp());

                Matcher match;

                switch (csvCase.matchType()) {
                    case LINE:
                        match = p.matcher(line);
                        break;
                    case FIELD:
                        match = p.matcher(records[csvCase.fieldToMatch()]);
                        break;
                    default:
                        LOGGER.fatal("Match type not found: " + csvCase.matchType());
                        throw new RuntimeException("Match time not found: " + csvCase.matchType());
                }

                Method method = caseHolder.getMethod();
                LOGGER.info(method.getName() + ": " + csvCase.description());


                if (match.matches()) {
                    isMatch = true;
                    LOGGER.info(" -> match!");
                    LOGGER.info(" -> LINE: " + line);
                    LOGGER.trace(" -> IN: " + Arrays.toString(records));
                    LineHolder lh = new LineHolder(line, records);
                    String[] outFields = (String[]) method.invoke(processor, lh);
                    LOGGER.trace(" -> OUT: " + Arrays.toString(records));
                    String outLine = packLine(outFields) + "\n";

                    switch (csvCase.type()) {
                        case FILE:
                            streams.get(csvCase.caseNum()).write(outLine.getBytes());
                            break;
                        case SYSTEM_ERR:
                            System.err.println(outLine);
                            break;

                        case SYSTEM_OUT:
                            System.out.println(outLine);
                            break;
                        default:
                            LOGGER.fatal("File output not valid: " + csvCase.type());
                    }
                } else {
                    LOGGER.info(" -> NOT match!");
                }
            }

            if (!isMatch) {
                Method method = defaultMethod.getMethod();
                CSVCase csvCase = defaultMethod.getCsvCase();
                LOGGER.info(" -> default match!");
                LOGGER.info(" -> LINE: " + line);
                LOGGER.trace(" -> IN: " + Arrays.toString(records));
                LineHolder lh = new LineHolder(line, records);
                String[] outFields = (String[]) method.invoke(processor, lh);
                LOGGER.trace(" -> OUT: " + Arrays.toString(records));
                String outLine = packLine(outFields) + "\n";

                switch (csvCase.type()) {
                    case FILE:
                        streams.get(csvCase.caseNum()).write(outLine.getBytes());
                        break;
                    case SYSTEM_ERR:
                        System.err.println(outLine);
                        break;

                    case SYSTEM_OUT:
                        System.out.println(outLine);
                        break;
                    default:
                        LOGGER.fatal("File output not valid: " + csvCase.type());
                }
            }

        }
        br.close();
View Full Code Here

TOP

Related Classes of com.apelle.acsv.annotations.CSVCase

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.