Маршрутизация на основе контента в camel - PullRequest
0 голосов
/ 02 августа 2020

Я пытался написать программу для выполнения маршрутизации на основе содержимого с использованием apache camel. Я хотел опросить конкретную папку и разделить файлы по разным папкам в зависимости от их типа. Я написал следующий код: -

 public void configure() throws Exception {
                Scanner sc = new Scanner(System.in);
                String path = sc.next();
                from("file:"+path+"?noop=true")
                        .to("log:?level=INFO&showBody=true&showHeaders=true")
                        .choice()
                        .when(header("CamelFileNameConsumed").endsWith(".html"))
                        .to("file:HTML files")
                        .when(header("CamelFileNameConsumed").endsWith(".txt"))
                        .to("file:Text Files")
                        .when(header("CamelFileNameConsumed").endsWith(".cpp"))
                        .to("file:Cpp Files")
                        .when(header("CamelFileNameConsumed").endsWith(".xlsx"))
                        .to("file:Excel Files")
                        .when(header("CamelFileNameConsumed").endsWith(".png"))
                        .to("file:Images")
                        .when(header("CamelFileNameConsumed").endsWith(".jpg"))
                        .to("file:Images")
                        .otherwise()
                        .to("file:other")
                        .end()
                        .to("file:all");
            }

Пока я писал, я понял, что файл изображения и видеофайл могут иметь много форматов. Я не хочу писать новую строку кода для каждого типа файла. Например: я хочу включить все типы файлов изображений, такие как jpeg, png и c, в одно условие .when (). Есть ли способ сделать это, потому что || (или) в этом случае не работает. Буду рад, если кто-нибудь также предложит какие-либо улучшения в этот код.

...