2013-05-20 1 views
-1

У меня есть сценарий:заводной: разбор файлов с различными расширениями и использовать, если/иначе

def tmn_file = ~/.*\.tmn/ 
def tmc_file = ~/.*\.tmc/ 
def newTerm = new Properties().with { props -> 
    new File(inputPath).eachFile(tmn_file) { file -> 
     file.withReader { reader -> 
      load(reader) 
      println "Read data from file $file:" 
      something read from file... 
      switch(props.ACTION) { 
       case 'NEW': 
        do something... 
        } 
      switch(props.ACTION) { 
       case 'CHANGE': 
        do something... 
        } 

этот скрипт ищет в каталоге с путем inputPath файла с расширением tmn_file, который может containt ACTION - NEW или CHANGE.

Script прекрасно работает, но я хочу сделать еще одно:

, если файл имеет расширение * .tmn (tmn_file) - начать только МЕР с НОВОЙ случае

, если файл имеет расширение * .tmc (tmc_file) - начать только ДЕЙСТВИЕ с футляром CHANGE

Как я могу реализовать решение?

+0

Это не правильное использование коммутатора заявление ... что вы пытались добавить изменения? –

+0

Немного теории об операторе switch в Groovy (и на любом другом языке): [http://mrhaki.blogspot.co.uk/2009/08/groovy-goodness-switch-statement.html](http:/ /mrhaki.blogspot.co.uk/2009/08/groovy-goodness-switch-statement.html) – lucke84

ответ

1

Вот решение:

new Properties().with { props -> 
    new File(inputPath).eachFile(FileType.FILES) { file -> 
     file.withReader { reader -> 
      load(reader) 
      println "Read data from file $file:" 

      if (file.name.endsWith('tmn') & props.ACTION == 'NEW' || file.name.endsWith('tmc') & props.ACTION == 'CHANGE') { 

// NEW mode 
       switch(props.ACTION) { 
        case 'NEW': 
         ...do someth... 
         break 

// CHANGE mode  
        case 'CHANGE': 
         println "***CHANGE mode is on***" 
         ...do someth... 
         break 
        default: 
         throw new RuntimeException("Unknown ACTION $props.ACTION") 
       } 

      } else { 
       if (file.name.endsWith('tmn') || file.name.endsWith('tmc')){ 
       println "$file dont match for action $props.ACTION" 
       } else { 
       println "$file have wrong extension "} 
      } 
    } 
    } 
} 
Смежные вопросы