poniedziałek, 2 listopada 2015

Groovy

Czy groovy jest faktycznie taki boski
Na moje zdanie po kodowaniu ileś tam czasu w javie to nie czuję że tak jest.
Gdy napisałem te parę linijek nie czuję tej zajebistości a raczej mętlik. Zamiast wsparcia IDE to trzeba się domyślać jaką funkcję lub zajebistość można użyć. Pewnie przy napisaniu 1000 skryptu to już wchodzi w nawyk

Dziwactwo straszne dziwactwo

Wynalazki które szybko napisać ale cholera wie co robią

Extraktowanie zip-a aby sprawdzić zawartość pliku
W tym przypadku wykorzystane do sprawdzenia zmiennych w META-INF/context.xml

W moim wypadku w META-INF/context.xml są zapisane zmienne
<Context path="/ap-kolce-adm" ...
 <Resource...
  username="${ap-kolce-adm.auth.db.user}" ...
  password="${ap-kolce-adm.auth.db.pass}"


Aby je wylistować można wykorzystać skrypt poniżej
Wywołanie przy założenie że groovy jest w path a ContextParser.groovy oraz ap-mzwi-adm.war są w bieżącym katalogu:
groovy ContextParser.groovy ap-mzwi-adm.war
Zawartość ContextParser.groovy
def file = args[0]
println "file:" + file

def zipFile = new java.util.zip.ZipFile(new File(file))

zipFile.entries().findAll { !it.directory }.each {
    def f = String.valueOf(it)

    if (f.startsWith("META-INF/context.xml")) {
        def str = zipFile.getInputStream(it).text
        def set1 = new TreeSet()
        try {
            str.eachLine { line ->
                def matcher = (line =~/\$\{([^\}]+)\}/)
                while (matcher.find()) {
                    def key = matcher.group(1)
                    set1.add(key)
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        set1.each  { i1 -> println "$i1" }
    }
}

Wypluty rezultat
ap-mzwi-adm.amqbroker.url
ap-mzwi-adm.db.ip
ap-mzwi-adm.db.pass
ap-mzwi-adm.db.user
ap-mzwi-adm.esb.http.url
ap-mzwi-adm.ws-broker-server-sikch-auth.url
as400.address_base
as400.login_base
as400.pass_base
mgr.service.url